no se mucho de sripts y encontre este me preguntaba si se podia modificar este para usarse en el essentials
#==============================================================================#
#*#*#*#*#*#*#*#*#*#*#=*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#=#
# TIEMPO VIRTUAL # #Este script fue creado partiendo del script original *
# VERSION 1.0 # *"Windows_PlayTime" del rpg maker xp y modificado para #
# by AMROTZ # #mis necesidades.Eres libre de usarlo y/o modificarlo *
#*#*#*#*#*#*#*#*#*#*#=*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#=#
#
#INSTRUCCIONES:Pegar este script en una nueva pagina encima de main.
#
#
#===============================================================================
#
#--Creamos la clase encargada de la fecha y la hora
#
# ■ Fecha
#------------------------------------------------------------------------------
# Esta clase controla el tiempo virtual
#===============================================================================
#------Damos nombre a la clase--------------------------------------------------
class Fecha
#--Creamos los metodos de clase-----------------------------------------------
#Aqui haremos que las variables indicadas se puedan leer y escribir, solo
#leer o solo escribir desde otras clases, el attr_"X" es el encargado de
#otorgarlo esos permisos, dependiendo de lo que sea "X" las variables se
#podran leer, escribir, o ambas cosas desde otras clases.
#Estas variables solo se podran LEER desde otras clases.
attr_reader :mes
attr_reader :dia
attr_reader :hora
attr_reader :horas
attr_reader :minuto
attr_reader :segundo
attr_reader :diasemana
attr_reader :nombremes
attr_reader :numdiasemana
attr_reader :img_tiempo
attr_reader :img_tiempo_rect
attr_accessor :numestacion
attr_accessor :estacion
attr_reader :hora_amanece
attr_reader :hora_anochece
attr_reader :hora_dia
attr_reader :hora_noche
attr_reader :amaneciendo
attr_reader :de_dia
attr_reader :anocheciendo
attr_reader :de_noche
#Estas variables se podran LEER y MODIFICAR desde otras clases, asi que
#cuidado cuando realiceis eventos en el juego con estas variables, podeis
#sumar y restar para aumentar o disminuir la fecha o la hora, pero nunca
#les otorgueis un valor o el script daria un erro y dejaria de funcionar
attr_accessor :año
attr_accessor :totalmes
attr_accessor :totaldia
attr_accessor :totalhor
attr_accessor :totalmin
attr_accessor :system_color
attr_accessor :normal_color
attr_accessor :scolor
attr_accessor :ncolor
attr_accessor :n_min
attr_accessor :n_hor
attr_accessor :n_dia
attr_accessor :n_mes
attr_accessor :n_año
attr_accessor :ir_min
attr_accessor :ir_hor
attr_accessor :ir_dia
attr_accessor :ir_mes
attr_accessor :ir_año
#Para referirse a estas variables en el juego en algun evento, ya sea para
#aumentar o disminuir su valor, debeis de poner delante $fecha. y la variable.
#por ejemplo para aumentar 4 horas seria.
# $fecha.totalhor =+ 4
#Para realizar acciones dependiendo de la hora o la fecha utilizar las otras
#variables, que son las que se muestran en la ventana, estas variables son
#las totales, por ejemplo, si pasaron 4 meses virtuales habran pasado
#124 dias, ya que las variables totales aumentan sin parar no como las otras.
#--Metodos creados------------------------------------------------------------
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
def initialize
#VARIABLES PARA AUMENTAR EL TIEMPO
#variable que permite aumentar los minutos,cambiar 50 por el minuto inicial
@n_min = 50
#variable que permite aumentar las horas,cambiar 7 por la hora inicial
@n_hor = 6
#variable que permite aumentar los dias,cambiar 18 por el dia inicial - 1
@n_dia = 19
#variable que permite aumentar los meses,cambiar 5 por el mes inicial - 1
@n_mes = 5
#variable que permite aumentar los años,cambiar 2000 por el año inicial
@n_año = 2000
#VARIABLES PARA IR A UN "TIEMPO" CONCRETO
#variable para ir a un minuto concreto
@ir_min = 0
#variable para ir a una hora concreta
@ir_hor = 0
#variable para ir a un dia concreto
@ir_dia = 0
#variable para ir a un mes concreto
@ir_mes = 0
#variable para ir a un año concreto
@ir_año = 0
# Variables que permiten pausar o continuar el tiempo
@pause = false
@pause_menu = false
# Variables que van almacenando el tiempo total.
# El tiempo pausado es el tiempo que se guarda de el tiempo total que se ha
#pausado,para asi al ponerle play solamente reste el tiempo pausado al total
#que se ha jugado.
# tiempo_temp es el tiempo que transcurre cada vez que se le pone pause
#hasta que se le vuelve a poner play y se incializa.
@totalsec = 0
@tiempo_pausado = 0
@tiempo_temp = 0
# Es el indice de velocidad del juego. Al dejar a 1 avanza 1 segundo real
#por un segundo del juego.
# 60 = 1 segundo real es un minuto en el juego.
@speed = 60
#---Definimos los tonos de pantalla.Podeis configurarlos a vuestro gusto.
@tono_amanece = Tone.new(20, 20, -20, 20)
@tono_dia = Tone.new(30, 30, 30, 0)
@tono_anochece = Tone.new(30, -50, -50, 50)
@tono_noche = Tone.new(-100, -100, -100, -100)
@tiempo_tono = 20 #tiempo que tarda en cambiar el tono
#Aqui el tono para interiores
@tono_int = Tone.new(-10, -10, -10, 0)
#aqui el tono extra, en principio lo pondre igual que el de noche,
#pero podeis modificarlo a vuestro antojo.
@tono_extra = Tone.new(-100, -100, -100, -100)
#---Creamos variables para interiores.
#== @int == es una variable utilizada para que al salir de un mapa
#interior a otro exterior el tono de pantalla en vez de cambiar
#progresivamente cambiara de golpe.
@int = 0
#== @interior == es un array donde pondremos las ids de los mapas donde no
#querramos que el tono de pantalla cambie, como por ejemplo en los
#interiores, solo poner las id`s separadas por comas asi:
#@interior = [2, 5, 6, 8]
@interior = [2, 4]
#== @sonido_int == es igual que el array anterior solo que este es para
#que no suenen los sonidos de amanecer y anochecer en los mapas que
#elijamos.
@sonido_int = [2]
#--TONO DE PANTALLA EXTRA--
#este es un tono de pantalla para mapas que no cambiaran su tono aunque
#pasen las horas y se haga de dia o de noche, siempre tendra el mismo tono
#el funcionamiento es igual que los dos arrays anteriores, entre los
#corchetes "[]" poner las IDs de los mapas que querrais que tengan este
#tono siempre, ponerlos separados por comas, igual que en los 2 anteriores
@map_extra = [3]
#---Definimos variables de los dias de semana y asignamos los nombre-----
#el array "@diasemana" comienza a contar desde 0, por lo que
# @diasemana[0] dara como resultado Lunes.si es 1 dara Martes, etc.
#si kereis utilizar el dia de semana en algun evento podeis hacerlo de
#dos formas, para especificar el dia hacer esto.
#FORMA1 : $fecha.diasemana["aqui el numero correspondiente al dia"]
#como he dicho antes, empieza desde el 0 = Lunes y va asta el 6 = Domingo
#FORMA 2 :$fecha.numdiasemana == "numero"
#igual que antes, empieza desde el 0 = Lunes asta 6 = Domingo
#NOTA: NO SE PUEDE NI ASIGNAR UN DIA CONCRETO NI HACER NINGUNA OPERACION
#CON ESTE ARRAY, PARA AUMENTAR DIAS UTILIZAR LA VARIABLE @TOTALDIA.
#un ejemplo de utilizar los dias de semana es, por ejemplo, para hacer
#que algunas tiendas esten cerradas un dia concreto, es simple, basta
#con utilizar un condicional.
#EJEMPLO: Para que una tienda este cerrada en domingo.
# if $fecha.diasemana == $fecha.diasemana[6]
# @tienda = "valor para "cerrada""
# else
# @tienda = "valor para "abierta" "
# si kereis usar mejor el numero de dia de semana simplemente
#cambiar $fecha.diasemana ==$fecha.diasemana[6] por
#$fecha.numdiasemana == 6
#la variable @tienda es orientativa, poner la que utiliceis para ello.
@diasemana = ["Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"]
#--Definimos variables de los nombres de los meses-----------------------
#aqui pasa lo mismo, por eso le ponemos como primer valor 0, ya que
#la variable @mes almacena el numero de mes y nunca pasa de 12, pero
#tampoco llega a 0, utilizaremos la variable @mes para definir el valor
#de @nombremes, y como @mes nunca llega a 0, el primer valor de @nombremes
#sera un valor nulo, nunca sera mostrado.
@nombremes = ["0", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]
#creamos dos variables para almacenar 2 colores diferentes dependiendo de la
#etapa del dia en que estemoas, lo utilizo para las ventanas.
@scolor = Color.new(255, 255, 255, 255)
@ncolor = Color.new(255, 255, 255, 255)
refresh
end #end del initialize
#Creamos las operaciones para pausar el tiempo virtual cuando sea necesario.
#Para pausar el tiempo desde un evento comun poner:
#$Fecha.pause
#Para volver a reanudar el tiempo poner
#$Fecha.play
def pause
if @pause == false
@tiempo_temp = Graphics.frame_count
@pause = true
end
end
def play
if @pause == true
@tiempo_pausado += (Graphics.frame_count - @tiempo_temp)
@tiempo_temp = 0
@pause = false
end
end
#Aqui definimos los metodos para pausar el juego al entrar al menu, y reanudar
#el tiempo al salir del menu en el caso de que no estuviera parado antes.
#Si no quereis parar el tiempo al entrar al menu comentar las lineas que esten
#entre el def y el ultimo end de cada operacion.No comentar ni el def ni el
#ultimo end de cada operacion u os dara error.
def pause_menu
if @pause == false and @pause_menu == false
@tiempo_temp = Graphics.frame_count
@pause_menu = true
end
end
def play_menu
if @pause == false and @pause_menu == true
@tiempo_pausado += (Graphics.frame_count - @tiempo_temp)
@tiempo_temp = 0
end
@pause_menu = false
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
#------Definimos variables totales--------------------------------------------
#Si queremos avanzar en el tiempo en el juego deberemos utilizar estas
#variables.
#$fecha.totalmin =+ "los minutos que quieras avanzar"
#igual con las demas,nunca le asigneis un valor,solo sumar o restar
#si le asignais un valor dejara de correr el tiempo de esa variable.
#Por ejemplo, si haceis
#$fecha.totalhor = 5
#la hora se quedara permanentemente en cinco, y no sumara cada 60 minutos
if @pause == false and @pause_menu == false
@totalsec = ((Graphics.frame_count- @tiempo_pausado) * @speed) / Graphics.frame_rate
else
end
#Aqui especifico los valores de las variebles totales, es decir, estas
#variables estaran sumando indefinidamente mientras el tiempo estea activo,
#un ejemplo: @totalmin al llegar a 60 seguira a 61, estas variables no son
#las encargadas de mostrar la fecha, solo de controlarla.
@totalmin = @totalsec / 60 + @n_min
@totalhor = @totalmin / 60 + @n_hor
@totaldia = @totalhor / 24 + @n_dia
@totalmes = @totaldia / 31 + @n_mes
@año = totalmes / 12 + @n_año
#----Definimos variables de tiempo---------------------------------------
#Estas variables dependen totalmente de las variables totales de arriba,
#aqui indicamos cual es el numero maximo a mostrar.EJEMPLO
#@hora = @totalhor % 24
#el % es el resto, o sea,
#@hora es igual al resto de @totalhor dividido entre 24.
#basicamente hara que cuando la hora llegue a 23, la hora siguiente sera 0
#NOTA: el mes .el dia y @horas no marcaran 0 por el condicional que se
#los impide
#ATENCION:la variable totaldiasem tiene que ser igual a @totaldia
#menos los dias que le habeis asignado de inicio, y despues sumarle
#el numero de dia de semana en el que querais empezar, empezando
#por 0 que es Lunes asta 6 que es Domingo.
#por ejemplo, digamos que habeis definido el dia inicial en 20, como dije
#arriba, se le debera poner un numero menos por que aqui abajo sumara 1,
#por lo tanto el dia que debereis poner en @n_dia sera 19, pues
#entonces totaldiasem tendra que estar asi:
#
# totaldiasem = (@totaldia - 19) + 1
#si no le sumais ningun numero al final, el valor inicial de totaldiasem
#sera 0, por lo tanto sera Lunes
totaldiasem = (@totaldia -20) + 3
@mes = @totalmes % 12 +1
@dia = @totaldia % 31 +1
@horas = @totalhor % 12
if @horas == 0
@horas = 12
end
@hora = @totalhor % 24
@minuto = @totalmin % 60
@segundos = @totalsec % 60
@numdiasemana = totaldiasem % 7
#-----------------------------------------------------------------------------
#==Inicio del sistema de estaciones
#-----------------------------------------------------------------------------
#==ESTACIONES DEL AÑO=======================================================
#Para cambiar la hora de inicio de cada parte del dia simplemente cambiar el
#valor de las variables hora_"parte del dia" por las que correspondan.
#Para cambiar el numero de estaciones o los dias en que empiezan, cambiar
#los condicionales poniendo mas "elsif" en caso de querer poner mas
#estaciones y cambiar las variables @mes y @dia por las que correspondan
#Estaciones del año===========================
if (@mes == 3 and @dia >= 20) or @mes == 4 or @mes == 5 or (@mes == 6 and @dia < 20)
@numestacion = 1
elsif (@mes == 6 and @dia >=20) or @mes == 7 or @mes == 8 or (@mes == 9 and @dia < 20)
@numestacion = 2
elsif (@mes == 9 and @dia >= 20) or @mes == 10 or @mes == 11 or (@mes == 12 and @dia < 20)
@numestacion = 3
elsif (@mes == 12 and @dia >= 20) or @mes == 1 or @mes == 2 or (@mes == 3 and @dia < 20)
@numestacion = 4
end
#Definimos los nombres de cada estacion y establecemos las horas en que
#empieza cada parte del dia.
#donde solo hay un numero es la hora en que empiza esa parte del dia.
#donde hay muchos numeros son las horas que pertenecen a esa parte del dia.
case @numestacion
when 1
#Horario primavera
@estacion = "Primavera"
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
when 2
#horario verano
@estacion = "Verano"
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
when 3
#Horario otoño
@estacion = "Otoño"
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
when 4
#horario invierno
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
end #end del case @numestacion
#============================================================================
end #end del refresh
#=============================================================================
#==AMANECER-ANOCHECER
#=============================================================================
def amanecer_anochecer
#Para poner mas acciones que se realicen al amanecer o al anochecer
#ponerlas en los condicionales de abajo.
#Si son acciones que solo se realizan una vez en cada parte del dia
#(como el sonido del gallo por la mañana) ponerlas dentro del condicional
#del sonido de amanecer anochecer o la parte del dia que sea.
#Si son acciones que siempre esten presentes durante esa parte del dia
#ponerlas en el condicional de las partes del dia.
#=====================INFORMACION========================================#
#Si quereis que dichas acciones se realicen en TODOS los mapas, #
# entonces ponerlo en donde pone: #
# "#en TODOS los mapas" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas donde NO se #
#escucha el sonido entonces ponerlo en donde pone: #
# "#si en el mapa SI se escucha el sonido" # #
# #
#Si quereis que las acciones se realicen SOLO en los mapas donde SI se #
#escucha el sonido entonces ponerlo en donde pone: #
# "#si en el mapa NO se escucha el sonido" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que habeis #
#definido como interiores, entonces ponerlo en donde pone: #
# "#en los mapas INTERIORES" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que no habeis #
#definido como interiores, entonces ponerlo donde pone: #
# "#en los mapas EXTERIORES" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que habeis #
#definido como "extra", entonces ponerlo en donde pone: #
# "#en los mapas EXTRA" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que no habeis #
#definido como extra, entonces ponerlo donde pone: #
# "#en los mapas que NO son extra" #
# #
#Si os fijais en los codigos para cada mapa podreis poner acciones que #
#se realicen en mapas especificos en otras partes del script. #
#========================================================================#
#Comando para las partes del dia
if @amaneciendo.include?(@hora) #si esta amaneciendo
@tono = @tono_amanece
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
elsif @de_dia.include?(@hora) #si es de dia
@tono = @tono_dia
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
elsif @anocheciendo.include?(@hora) #si esta anocheciendo
@tono = @tono_anochece
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
elsif @de_noche.include?(@hora) #si es de noche
@tono = @tono_noche
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
end #end del condicional de las partes del dia
#Comandos para las horas en que cambie la parte del dia.
#
#Todas las acciones que querais realizar en la hora que comienza una
#parte del dia, debeis de ponerlo siempre antes de
#"variable de la parte del dia" = 1 -- EJEMPLO: @amanecer = 1
#
#SI QUEREIS QUE UNA ACCION ESTEA SIEMPRE QUE ESA PARTE DEL DIA ESTE ACTIVA
#PONERLA ARRIBA, EL COMANDO PARA LAS PARTES DEL DIA, AQUI ABAJO SOLO VAN
#LAS ACCIONES QUE SE REALICEN SOLO EN LA HORA CONCRETA EN LA QUE EMPIEZA
#UNA PARTE DEL DIA Y NO DURANTE TODA LA PARTE DEL DIA.
#Cuando empieza a amanecer
if @hora != @hora_amanece
@amanecer = 0
end
if @hora == @hora_amanece and @amanecer == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@amanecer = 1
else
Audio.se_play("Audio/SE/gallo.mp3")
#si en el mapa SI se escucha el sonido
@amanecer = 1
end
end
#Cuando empieza el dia
if @hora != @hora_dia
@sdia = 0
end
if @hora == @hora_dia and @sdia == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@sdia = 1
else
#si en el mapa SI se escucha el sonido
@sdia = 1
end
end
#Cuando empieza a anochecer
if @hora != @hora_anochece
@anochecer = 0
end
if @hora == @hora_anochece and @anochecer == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@anochecer = 1
else
Audio.se_play("Audio/SE/lechuza.mp3")
#si en el mapa SI se escucha el sonido
@anochecer = 1
end
end
#Cuando empieza la noche
if @hora != @hora_noche
@snoche = 0
end
if @hora == @hora_noche and @snoche == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@snoche = 1
else
#si en el mapa SI se escucha el sonido
@snoche = 1
end
end
end #end del amanecer_anochecer
#============================================================================
def cambio_tono
#====================================================================
#Cambio de pantalla====================================
#Aqui definimos los cambios de tono en diferentes mapas.
#====================================================================
if @interior.include?($game_map.map_id)
$game_screen.start_tone_change(@tono_int, 0)
@int = 1
elsif @map_extra.include?($game_map.map_id)
$game_screen.start_tone_change(@tono_extra, 0)
@int = 1
elsif @int == 1
$game_screen.start_tone_change(@tono, 0)
@int = 0
elsif @hora == @hora_amanece or @hora != @hora_amanece
$game_screen.start_tone_change(@tono, @tiempo_tono)
end
end #end del cambio_tono
#======================================================================
#Para sumar un tiempo determinado, poner en llamar script.
#$fecha.n_"unidad de tiempo" += "el tiempo que quereis avanzar"
#Estas son las "unidad de tiempo" existentes.
#"min" avanzar minutos ($fecha.n_min) EJ: $fecha.n_min += 5 (suma 5 minutos)
#"hor" avanzar horas ($fecha.n_hor) EJ: $fecha.n_hor += 5 (suma 5 horas)
#"dia" avanzar dias ($fecha.n_dia) EJ: $fecha.n_dia += 5 (suma 5 dias)
#"mes" avanzar meses ($fecha.n_mes) EJ: $fecha.n_mes += 5 (suma 5 meses)
#"año" avanzar años ($fecha.n_año) EJ: $fecha.n_año += 5 (suma 5 años)
#
#Para ir a un determinado tiempo virtual, solamente definir el tiempo
#y despues poner $fecha.ir_a_tiempo , todo ello en llamar script.
#EJEMPLO:iremos al dia 5 de febrero de 2056 a las 12:05
#
#$fecha.ir_min = 5
#$fecha.ir_hor = 12
#$fecha.ir_dia = 5
#$fecha.ir_mes = 2
#$fecha.ir_año = 2056
#$fecha.ir_a_tiempo
#
#Si solo quereis definir alguna de las unidades de tiempo y no todas,
#entonces debereis de poner a las que no querais definir la variable de su
#unidad de tiempo correspondiene.EJEMPLO:Iremos solo al dia 5 sin especificar
#nada mas
#
#$fecha.ir_min = $fecha.minuto
#$fecha.ir_hor = $fecha.hora
#$fecha.ir_dia = 5 (para no definir el dia es $fecha.dia)
#$fecha.ir_mes = $fecha.mes
#$fecha.ir_año = $fecha.año
#
#Si el tiempo que definis es inferior al actual, no retrocedera.EJEMPLO:
#estamos a dia 5 de febrero en el juego, y hay un evento para ir al dia 2.
#como no retrocede el pj ira al 2 de marzo.
#si el evento esta definido para ir al 2 de febrero, entonces avanzara un año
#igual con los minutos y las horas, si el minuto es inferior al actual
#avanzara una hora, y si la hora es inferior a la actual sumara un dia.si el
#mes es inferior al actual sumara un año.
#con los años no pasa asi, los años si es posible retroceder.
def ir_a_tiempo
if @ir_min < @minuto and @ir_hor == 0
@n_min += (60 - @minuto + @ir_min)
else
@n_min += (@ir_min - @minuto)
end
if @ir_hor < @hora and @ir_dia == 0
@n_hor += (24 - @hora + @ir_hor)
else
@n_hor += (@ir_hor- @hora)
end
if @ir_dia < @dia and @ir_mes == 0
@n_dia += (31 - @dia + @ir_dia)
else
@n_dia += (@ir_dia - @dia)
end
if @ir_mes < @mes and @ir_año == 0
@n_mes += (12 - @mes + @ir_mes)
else
@n_mes += (@ir_mes - @mes)
end
@n_año += (@ir_año - @año)
$fecha.ir_min = 0
$fecha.ir_hor = 0
$fecha.ir_dia = 0
$fecha.ir_mes = 0
$fecha.ir_año = 0
end
#-------------------------------------------------------------
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
amanecer_anochecer
cambio_tono
refresh
end #end del update
end #end de la class Fecha
#==============================================================================#
#=====================================================#========================#
#--Creamos la ventana donde se mostrara la fecha(MENU)#========================#
#=====================================================#========================#
# ■ Window_Fecha
#------------------------------------------------------------------------------
# Esta ventana muestra el tiempo virtual en el menu del juego
#==============================================================================
#------Damos nombre a la clase y definimos su herencia----------------------
class Window_Fecha < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
#-----Definimos el tamaño de la ventana y otros aspectos-------------------
def initialize
super(0, 0, 160, 120)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
self.contents.clear
#-----Definimos y creamos texto a imprimir en ventana--------------------
#Si queremos que algo no salga suprimimos su linea
#para modificar la posicion dentro de la ventana
#o su tamaño es asi:
#...draw_text(posicionX, posicionY, ANCHO, ALTO, lo que se imprime, ALINEACION)
#La alineacion es 0=a la izkierda, 1=centrado y 2=a la derecha
#La primera linea es la del icono del sol o la luna,los dos primeros
#numeros (que por defecto son 0, 0 ) son la posicion en X y posicion en Y.
#el ultimo numero de este no es la alineacion, si no su opacidad.
#Aqui se modifican los colores del texto en ventana y el windowskin
#scolor es el color del texto
#ncolor es el color de los numeros
@linea1_rect = Rect.new(0, 0, 70, 20)
@linea2_rect = Rect.new(0, 0, 121, 16)
@linea3_rect = Rect.new(0, 0, 89, 16)
@linea4_rect = Rect.new(0, 0, 80, 43)
@img_linea = RPG::Cache.picture("linea.png")
if $fecha.amaneciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("amaneceskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_dia.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("diaskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.anocheciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("anocheceskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_noche.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("nocheskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 155, 255, 255)
end
self.contents.blt(25, 0, @img_linea, @linea1_rect, 70)
self.contents.blt(0, 25, @img_linea, @linea2_rect, 70)
self.contents.blt(0, 45, @img_linea, @linea3_rect, 70)
self.contents.blt(20, 70, @img_linea, @linea4_rect, 70)
# self.contents.blt(0, 0, @img_tiempo, @img_tiempo_rect, 250)
self.contents.font.color = scolor
self.contents.draw_text(25, 0, 70, 20, $fecha.diasemana[$fecha.numdiasemana], 1)
self.contents.font.color = scolor
self.contents.draw_text(0, 25, 39, 16, "Fecha:", 0)
textf = sprintf("%02d/%02d/%02d", $fecha.dia, $fecha.mes, $fecha.año)
self.contents.font.color = ncolor
self.contents.draw_text(42, 25, 82, 16, textf, 2)
self.contents.font.color = scolor
self.contents.draw_text(0, 45, 39, 16, "Hora:", 0)
texth = sprintf("%02d:%02d", $fecha.horas, $fecha.minuto)
self.contents.font.color = ncolor
self.contents.draw_text(30, 45, 50, 16, texth, 2)
self.contents.font.color = scolor
self.contents.draw_text(20, 60, 80, 40, $fecha.nombremes[$fecha.mes], 1)
#esto esta comentado por que no saldra en pantalla, si queres ponerlo debereis
#modificar las posiciones y tamaños del resto de objetos o sustiruir
#a un objeto poniendo su misma posiscion, despues descomentarlo.
#self.contents.font.color = system_color
#self.contents.draw_text(0, 60, 80, 40, @fecha.estacion, 0)
end
#-------------------------------------------------------------
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
super
$fecha.update
refresh
end
end
#==============================================================================#
#=====================================================#========================#
#--Creamos la ventana donde se mostrara la fecha(MAPA)#========================#
#=====================================================#========================#
# ■ Window_Fecha_mini
#------------------------------------------------------------------------------
# Esta ventana muestra el tiempo virtual en el mapa
#==============================================================================
#------Damos nombre a la clase y definimos su herencia----------------------
class Window_Fecha_mini < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
#-----Definimos el tamaño de la ventana y otros aspectos-------------------
def initialize
super(0, 0, 220, 73)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
self.opacity = 200
refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
self.contents.clear
#-----Definimos y creamos texto a imprimir en ventana--------------------
#NOTA:Hay lineas comentadas aqui abajo, las comente para poder hacer la
#ventana de fecha/hora del mapa mas pequeña,si quieres incluir esas
#partes en la ventana del mapa,ademas de descomentarlas tendras que
#modificar el tamaño de la ventana y las posiciones de los contenidos.
#Aqui se modifican los colores del texto en ventana y el windowskin
#scolor es el color del texto
#ncolor es el color de los numeros
@linea1_rect = Rect.new(28, 0, 185, 20)
@linea2_rect = Rect.new(28, 20, 130, 20)
@img_linea = RPG::Cache.picture("linea.png")
if $fecha.amaneciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("amaneceskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_dia.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("diaskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.anocheciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("anocheceskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_noche.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("nocheskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 155, 255, 255)
end
self.contents.blt(28, 0, @img_linea, @linea1_rect, 70)
self.contents.blt(28, 20, @img_linea, @linea2_rect, 70)
self.contents.font.color = scolor
self.contents.draw_text(28, 0, 65, 20, $fecha.diasemana[$fecha.numdiasemana], 0)
#self.contents.font.color = system_color
#self.contents.draw_text(0, 25, 39, 16, "Fecha:", 0)
textf = sprintf(":%02d/%02d/%02d", $fecha.dia, $fecha.mes, $fecha.año)
self.contents.font.color = ncolor
self.contents.draw_text(88, 0, 85, 16, textf, 0)
#self.contents.font.color = system_color
#self.contents.draw_text(0, 45, 39, 16, "Hora:", 0)
texth = sprintf("-%02d:%02d", $fecha.horas, $fecha.minuto)
self.contents.font.color = ncolor
self.contents.draw_text(158, 0, 35, 16, texth, 0)
self.contents.font.color = scolor
self.contents.draw_text(28, 20, 65, 20, $fecha.estacion, 0)
self.contents.draw_text(106, 20, 65, 20, $fecha.nombremes[$fecha.mes], 1)
#Al pulsar la tecla F5 se activa/desactiva la ventana
if Input.trigger? (Input::F5)
self.visible = self.visible ? false : true
end
#===========================================================================
end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
super
$fecha.update
refresh
end
end
#Creamos alias para las clases por defecto.
#Alias es un nombre para un metodo de otra clase para incluir operaciones en
#dicha clase sin sustituirla, solamente incluye las operaciones que pongamos
#debajo de la ultima operacion que haya en la clase en dicho modulo.
#(Le llamo modulos a las operaciones que empiezan por "def"")
#Este alias iniciara el tiempo virtual al inicio del juego.
class Scene_Title
alias midnightmoon_fecha_main main
def main
$fecha = Fecha.new
midnightmoon_fecha_main
end
alias midnightmoon_fecha_command command_new_game
def command_new_game
$fecha = Fecha.new
midnightmoon_fecha_command
end
end
#Este alias guardara la informacion del tiempo virtual al guardar partida.
class Scene_Save
alias midnightmoon_fecha_write_data write_save_data
def write_save_data(file)
midnightmoon_fecha_write_data(file)
Marshal.dump($fecha, file)
end
end
#Este alias cargara la informacion del tiempo virtual al cargar partida.
class Scene_Load
alias midnightmoon_fecha_read_data read_save_data
def read_save_data(file)
midnightmoon_fecha_read_data(file)
$fecha = Marshal.load(file)
end
end
#Este alias para Scene_map pondra la ventana del tiempo virtual en el mapa
class Scene_Map
alias window_fecha_main main
def main
@window_fecha = Window_Fecha_mini.new
@window_fecha.x = 412
@window_fecha.y = 0
window_fecha_main
if $scene != self
@window_fecha.dispose
end
end
alias window_fecha_update update
def update
$fecha.update
@window_fecha.update
window_fecha_update
end
end
#Este alias para Scene_menu pondra la ventana de tiempo virtual en el menu
class Scene_Menu
alias fecha_menu_main main
def main
$fecha.pause_menu
@window_fecha = Window_Fecha.new
@window_fecha.x = 0
@window_fecha.y = 296
fecha_menu_main
if $scene != self
@window_fecha.dispose
$fecha.play_menu
end
end
alias fecha_menu_update update
def update
@window_fecha.update
fecha_menu_update
end
end
#Este alias hara que la ventana Window_Steps sea invisible,para asi poner la
#ventana del tiempo virtual en su lugar.
class Window_Steps
alias fecha_steps_initialize initialize
def initialize
fecha_steps_initialize
self.visible = false
end
end
#Creamos una copia de Window_PlayTime modificandola un poco para que la ventana
#de la fecha/hora entre en el menu, al crear la clase completa esta sustituira
#a la Window_PlayTime original.
class Window_PlayTime < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 72)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 24, "Tiempo Jugado")
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 20, 120, 24, text, 2)
end
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#Fin de la creacion de la copia de Window_PlayTime.
#*#*#*#*#*#*#*#*#*#*#=*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#=#
# TIEMPO VIRTUAL # #Este script fue creado partiendo del script original *
# VERSION 1.0 # *"Windows_PlayTime" del rpg maker xp y modificado para #
# by AMROTZ # #mis necesidades.Eres libre de usarlo y/o modificarlo *
#*#*#*#*#*#*#*#*#*#*#=*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#=#
#
#INSTRUCCIONES:Pegar este script en una nueva pagina encima de main.
#
#
#===============================================================================
#
#--Creamos la clase encargada de la fecha y la hora
#
# ■ Fecha
#------------------------------------------------------------------------------
# Esta clase controla el tiempo virtual
#===============================================================================
#------Damos nombre a la clase--------------------------------------------------
class Fecha
#--Creamos los metodos de clase-----------------------------------------------
#Aqui haremos que las variables indicadas se puedan leer y escribir, solo
#leer o solo escribir desde otras clases, el attr_"X" es el encargado de
#otorgarlo esos permisos, dependiendo de lo que sea "X" las variables se
#podran leer, escribir, o ambas cosas desde otras clases.
#Estas variables solo se podran LEER desde otras clases.
attr_reader :mes
attr_reader :dia
attr_reader :hora
attr_reader :horas
attr_reader :minuto
attr_reader :segundo
attr_reader :diasemana
attr_reader :nombremes
attr_reader :numdiasemana
attr_reader :img_tiempo
attr_reader :img_tiempo_rect
attr_accessor :numestacion
attr_accessor :estacion
attr_reader :hora_amanece
attr_reader :hora_anochece
attr_reader :hora_dia
attr_reader :hora_noche
attr_reader :amaneciendo
attr_reader :de_dia
attr_reader :anocheciendo
attr_reader :de_noche
#Estas variables se podran LEER y MODIFICAR desde otras clases, asi que
#cuidado cuando realiceis eventos en el juego con estas variables, podeis
#sumar y restar para aumentar o disminuir la fecha o la hora, pero nunca
#les otorgueis un valor o el script daria un erro y dejaria de funcionar
attr_accessor :año
attr_accessor :totalmes
attr_accessor :totaldia
attr_accessor :totalhor
attr_accessor :totalmin
attr_accessor :system_color
attr_accessor :normal_color
attr_accessor :scolor
attr_accessor :ncolor
attr_accessor :n_min
attr_accessor :n_hor
attr_accessor :n_dia
attr_accessor :n_mes
attr_accessor :n_año
attr_accessor :ir_min
attr_accessor :ir_hor
attr_accessor :ir_dia
attr_accessor :ir_mes
attr_accessor :ir_año
#Para referirse a estas variables en el juego en algun evento, ya sea para
#aumentar o disminuir su valor, debeis de poner delante $fecha. y la variable.
#por ejemplo para aumentar 4 horas seria.
# $fecha.totalhor =+ 4
#Para realizar acciones dependiendo de la hora o la fecha utilizar las otras
#variables, que son las que se muestran en la ventana, estas variables son
#las totales, por ejemplo, si pasaron 4 meses virtuales habran pasado
#124 dias, ya que las variables totales aumentan sin parar no como las otras.
#--Metodos creados------------------------------------------------------------
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
def initialize
#VARIABLES PARA AUMENTAR EL TIEMPO
#variable que permite aumentar los minutos,cambiar 50 por el minuto inicial
@n_min = 50
#variable que permite aumentar las horas,cambiar 7 por la hora inicial
@n_hor = 6
#variable que permite aumentar los dias,cambiar 18 por el dia inicial - 1
@n_dia = 19
#variable que permite aumentar los meses,cambiar 5 por el mes inicial - 1
@n_mes = 5
#variable que permite aumentar los años,cambiar 2000 por el año inicial
@n_año = 2000
#VARIABLES PARA IR A UN "TIEMPO" CONCRETO
#variable para ir a un minuto concreto
@ir_min = 0
#variable para ir a una hora concreta
@ir_hor = 0
#variable para ir a un dia concreto
@ir_dia = 0
#variable para ir a un mes concreto
@ir_mes = 0
#variable para ir a un año concreto
@ir_año = 0
# Variables que permiten pausar o continuar el tiempo
@pause = false
@pause_menu = false
# Variables que van almacenando el tiempo total.
# El tiempo pausado es el tiempo que se guarda de el tiempo total que se ha
#pausado,para asi al ponerle play solamente reste el tiempo pausado al total
#que se ha jugado.
# tiempo_temp es el tiempo que transcurre cada vez que se le pone pause
#hasta que se le vuelve a poner play y se incializa.
@totalsec = 0
@tiempo_pausado = 0
@tiempo_temp = 0
# Es el indice de velocidad del juego. Al dejar a 1 avanza 1 segundo real
#por un segundo del juego.
# 60 = 1 segundo real es un minuto en el juego.
@speed = 60
#---Definimos los tonos de pantalla.Podeis configurarlos a vuestro gusto.
@tono_amanece = Tone.new(20, 20, -20, 20)
@tono_dia = Tone.new(30, 30, 30, 0)
@tono_anochece = Tone.new(30, -50, -50, 50)
@tono_noche = Tone.new(-100, -100, -100, -100)
@tiempo_tono = 20 #tiempo que tarda en cambiar el tono
#Aqui el tono para interiores
@tono_int = Tone.new(-10, -10, -10, 0)
#aqui el tono extra, en principio lo pondre igual que el de noche,
#pero podeis modificarlo a vuestro antojo.
@tono_extra = Tone.new(-100, -100, -100, -100)
#---Creamos variables para interiores.
#== @int == es una variable utilizada para que al salir de un mapa
#interior a otro exterior el tono de pantalla en vez de cambiar
#progresivamente cambiara de golpe.
@int = 0
#== @interior == es un array donde pondremos las ids de los mapas donde no
#querramos que el tono de pantalla cambie, como por ejemplo en los
#interiores, solo poner las id`s separadas por comas asi:
#@interior = [2, 5, 6, 8]
@interior = [2, 4]
#== @sonido_int == es igual que el array anterior solo que este es para
#que no suenen los sonidos de amanecer y anochecer en los mapas que
#elijamos.
@sonido_int = [2]
#--TONO DE PANTALLA EXTRA--
#este es un tono de pantalla para mapas que no cambiaran su tono aunque
#pasen las horas y se haga de dia o de noche, siempre tendra el mismo tono
#el funcionamiento es igual que los dos arrays anteriores, entre los
#corchetes "[]" poner las IDs de los mapas que querrais que tengan este
#tono siempre, ponerlos separados por comas, igual que en los 2 anteriores
@map_extra = [3]
#---Definimos variables de los dias de semana y asignamos los nombre-----
#el array "@diasemana" comienza a contar desde 0, por lo que
# @diasemana[0] dara como resultado Lunes.si es 1 dara Martes, etc.
#si kereis utilizar el dia de semana en algun evento podeis hacerlo de
#dos formas, para especificar el dia hacer esto.
#FORMA1 : $fecha.diasemana["aqui el numero correspondiente al dia"]
#como he dicho antes, empieza desde el 0 = Lunes y va asta el 6 = Domingo
#FORMA 2 :$fecha.numdiasemana == "numero"
#igual que antes, empieza desde el 0 = Lunes asta 6 = Domingo
#NOTA: NO SE PUEDE NI ASIGNAR UN DIA CONCRETO NI HACER NINGUNA OPERACION
#CON ESTE ARRAY, PARA AUMENTAR DIAS UTILIZAR LA VARIABLE @TOTALDIA.
#un ejemplo de utilizar los dias de semana es, por ejemplo, para hacer
#que algunas tiendas esten cerradas un dia concreto, es simple, basta
#con utilizar un condicional.
#EJEMPLO: Para que una tienda este cerrada en domingo.
# if $fecha.diasemana == $fecha.diasemana[6]
# @tienda = "valor para "cerrada""
# else
# @tienda = "valor para "abierta" "
# si kereis usar mejor el numero de dia de semana simplemente
#cambiar $fecha.diasemana ==$fecha.diasemana[6] por
#$fecha.numdiasemana == 6
#la variable @tienda es orientativa, poner la que utiliceis para ello.
@diasemana = ["Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"]
#--Definimos variables de los nombres de los meses-----------------------
#aqui pasa lo mismo, por eso le ponemos como primer valor 0, ya que
#la variable @mes almacena el numero de mes y nunca pasa de 12, pero
#tampoco llega a 0, utilizaremos la variable @mes para definir el valor
#de @nombremes, y como @mes nunca llega a 0, el primer valor de @nombremes
#sera un valor nulo, nunca sera mostrado.
@nombremes = ["0", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]
#creamos dos variables para almacenar 2 colores diferentes dependiendo de la
#etapa del dia en que estemoas, lo utilizo para las ventanas.
@scolor = Color.new(255, 255, 255, 255)
@ncolor = Color.new(255, 255, 255, 255)
refresh
end #end del initialize
#Creamos las operaciones para pausar el tiempo virtual cuando sea necesario.
#Para pausar el tiempo desde un evento comun poner:
#$Fecha.pause
#Para volver a reanudar el tiempo poner
#$Fecha.play
def pause
if @pause == false
@tiempo_temp = Graphics.frame_count
@pause = true
end
end
def play
if @pause == true
@tiempo_pausado += (Graphics.frame_count - @tiempo_temp)
@tiempo_temp = 0
@pause = false
end
end
#Aqui definimos los metodos para pausar el juego al entrar al menu, y reanudar
#el tiempo al salir del menu en el caso de que no estuviera parado antes.
#Si no quereis parar el tiempo al entrar al menu comentar las lineas que esten
#entre el def y el ultimo end de cada operacion.No comentar ni el def ni el
#ultimo end de cada operacion u os dara error.
def pause_menu
if @pause == false and @pause_menu == false
@tiempo_temp = Graphics.frame_count
@pause_menu = true
end
end
def play_menu
if @pause == false and @pause_menu == true
@tiempo_pausado += (Graphics.frame_count - @tiempo_temp)
@tiempo_temp = 0
end
@pause_menu = false
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
#------Definimos variables totales--------------------------------------------
#Si queremos avanzar en el tiempo en el juego deberemos utilizar estas
#variables.
#$fecha.totalmin =+ "los minutos que quieras avanzar"
#igual con las demas,nunca le asigneis un valor,solo sumar o restar
#si le asignais un valor dejara de correr el tiempo de esa variable.
#Por ejemplo, si haceis
#$fecha.totalhor = 5
#la hora se quedara permanentemente en cinco, y no sumara cada 60 minutos
if @pause == false and @pause_menu == false
@totalsec = ((Graphics.frame_count- @tiempo_pausado) * @speed) / Graphics.frame_rate
else
end
#Aqui especifico los valores de las variebles totales, es decir, estas
#variables estaran sumando indefinidamente mientras el tiempo estea activo,
#un ejemplo: @totalmin al llegar a 60 seguira a 61, estas variables no son
#las encargadas de mostrar la fecha, solo de controlarla.
@totalmin = @totalsec / 60 + @n_min
@totalhor = @totalmin / 60 + @n_hor
@totaldia = @totalhor / 24 + @n_dia
@totalmes = @totaldia / 31 + @n_mes
@año = totalmes / 12 + @n_año
#----Definimos variables de tiempo---------------------------------------
#Estas variables dependen totalmente de las variables totales de arriba,
#aqui indicamos cual es el numero maximo a mostrar.EJEMPLO
#@hora = @totalhor % 24
#el % es el resto, o sea,
#@hora es igual al resto de @totalhor dividido entre 24.
#basicamente hara que cuando la hora llegue a 23, la hora siguiente sera 0
#NOTA: el mes .el dia y @horas no marcaran 0 por el condicional que se
#los impide
#ATENCION:la variable totaldiasem tiene que ser igual a @totaldia
#menos los dias que le habeis asignado de inicio, y despues sumarle
#el numero de dia de semana en el que querais empezar, empezando
#por 0 que es Lunes asta 6 que es Domingo.
#por ejemplo, digamos que habeis definido el dia inicial en 20, como dije
#arriba, se le debera poner un numero menos por que aqui abajo sumara 1,
#por lo tanto el dia que debereis poner en @n_dia sera 19, pues
#entonces totaldiasem tendra que estar asi:
#
# totaldiasem = (@totaldia - 19) + 1
#si no le sumais ningun numero al final, el valor inicial de totaldiasem
#sera 0, por lo tanto sera Lunes
totaldiasem = (@totaldia -20) + 3
@mes = @totalmes % 12 +1
@dia = @totaldia % 31 +1
@horas = @totalhor % 12
if @horas == 0
@horas = 12
end
@hora = @totalhor % 24
@minuto = @totalmin % 60
@segundos = @totalsec % 60
@numdiasemana = totaldiasem % 7
#-----------------------------------------------------------------------------
#==Inicio del sistema de estaciones
#-----------------------------------------------------------------------------
#==ESTACIONES DEL AÑO=======================================================
#Para cambiar la hora de inicio de cada parte del dia simplemente cambiar el
#valor de las variables hora_"parte del dia" por las que correspondan.
#Para cambiar el numero de estaciones o los dias en que empiezan, cambiar
#los condicionales poniendo mas "elsif" en caso de querer poner mas
#estaciones y cambiar las variables @mes y @dia por las que correspondan
#Estaciones del año===========================
if (@mes == 3 and @dia >= 20) or @mes == 4 or @mes == 5 or (@mes == 6 and @dia < 20)
@numestacion = 1
elsif (@mes == 6 and @dia >=20) or @mes == 7 or @mes == 8 or (@mes == 9 and @dia < 20)
@numestacion = 2
elsif (@mes == 9 and @dia >= 20) or @mes == 10 or @mes == 11 or (@mes == 12 and @dia < 20)
@numestacion = 3
elsif (@mes == 12 and @dia >= 20) or @mes == 1 or @mes == 2 or (@mes == 3 and @dia < 20)
@numestacion = 4
end
#Definimos los nombres de cada estacion y establecemos las horas en que
#empieza cada parte del dia.
#donde solo hay un numero es la hora en que empiza esa parte del dia.
#donde hay muchos numeros son las horas que pertenecen a esa parte del dia.
case @numestacion
when 1
#Horario primavera
@estacion = "Primavera"
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
when 2
#horario verano
@estacion = "Verano"
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
when 3
#Horario otoño
@estacion = "Otoño"
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
when 4
#horario invierno
@hora_amanece = 4
@amaneciendo = [4, 5, 6, 7]
@hora_dia = 8
@de_dia = [8, 9, 10, 11, 12, 13, 14, 15]
@hora_anochece = 16
@anocheciendo = [16, 17, 18, 19]
@hora_noche = 20
@de_noche = [20, 21, 22, 23, 0, 1, 2, 3]
end #end del case @numestacion
#============================================================================
end #end del refresh
#=============================================================================
#==AMANECER-ANOCHECER
#=============================================================================
def amanecer_anochecer
#Para poner mas acciones que se realicen al amanecer o al anochecer
#ponerlas en los condicionales de abajo.
#Si son acciones que solo se realizan una vez en cada parte del dia
#(como el sonido del gallo por la mañana) ponerlas dentro del condicional
#del sonido de amanecer anochecer o la parte del dia que sea.
#Si son acciones que siempre esten presentes durante esa parte del dia
#ponerlas en el condicional de las partes del dia.
#=====================INFORMACION========================================#
#Si quereis que dichas acciones se realicen en TODOS los mapas, #
# entonces ponerlo en donde pone: #
# "#en TODOS los mapas" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas donde NO se #
#escucha el sonido entonces ponerlo en donde pone: #
# "#si en el mapa SI se escucha el sonido" # #
# #
#Si quereis que las acciones se realicen SOLO en los mapas donde SI se #
#escucha el sonido entonces ponerlo en donde pone: #
# "#si en el mapa NO se escucha el sonido" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que habeis #
#definido como interiores, entonces ponerlo en donde pone: #
# "#en los mapas INTERIORES" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que no habeis #
#definido como interiores, entonces ponerlo donde pone: #
# "#en los mapas EXTERIORES" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que habeis #
#definido como "extra", entonces ponerlo en donde pone: #
# "#en los mapas EXTRA" #
# #
#Si quereis que las acciones se realicen SOLO en los mapas que no habeis #
#definido como extra, entonces ponerlo donde pone: #
# "#en los mapas que NO son extra" #
# #
#Si os fijais en los codigos para cada mapa podreis poner acciones que #
#se realicen en mapas especificos en otras partes del script. #
#========================================================================#
#Comando para las partes del dia
if @amaneciendo.include?(@hora) #si esta amaneciendo
@tono = @tono_amanece
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
elsif @de_dia.include?(@hora) #si es de dia
@tono = @tono_dia
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
elsif @anocheciendo.include?(@hora) #si esta anocheciendo
@tono = @tono_anochece
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
elsif @de_noche.include?(@hora) #si es de noche
@tono = @tono_noche
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
else
#si en el mapa SI se escucha el sonido
end
if @interior.include?($game_map.map_id)
#en los mapas INTERIORES
else
#en los mapas EXTERIORES
end
if @map_extra.include?($game_map.map_id)
#en los mapas EXTRA
else
#en los mapas que NO son extra
end
end #end del condicional de las partes del dia
#Comandos para las horas en que cambie la parte del dia.
#
#Todas las acciones que querais realizar en la hora que comienza una
#parte del dia, debeis de ponerlo siempre antes de
#"variable de la parte del dia" = 1 -- EJEMPLO: @amanecer = 1
#
#SI QUEREIS QUE UNA ACCION ESTEA SIEMPRE QUE ESA PARTE DEL DIA ESTE ACTIVA
#PONERLA ARRIBA, EL COMANDO PARA LAS PARTES DEL DIA, AQUI ABAJO SOLO VAN
#LAS ACCIONES QUE SE REALICEN SOLO EN LA HORA CONCRETA EN LA QUE EMPIEZA
#UNA PARTE DEL DIA Y NO DURANTE TODA LA PARTE DEL DIA.
#Cuando empieza a amanecer
if @hora != @hora_amanece
@amanecer = 0
end
if @hora == @hora_amanece and @amanecer == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@amanecer = 1
else
Audio.se_play("Audio/SE/gallo.mp3")
#si en el mapa SI se escucha el sonido
@amanecer = 1
end
end
#Cuando empieza el dia
if @hora != @hora_dia
@sdia = 0
end
if @hora == @hora_dia and @sdia == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@sdia = 1
else
#si en el mapa SI se escucha el sonido
@sdia = 1
end
end
#Cuando empieza a anochecer
if @hora != @hora_anochece
@anochecer = 0
end
if @hora == @hora_anochece and @anochecer == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@anochecer = 1
else
Audio.se_play("Audio/SE/lechuza.mp3")
#si en el mapa SI se escucha el sonido
@anochecer = 1
end
end
#Cuando empieza la noche
if @hora != @hora_noche
@snoche = 0
end
if @hora == @hora_noche and @snoche == 0
#en TODOS los mapas
if @sonido_int.include?($game_map.map_id)
#si en el mapa NO se escucha el sonido
@snoche = 1
else
#si en el mapa SI se escucha el sonido
@snoche = 1
end
end
end #end del amanecer_anochecer
#============================================================================
def cambio_tono
#====================================================================
#Cambio de pantalla====================================
#Aqui definimos los cambios de tono en diferentes mapas.
#====================================================================
if @interior.include?($game_map.map_id)
$game_screen.start_tone_change(@tono_int, 0)
@int = 1
elsif @map_extra.include?($game_map.map_id)
$game_screen.start_tone_change(@tono_extra, 0)
@int = 1
elsif @int == 1
$game_screen.start_tone_change(@tono, 0)
@int = 0
elsif @hora == @hora_amanece or @hora != @hora_amanece
$game_screen.start_tone_change(@tono, @tiempo_tono)
end
end #end del cambio_tono
#======================================================================
#Para sumar un tiempo determinado, poner en llamar script.
#$fecha.n_"unidad de tiempo" += "el tiempo que quereis avanzar"
#Estas son las "unidad de tiempo" existentes.
#"min" avanzar minutos ($fecha.n_min) EJ: $fecha.n_min += 5 (suma 5 minutos)
#"hor" avanzar horas ($fecha.n_hor) EJ: $fecha.n_hor += 5 (suma 5 horas)
#"dia" avanzar dias ($fecha.n_dia) EJ: $fecha.n_dia += 5 (suma 5 dias)
#"mes" avanzar meses ($fecha.n_mes) EJ: $fecha.n_mes += 5 (suma 5 meses)
#"año" avanzar años ($fecha.n_año) EJ: $fecha.n_año += 5 (suma 5 años)
#
#Para ir a un determinado tiempo virtual, solamente definir el tiempo
#y despues poner $fecha.ir_a_tiempo , todo ello en llamar script.
#EJEMPLO:iremos al dia 5 de febrero de 2056 a las 12:05
#
#$fecha.ir_min = 5
#$fecha.ir_hor = 12
#$fecha.ir_dia = 5
#$fecha.ir_mes = 2
#$fecha.ir_año = 2056
#$fecha.ir_a_tiempo
#
#Si solo quereis definir alguna de las unidades de tiempo y no todas,
#entonces debereis de poner a las que no querais definir la variable de su
#unidad de tiempo correspondiene.EJEMPLO:Iremos solo al dia 5 sin especificar
#nada mas
#
#$fecha.ir_min = $fecha.minuto
#$fecha.ir_hor = $fecha.hora
#$fecha.ir_dia = 5 (para no definir el dia es $fecha.dia)
#$fecha.ir_mes = $fecha.mes
#$fecha.ir_año = $fecha.año
#
#Si el tiempo que definis es inferior al actual, no retrocedera.EJEMPLO:
#estamos a dia 5 de febrero en el juego, y hay un evento para ir al dia 2.
#como no retrocede el pj ira al 2 de marzo.
#si el evento esta definido para ir al 2 de febrero, entonces avanzara un año
#igual con los minutos y las horas, si el minuto es inferior al actual
#avanzara una hora, y si la hora es inferior a la actual sumara un dia.si el
#mes es inferior al actual sumara un año.
#con los años no pasa asi, los años si es posible retroceder.
def ir_a_tiempo
if @ir_min < @minuto and @ir_hor == 0
@n_min += (60 - @minuto + @ir_min)
else
@n_min += (@ir_min - @minuto)
end
if @ir_hor < @hora and @ir_dia == 0
@n_hor += (24 - @hora + @ir_hor)
else
@n_hor += (@ir_hor- @hora)
end
if @ir_dia < @dia and @ir_mes == 0
@n_dia += (31 - @dia + @ir_dia)
else
@n_dia += (@ir_dia - @dia)
end
if @ir_mes < @mes and @ir_año == 0
@n_mes += (12 - @mes + @ir_mes)
else
@n_mes += (@ir_mes - @mes)
end
@n_año += (@ir_año - @año)
$fecha.ir_min = 0
$fecha.ir_hor = 0
$fecha.ir_dia = 0
$fecha.ir_mes = 0
$fecha.ir_año = 0
end
#-------------------------------------------------------------
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
amanecer_anochecer
cambio_tono
refresh
end #end del update
end #end de la class Fecha
#==============================================================================#
#=====================================================#========================#
#--Creamos la ventana donde se mostrara la fecha(MENU)#========================#
#=====================================================#========================#
# ■ Window_Fecha
#------------------------------------------------------------------------------
# Esta ventana muestra el tiempo virtual en el menu del juego
#==============================================================================
#------Damos nombre a la clase y definimos su herencia----------------------
class Window_Fecha < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
#-----Definimos el tamaño de la ventana y otros aspectos-------------------
def initialize
super(0, 0, 160, 120)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
self.contents.clear
#-----Definimos y creamos texto a imprimir en ventana--------------------
#Si queremos que algo no salga suprimimos su linea
#para modificar la posicion dentro de la ventana
#o su tamaño es asi:
#...draw_text(posicionX, posicionY, ANCHO, ALTO, lo que se imprime, ALINEACION)
#La alineacion es 0=a la izkierda, 1=centrado y 2=a la derecha
#La primera linea es la del icono del sol o la luna,los dos primeros
#numeros (que por defecto son 0, 0 ) son la posicion en X y posicion en Y.
#el ultimo numero de este no es la alineacion, si no su opacidad.
#Aqui se modifican los colores del texto en ventana y el windowskin
#scolor es el color del texto
#ncolor es el color de los numeros
@linea1_rect = Rect.new(0, 0, 70, 20)
@linea2_rect = Rect.new(0, 0, 121, 16)
@linea3_rect = Rect.new(0, 0, 89, 16)
@linea4_rect = Rect.new(0, 0, 80, 43)
@img_linea = RPG::Cache.picture("linea.png")
if $fecha.amaneciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("amaneceskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_dia.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("diaskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.anocheciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("anocheceskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_noche.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("nocheskin_menu.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 155, 255, 255)
end
self.contents.blt(25, 0, @img_linea, @linea1_rect, 70)
self.contents.blt(0, 25, @img_linea, @linea2_rect, 70)
self.contents.blt(0, 45, @img_linea, @linea3_rect, 70)
self.contents.blt(20, 70, @img_linea, @linea4_rect, 70)
# self.contents.blt(0, 0, @img_tiempo, @img_tiempo_rect, 250)
self.contents.font.color = scolor
self.contents.draw_text(25, 0, 70, 20, $fecha.diasemana[$fecha.numdiasemana], 1)
self.contents.font.color = scolor
self.contents.draw_text(0, 25, 39, 16, "Fecha:", 0)
textf = sprintf("%02d/%02d/%02d", $fecha.dia, $fecha.mes, $fecha.año)
self.contents.font.color = ncolor
self.contents.draw_text(42, 25, 82, 16, textf, 2)
self.contents.font.color = scolor
self.contents.draw_text(0, 45, 39, 16, "Hora:", 0)
texth = sprintf("%02d:%02d", $fecha.horas, $fecha.minuto)
self.contents.font.color = ncolor
self.contents.draw_text(30, 45, 50, 16, texth, 2)
self.contents.font.color = scolor
self.contents.draw_text(20, 60, 80, 40, $fecha.nombremes[$fecha.mes], 1)
#esto esta comentado por que no saldra en pantalla, si queres ponerlo debereis
#modificar las posiciones y tamaños del resto de objetos o sustiruir
#a un objeto poniendo su misma posiscion, despues descomentarlo.
#self.contents.font.color = system_color
#self.contents.draw_text(0, 60, 80, 40, @fecha.estacion, 0)
end
#-------------------------------------------------------------
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
super
$fecha.update
refresh
end
end
#==============================================================================#
#=====================================================#========================#
#--Creamos la ventana donde se mostrara la fecha(MAPA)#========================#
#=====================================================#========================#
# ■ Window_Fecha_mini
#------------------------------------------------------------------------------
# Esta ventana muestra el tiempo virtual en el mapa
#==============================================================================
#------Damos nombre a la clase y definimos su herencia----------------------
class Window_Fecha_mini < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
#-----Definimos el tamaño de la ventana y otros aspectos-------------------
def initialize
super(0, 0, 220, 73)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
self.opacity = 200
refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
self.contents.clear
#-----Definimos y creamos texto a imprimir en ventana--------------------
#NOTA:Hay lineas comentadas aqui abajo, las comente para poder hacer la
#ventana de fecha/hora del mapa mas pequeña,si quieres incluir esas
#partes en la ventana del mapa,ademas de descomentarlas tendras que
#modificar el tamaño de la ventana y las posiciones de los contenidos.
#Aqui se modifican los colores del texto en ventana y el windowskin
#scolor es el color del texto
#ncolor es el color de los numeros
@linea1_rect = Rect.new(28, 0, 185, 20)
@linea2_rect = Rect.new(28, 20, 130, 20)
@img_linea = RPG::Cache.picture("linea.png")
if $fecha.amaneciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("amaneceskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_dia.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("diaskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.anocheciendo.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("anocheceskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 255, 155, 255)
elsif $fecha.de_noche.include?($fecha.hora)
self.windowskin = RPG::Cache.windowskin("nocheskin_map.png")
scolor = Color.new(255, 255, 255, 255)
ncolor = Color.new(155, 155, 255, 255)
end
self.contents.blt(28, 0, @img_linea, @linea1_rect, 70)
self.contents.blt(28, 20, @img_linea, @linea2_rect, 70)
self.contents.font.color = scolor
self.contents.draw_text(28, 0, 65, 20, $fecha.diasemana[$fecha.numdiasemana], 0)
#self.contents.font.color = system_color
#self.contents.draw_text(0, 25, 39, 16, "Fecha:", 0)
textf = sprintf(":%02d/%02d/%02d", $fecha.dia, $fecha.mes, $fecha.año)
self.contents.font.color = ncolor
self.contents.draw_text(88, 0, 85, 16, textf, 0)
#self.contents.font.color = system_color
#self.contents.draw_text(0, 45, 39, 16, "Hora:", 0)
texth = sprintf("-%02d:%02d", $fecha.horas, $fecha.minuto)
self.contents.font.color = ncolor
self.contents.draw_text(158, 0, 35, 16, texth, 0)
self.contents.font.color = scolor
self.contents.draw_text(28, 20, 65, 20, $fecha.estacion, 0)
self.contents.draw_text(106, 20, 65, 20, $fecha.nombremes[$fecha.mes], 1)
#Al pulsar la tecla F5 se activa/desactiva la ventana
if Input.trigger? (Input::F5)
self.visible = self.visible ? false : true
end
#===========================================================================
end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
super
$fecha.update
refresh
end
end
#Creamos alias para las clases por defecto.
#Alias es un nombre para un metodo de otra clase para incluir operaciones en
#dicha clase sin sustituirla, solamente incluye las operaciones que pongamos
#debajo de la ultima operacion que haya en la clase en dicho modulo.
#(Le llamo modulos a las operaciones que empiezan por "def"")
#Este alias iniciara el tiempo virtual al inicio del juego.
class Scene_Title
alias midnightmoon_fecha_main main
def main
$fecha = Fecha.new
midnightmoon_fecha_main
end
alias midnightmoon_fecha_command command_new_game
def command_new_game
$fecha = Fecha.new
midnightmoon_fecha_command
end
end
#Este alias guardara la informacion del tiempo virtual al guardar partida.
class Scene_Save
alias midnightmoon_fecha_write_data write_save_data
def write_save_data(file)
midnightmoon_fecha_write_data(file)
Marshal.dump($fecha, file)
end
end
#Este alias cargara la informacion del tiempo virtual al cargar partida.
class Scene_Load
alias midnightmoon_fecha_read_data read_save_data
def read_save_data(file)
midnightmoon_fecha_read_data(file)
$fecha = Marshal.load(file)
end
end
#Este alias para Scene_map pondra la ventana del tiempo virtual en el mapa
class Scene_Map
alias window_fecha_main main
def main
@window_fecha = Window_Fecha_mini.new
@window_fecha.x = 412
@window_fecha.y = 0
window_fecha_main
if $scene != self
@window_fecha.dispose
end
end
alias window_fecha_update update
def update
$fecha.update
@window_fecha.update
window_fecha_update
end
end
#Este alias para Scene_menu pondra la ventana de tiempo virtual en el menu
class Scene_Menu
alias fecha_menu_main main
def main
$fecha.pause_menu
@window_fecha = Window_Fecha.new
@window_fecha.x = 0
@window_fecha.y = 296
fecha_menu_main
if $scene != self
@window_fecha.dispose
$fecha.play_menu
end
end
alias fecha_menu_update update
def update
@window_fecha.update
fecha_menu_update
end
end
#Este alias hara que la ventana Window_Steps sea invisible,para asi poner la
#ventana del tiempo virtual en su lugar.
class Window_Steps
alias fecha_steps_initialize initialize
def initialize
fecha_steps_initialize
self.visible = false
end
end
#Creamos una copia de Window_PlayTime modificandola un poco para que la ventana
#de la fecha/hora entre en el menu, al crear la clase completa esta sustituira
#a la Window_PlayTime original.
class Window_PlayTime < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 72)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 120, 24, "Tiempo Jugado")
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 20, 120, 24, text, 2)
end
#--------------------------------------------------------------------------
# - Renovacion del frame
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#Fin de la creacion de la copia de Window_PlayTime.
y una pregunta como hacer que el sprite del pokemon desaparezca cuando se usa vuelo o cavar?
eso es todo gracias. :D