[RPGXP] Leyendo la fecha completa en RPG Maker


Like Tree8Gracias
  • 4 Post By PolectronElMagnifico
  • 1 Post By PolectronElMagnifico
  • 1 Post By Xabier2012
  • 1 Post By ~LV~
Respuesta
 
Herramientas Desplegado
  #1  
08/07/2013
Predeterminado Leyendo la fecha completa en RPG Maker
Bueno, para estrenar esta zona empezaré con una investigación sencilla, como leer el tiempo actual del juego. Se pueden saber la hora, los minutos, el día, el mes y el año.

Vamos a proceder a la explicación. El script se encuentra en la sección PokemonTime dentro de la función self.pbGetDayNightMinutes.
Para ser exacto son las líneas:
Código:
    now=Time.now # Get the current system time
    hour=now.hour
    minute=now.min
    month=now.mon-1
Como se ve ahí obtienen la hora, los minutos y los meses, pero con un poco de cabeza se pueden obtener el año , el día y los segundos.

Código:
    day=now.day
    year = now.year
    seconds = now.sec
Así pues, ya tenemos la forma de conseguir todos los datos del tiempo, ahora para poder leer bien los datos haremos un nuevo script, ya que yo almenos no he podido conseguir los datos directamente desde su script original XD

Procedamos a el código para el script:

Spoiler


Código:
  def pbGetTime
    now=Time.now # Get the current system time
    hour=now.hour
    minute=now.min
    month=now.mon-1
    Kernel.pbMessage(_INTL("Ahora mismo son las: {1}:{2}:{6} y estamos a {3} de {4} del {5}",hour, minute,now.day,now.mon,now.year,now.sec))
    Kernel.pbMessage(_INTL("Los datos totales son: {1}",now))
  end


Bueno, eso es todo, es una investigación bastante sencilla, pero creo que si se usa bien puede resultar bastante interesante.
Creo que yo ya tengo una idea, si sale bien os contaré que tal ^^

PD: Animaros a postear vuestrar propias investigaciones e ideas al respecto de las ya realizadas ^^

Última edición por PolectronElMagnifico; 08/07/2013 a las 19:53
  #2  
09/07/2013
Predeterminado Jugando con el D&N
Bueno, para completar esta investigación, quería agregar que la función de donde obtuve el código es la función encargada de obtener la hora para el Day and Night, así que con un poco astucia se podría jugar con este sistema de una forma muy sencilla, y así poder cambiar la hora a nuestro antojo.

Para hacer esto, simplemente teneis que ir a la sección PokemonTime y buscar la función self.pbGetDayNightMinutes
Un par de lineas más abajo encontraremos esto:
hour=now.hour
Si lo cambiamos por esto:
hour = $game_variables[X] (cambiad la X por el número de interruptor que querais)

podremos cambiar la hora del juego en cualquier momento, de muchas formas, todo depende de vuestra originalidad ^^
Gracias: Seizera
  #3  
09/07/2013
Predeterminado Respuesta: [Estrenando zona] Leyendo la fecha completa en RPGmaker
Y después con condiciones.
Entonces, con esto:

Nombro una variable a Time.now.mday, que sería la hora del PC
y también al mes y al día del mes.
Con lo que se puede hacer una condición donde si el día es 25, y el mes diciembre (12), que me digan feliz navidad.
Y con esto hacer eventos dependiendo del día, semana y cosas así.
Con agregar en un llamar script lo de arriba ya se debería ajustar todo eso.
  #4  
09/07/2013
Predeterminado Respuesta: [Estrenando zona] Leyendo la fecha completa en RPGmaker
Era una funcion incluida en el essentials? :B
bueno yo lo hice funcionar con un script aparte como sea buen aporte amigo

Última edición por ~LV~; 10/07/2013 a las 17:16 Razón: borrar contenido
  #5  
09/07/2013
Predeterminado Respuesta: [Estrenando zona] Leyendo la fecha completa en RPGmaker
Dicho por Last_M Ver mensaje
Era una funcion incluida en el essentials? :B
bueno yo lo hice funcionar con un script aparte y si me permites añadir algo a tu aporte para no hacer un tema aparte si no se considera spam con esto puedes ver un pequeño reloj en la esquina de la pantalla que se activa con el interruptor 37(se puede cambiar)

Script

#-------------------------------------------------------------------------------
#---------------------Super - Dynamic Time Clock v 1.1--------------------------
#By: Super Shooter
#Date: 05/12/11
#last Update: 06/12/11
#Muestra una hud con la hora del sistema.

#-------------------------------------------------------------------------------
# Editar para personalizar, instruciones en los comentarios.
#-------------------------------------------------------------------------------

module SuperTime
ClockFont = {:face => 'Times New Roman', #fuete con la que se mostrara la hora
:size => 18, #tamaño de la letra
:bold => true, #bold (o negrita) true = si, false = no
:italic => false #italica (o cursiva) true = si, false = no
}
ClockPosition = {:x => 10, :y => 10} #Posicion del reloj respecto a x, y
DivHour = ":" #Signo que divide hora-minuto-segundo
DivDate = "/" #signo que divide la fecha
Switch = 37 #interruptor que activa el reloj

#Textos que se mostraran como nombre del dia, advertencia no borrar ni
#modificar 'Monday', 'Tuesday' ... solo las palabras despues de =>

Days = {'Monday' => 'Lun', #Corresponde al lunes
'Tuesday' => 'Mar', #Corresponde al martes
'Wednesday'=> 'Mie', #Corresponde al miercoles
'Thursday' => 'Jue', #Corresponde al jueves
'Friday'=>'Vie', #Corresponde al viernes
'Saturday' => 'Sab', #Corresponde al sabado
'Sunday'=>'Dom'} #Corresponde al domingo

Hour24_7 = false #Modo horario de 24 horas (true = si / false = no)
PreHour = {:h24 => '24 H', #Texto al final de la hora en modo Hour24_7 = true
:am => 'Am', #Texto al final de la hora antes de las 12 de la mañana
#con hour24_7 = false
m => 'Pm'} #Texto al final de la hora andes de las 12 de la noche
#con hour24_7 = false
end
#-------------------------------------------------------------------------------
class SpriteClock < Sprite
include SuperTime
def initialize
super
self.bitmap = Bitmap.new(155, 76)
self.x = ClockPosition[:x]
self.y = ClockPosition[:y]
self.z = 9999
self.bitmap.font.name = ClockFont[:face]
self.bitmap.font.size = ClockFont[:size]
self.bitmap.font.bold = ClockFont[:bold]
self.bitmap.font.italic = ClockFont[:italic]
update
end
def update
self.bitmap.clear
back = RPG::Cache.windowskin('back_clock.png')rescue nil
rect = Rect.new(0, 0, 145, 66)
self.bitmap.blt(x, y, back, rect) rescue nil
day = Days[$game_variables[WeekDay]]
self.bitmap.draw_text(x + 3, y + 5, 140, 32,
"#{day}, #{$game_variables[Day]}#{DivDate}#{$game_variables[Month]}#{DivHour}#{$game_variables[Year]}", 1)
h = $game_variables[Hour]
hour = 12 if hour == 0
m = $game_variables[Min]
m = "0#{$game_variables[Min]}" if $game_variables[Min] < 10
s = $game_variables[Sec]
s = "0#{$game_variables[Sec]}" if $game_variables[Sec] < 10
if Hour24_7
text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:h24]}"
elsif h > 11
h -=12 if h >= 13
h = "0#{h}" if h < 10
text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[m]}"
else
h = 12 if h == 0
h = "0#{h}" if h < 10
text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:am]}"
end
self.bitmap.draw_text(x + 3, y + 33, 140, 32, text, 1)
end
end

class Scene_Map
alias clock_main main
alias clock_update update
def main
@clock = SpriteClock.new
@clock.z = 9999
@clock.visible = false
clock_main
@clock.bitmap.dispose
@clock.dispose
end

def update
clock_update
if $game_switches[SuperTime::Switch]
@clock.update
@clock.visible = true
else
@clock.visible = false
end
end
end
Te lo pongo dentro de un code para que no haya emoticonos

script


Código:
#-------------------------------------------------------------------------------
#---------------------Super - Dynamic Time Clock v 1.1--------------------------
#By: Super Shooter
#Date: 05/12/11 
#last Update: 06/12/11
#Muestra una hud con la hora del sistema.

#-------------------------------------------------------------------------------
# Editar para personalizar, instruciones en los comentarios. 
#-------------------------------------------------------------------------------

module SuperTime
  ClockFont = {:face => 'Times New Roman', #fuete con la que se mostrara la hora
               :size => 18, #tamaño de la letra
               :bold => true, #bold (o negrita) true = si, false = no
               :italic => false #italica (o cursiva) true = si, false = no
               }
  ClockPosition = {:x => 10, :y => 10} #Posicion del reloj respecto a x, y
  DivHour = ":" #Signo que divide hora-minuto-segundo
  DivDate = "/" #signo que divide la fecha
  Switch = 37 #interruptor que activa el reloj
  
  #Textos que se mostraran como nombre del dia, advertencia no borrar ni 
  #modificar 'Monday', 'Tuesday' ... solo las palabras despues de =>
  
  Days = {'Monday' => 'Lun',  #Corresponde al lunes
          'Tuesday' => 'Mar', #Corresponde al martes
          'Wednesday'=> 'Mie', #Corresponde al miercoles
          'Thursday' => 'Jue', #Corresponde al jueves
          'Friday'=>'Vie', #Corresponde al viernes
          'Saturday' => 'Sab',  #Corresponde al sabado
          'Sunday'=>'Dom'} #Corresponde al domingo
          
  Hour24_7 = false #Modo horario de 24 horas (true = si / false = no)
  PreHour = {:h24 => '24 H', #Texto al final de la hora en modo Hour24_7 = true
             :am => 'Am', #Texto al final de la hora antes de las 12 de la mañana 
                          #con hour24_7 = false
             :pm => 'Pm'} #Texto al final de la hora andes de las 12 de la noche 
                          #con hour24_7 = false
end
#-------------------------------------------------------------------------------
class SpriteClock < Sprite
  include SuperTime
  def initialize
    super
    self.bitmap = Bitmap.new(155, 76)
    self.x = ClockPosition[:x]
    self.y = ClockPosition[:y]
    self.z = 9999
    self.bitmap.font.name = ClockFont[:face]
    self.bitmap.font.size = ClockFont[:size]
    self.bitmap.font.bold = ClockFont[:bold]
    self.bitmap.font.italic = ClockFont[:italic]
    update
  end
    def update
      self.bitmap.clear
      back = RPG::Cache.windowskin('back_clock.png')rescue nil
      rect = Rect.new(0, 0, 145, 66) 
      self.bitmap.blt(x, y, back, rect) rescue nil
      day = Days[$game_variables[WeekDay]]
      self.bitmap.draw_text(x + 3, y + 5, 140, 32, 
      "#{day}, #{$game_variables[Day]}#{DivDate}#{$game_variables[Month]}#{DivHour}#{$game_variables[Year]}", 1)
      h = $game_variables[Hour]
      hour = 12 if hour == 0 
      m = $game_variables[Min]
      m = "0#{$game_variables[Min]}" if $game_variables[Min] < 10
      s = $game_variables[Sec]
      s = "0#{$game_variables[Sec]}" if $game_variables[Sec] < 10
      if Hour24_7
      text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:h24]}"
        elsif h > 11
       h -=12  if h >= 13
       h =  "0#{h}" if h < 10
       text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:pm]}"
     else
       h = 12 if h == 0
       h =  "0#{h}" if h < 10
       text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:am]}"
      end
      self.bitmap.draw_text(x + 3, y + 33, 140, 32, text, 1)
    end
  end
  
class Scene_Map
  alias clock_main main
  alias clock_update update
  def main
    @clock = SpriteClock.new
    @clock.z = 9999
    @clock.visible = false
    clock_main
    @clock.bitmap.dispose
    @clock.dispose
  end
  
  def update
    clock_update
    if $game_switches[SuperTime::Switch]
      @clock.update 
      @clock.visible = true
    else
      @clock.visible = false
    end
  end
end
  #6  
09/07/2013
Predeterminado Respuesta: [Estrenando zona] Leyendo la fecha completa en RPGmaker
tenia tiempo intentando colocar como un reloj o algo parecido espero eso me sirva !!


-------------------------------------
en cuanto a este script no me funciono , al iniciar el juego me da error :S


Dicho por Last_M Ver mensaje
Era una funcion incluida en el essentials? :B
bueno yo lo hice funcionar con un script aparte y si me permites añadir algo a tu aporte para no hacer un tema aparte si no se considera spam con esto puedes ver un pequeño reloj en la esquina de la pantalla que se activa con el interruptor 37(se puede cambiar)

Script

#-------------------------------------------------------------------------------
#---------------------Super - Dynamic Time Clock v 1.1--------------------------
#By: Super Shooter
#Date: 05/12/11
#last Update: 06/12/11
#Muestra una hud con la hora del sistema.

#-------------------------------------------------------------------------------
# Editar para personalizar, instruciones en los comentarios.
#-------------------------------------------------------------------------------

module SuperTime
ClockFont = {:face => 'Times New Roman', #fuete con la que se mostrara la hora
:size => 18, #tamaño de la letra
:bold => true, #bold (o negrita) true = si, false = no
:italic => false #italica (o cursiva) true = si, false = no
}
ClockPosition = {:x => 10, :y => 10} #Posicion del reloj respecto a x, y
DivHour = ":" #Signo que divide hora-minuto-segundo
DivDate = "/" #signo que divide la fecha
Switch = 37 #interruptor que activa el reloj

#Textos que se mostraran como nombre del dia, advertencia no borrar ni
#modificar 'Monday', 'Tuesday' ... solo las palabras despues de =>

Days = {'Monday' => 'Lun', #Corresponde al lunes
'Tuesday' => 'Mar', #Corresponde al martes
'Wednesday'=> 'Mie', #Corresponde al miercoles
'Thursday' => 'Jue', #Corresponde al jueves
'Friday'=>'Vie', #Corresponde al viernes
'Saturday' => 'Sab', #Corresponde al sabado
'Sunday'=>'Dom'} #Corresponde al domingo

Hour24_7 = false #Modo horario de 24 horas (true = si / false = no)
PreHour = {:h24 => '24 H', #Texto al final de la hora en modo Hour24_7 = true
:am => 'Am', #Texto al final de la hora antes de las 12 de la mañana
#con hour24_7 = false
m => 'Pm'} #Texto al final de la hora andes de las 12 de la noche
#con hour24_7 = false
end
#-------------------------------------------------------------------------------
class SpriteClock < Sprite
include SuperTime
def initialize
super
self.bitmap = Bitmap.new(155, 76)
self.x = ClockPosition[:x]
self.y = ClockPosition[:y]
self.z = 9999
self.bitmap.font.name = ClockFont[:face]
self.bitmap.font.size = ClockFont[:size]
self.bitmap.font.bold = ClockFont[:bold]
self.bitmap.font.italic = ClockFont[:italic]
update
end
def update
self.bitmap.clear
back = RPG::Cache.windowskin('back_clock.png')rescue nil
rect = Rect.new(0, 0, 145, 66)
self.bitmap.blt(x, y, back, rect) rescue nil
day = Days[$game_variables[WeekDay]]
self.bitmap.draw_text(x + 3, y + 5, 140, 32,
"#{day}, #{$game_variables[Day]}#{DivDate}#{$game_variables[Month]}#{DivHour}#{$game_variables[Year]}", 1)
h = $game_variables[Hour]
hour = 12 if hour == 0
m = $game_variables[Min]
m = "0#{$game_variables[Min]}" if $game_variables[Min] < 10
s = $game_variables[Sec]
s = "0#{$game_variables[Sec]}" if $game_variables[Sec] < 10
if Hour24_7
text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:h24]}"
elsif h > 11
h -=12 if h >= 13
h = "0#{h}" if h < 10
text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[m]}"
else
h = 12 if h == 0
h = "0#{h}" if h < 10
text = "#{h}#{DivHour}#{m}#{DivHour}#{s} #{PreHour[:am]}"
end
self.bitmap.draw_text(x + 3, y + 33, 140, 32, text, 1)
end
end

class Scene_Map
alias clock_main main
alias clock_update update
def main
@clock = SpriteClock.new
@clock.z = 9999
@clock.visible = false
clock_main
@clock.bitmap.dispose
@clock.dispose
end

def update
clock_update
if $game_switches[SuperTime::Switch]
@clock.update
@clock.visible = true
else
@clock.visible = false
end
end
end
(no lo puc con los emoticonos claro ¬¬U)

Última edición por akane159; 09/07/2013 a las 19:40 Razón: agregado un poco mas
  #7  
10/07/2013
Predeterminado Respuesta: [Estrenando zona] Leyendo la fecha completa en RPGmaker
Dicho por akane159 Ver mensaje
tenia tiempo intentando colocar como un reloj o algo parecido espero eso me sirva !!


-------------------------------------
en cuanto a este script no me funciono , al iniciar el juego me da error :S




(no lo puc con los emoticonos claro ¬¬U)

Lo siento parece que ese script solo funciona en secuencia con el script que yo uso bueno...borrare el comentario anterior para no causar inconvenientes :s
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 03:22.