Author Id: 28277 Author Name: Nyan_LV Post Content: hola queria pedir ayuda para un script para programar una fecha en pokemon essentials algo asi como para hacer un evento que se active en cierto dia. no se mucho de sripts y encontre este me preguntaba si se podia modificar este para usarse en el essentials [SPOILER="script TIEMPO VIRTUAL de AMROTZ"]#==============================================================================# #*#*#*#*#*#*#*#*#*#*#=*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#=# # 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. [/SPOILER] y una pregunta como hacer que el sprite del pokemon desaparezca cuando se usa vuelo o cavar? eso es todo gracias. :D