Script Game_System Add-on (PlayTime)

Ver el tema anterior Ver el tema siguiente Ir abajo

Script Game_System Add-on (PlayTime)

Mensaje  shadowball el Lun Ene 14, 2008 3:15 pm

Game_System Add-on (PlayTime)
por shadowball

Esta pequeña inclusión te permite cambiar el tiempo que has jugado.

¿Para qué ha de servir?

Para simular que el personaje quedó inconsciente durante varios días o un par de meses.
Para darle a entender al jugar que viajó al pasado, ya sea solo unos días o 1 ó 2 meses atrás...

Aparte de esas tengo otra, la persona puede necesitarlo para juegos tipo Harvest Moon o donde se siembre / coseche o se críe animales.

Por ejemplo en Harvest Moon uno va preparando un terreno para la siembra y va acumulando dinero o puntos o va pasando el tiempo y al llegar a cierto punto ya puede obtener ciertas cosas como animales de granja, semillas, lo que sea.

En ese juego el tiempo avanzaba por cantidad de días (ej. de unos 2 min cada uno) y pasaban las estaciones. Eso puede facilitar el proceso de indicarle al juego que si el tiempo en días o meses es tal, que cambie a tal mes o estación. Este script puede servir de base para eso, pero necesitaría algunas opciones extras.

Historial

v 1.1

Hace lo mismo que la versión anterior más otras 2 nuevas funciones.
Ahora también se puede agregar o restar el tiempo que el jugador ya jugó.
Ej.

Si en el menú decía algo como esto:
00:15:25
Podrás restarle o sumarle 5 min para que se vea esto en pantalla...
00:10:26 ó 00:20:26
lo del veintiseis se debe a que ya habrá pasado un segundo para entonces je je je

v 1.0

Permitía colocar una hora específica (su funcionamiento era parecido al de configurar la hora (y minutos) en un juego de Pokemon al inicio del juego).
Se fijaban los minutos, las horas, los días y los meses de forma exacta y el tiempo empezaba a correr a partir de entonces.

Script:
Código:

#============================
#  *  Game_System Add-on v 1.1
#    por shadowball
#    11. - 10.01.2008
#============================
# Podrás definir los minutos, las horas, los días y los meses en ese mismo orden
class Game_System
  def set_time(alter = 0, min = 0, hour = 0, day = 0, mon = 0, year = 0)
    if min >= 0
      if min >= 60
        min = 59
      end
      set_min = Graphics.frame_rate * 60 * min
    end
    if hour >= 0
      if hour >= 24
        hour = 23
      end
      set_hour = Graphics.frame_rate * 60 * 60 * hour
    end
    if day >= 0
      if day >= 31
        day = 30
      end
      set_day = Graphics.frame_rate * 60 * 60 * 24 * day
    end
    if mon >= 0
      if mon > 11
        mon = 11
      end
      set_mon = Graphics.frame_rate * 60 * 60 * 24 * 31 * mon
    end
    if year >= 0 && year < 2
      set_mon = Graphics.frame_rate * 60 * 60 * 24 * 31 * 12 * year
    end
 
    case alter
    when 0
      Graphics.frame_count = 0 + set_mon + set_day + set_hour + set_min
    when 1
      Graphics.frame_count = Graphics.frame_count + set_mon + set_day + set_hour + set_min
    when 2
      Graphics.frame_count = Graphics.frame_count - set_mon - set_day - set_hour - set_min
    end
  end
end

En caso de que sí les atraiga lo de modificar cuántos meses "se han jugado", aquí les va una versión del Window_PlayTime que ya incluye los días y los meses (en teoría hasta los años...)

Código:

class Window_PlayTime < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "Play Time")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    year = @total_sec / 60 / 60 / 24 / 31 / 12
    mon = @total_sec / 60 / 60 / 24 / 31 % 12
    day = @total_sec / 60 / 60 / 24 % 31
    hour = @total_sec / 60 / 60 % 24
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("A %02d M %02d D %02d:%02d:%02d:%02d", year, mon, day, hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(0, 32, 132, 32, text, 0)
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != $total_sec
      refresh
    end
  end
end
Sí, sí, ya sé. Me van a decir que no saben cómo se llama al primer script. Es simple:

v 1.1 incluye esto:

$game_system.set_time()

# esta línea tal como se la ve ahí es igual a

$game_system.set_time(0, 0, 0, 0, 0)

# reinicia el play time o tiempo jugado (el contador vuelve a cero)

eso representa:

(nueva función, minutos, horas, días, meses)

Con este ejemplo:
$game_system.set_time(0, 45)
solo cambiarían los minutos sin importar los minutos que ya hayan transcurrido.

con este otro:
$game_system.set_time(0, 0, Cool
solo cambiarían las horas sin importar las horas que ya hayan transcurrido

Esa es la idea básica de cómo se modifica, pero no tienen que escribir dos líneas para solo obtener un cambio en los minutos o en las horas. Se puede hacer en un solo llamado al script...

$game_system.set_time(0, 45, 8, 15)

El contador mostrará que "han pasado" 15 días y 8 horas con 45 minutos, o sea, 15:08:45:00.

$game_system.set_time(1, 45, 8, 15)

Si ya habían trancurrido 1 00:15:26 (días horas, minutos, segundos), el contador mostrará ahora: 16 09:00:27

$game_system.set_time(2, 45, 8, 1)

Si ya habían trancurrido 2 00:15:26 (días horas, minutos, segundos), el contador mostrará ahora: 0 15:30:27

shadowball

Cantidad de envíos : 9
Fecha de inscripción : 14/01/2008

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.