Enero 01, 2013, 12:20:47 PM Ultima modificación: Enero 01, 2013, 01:17:59 PM por dulop
Hola :)
Antes que nada les doy las gracias por tomarse el tiempo de leer mi duda.

Y ella es, que si hay alguna manera de hacer uso del tiempo, del horario.

Para ser más exacto, tengo pensado una especie de "mascota virtual" o "tamagotchi". Y estas se basan en el tiempo. Cada cierto tiempo, pasan determinadas cosas. Como que le agarre hambre, ganas de ir al baño, etc.

Por ejemplo. Al iniciar el juego, si son las 10:00 pm, que a las 10:30 pm se active la variable de hambre.
Que si la última vez que entrenó, fué a las 11:55 pm, que no pueda volver a entrenar hasta las 11:56 pm.

Y cosas así.

Hay alguna función, o algo, que permita hacer uso del tiempo? Busqué y no encuentro nada.

Muchas gracias.

Creo que la forma más sencilla (o al menos la que a mí se me ocurre :-[) es ir poniendo alarms para cada "estado"
Jugador de muchos juegos y creador de algunos ;)
¿Buscas un guionista? Haz click aquí

#2 Enero 01, 2013, 04:56:42 PM Ultima modificación: Enero 01, 2013, 06:31:34 PM por elviskelley
La manera correcta de hacerlo es crear un tiempo virtual para el juego ejemplo.
event create.
seg=0 minut=0; hora=0;

event step.
seg+=(1/room_speed)
if seg>59 then {minut+=1; seg=0;}
if minut >59 then {hora+=1; minut=0;}
if hora > 24 then {hora=0;}
//puse relog de 24 horas como los de los militares ya que es la que siempre uso yo.

En el event draw solo muestras las horas y minutos asi.
draw_text(x,y,"Hora: "+string(hora)+string(":")+string(minut))
//asi muestras la hora actual.

En el event end step haces las comparaciones para las acciones ejemplo.
event End step.
if hora =10 and minut >29 then {habre=true;}
//osea activa la variable "habre"

ahora para volver a saber en que hora quedo el juego debes cargar la informacion ya que para juegos hechos con el :GMS: No se debe usar el save_game(); se tiene que usar archivos .ini para guardar tu juego, claro esto si pensas hacerlo para otro dispositivos que NO sean windows.
Te dejo un ejemplo adjunto que acabo de crear especialmente para lo que pides.

#3 Enero 02, 2013, 02:51:51 AM Ultima modificación: Enero 02, 2013, 02:38:02 PM por dulop
Cita de: elviskelley en Enero 01, 2013, 04:56:42 PM
La manera correcta de hacerlo es crear un tiempo virtual para el juego ejemplo.
event create.
seg=0 minut=0; hora=0;

event step.
seg+=(1/room_speed)
if seg>59 then {minut+=1; seg=0;}
if minut >59 then {hora+=1; minut=0;}
if hora > 24 then {hora=0;}
//puse relog de 24 horas como los de los militares ya que es la que siempre uso yo.

En el event draw solo muestras las horas y minutos asi.
draw_text(x,y,"Hora: "+string(hora)+string(":")+string(minut))
//asi muestras la hora actual.

En el event end step haces las comparaciones para las acciones ejemplo.
event End step.
if hora =10 and minut >29 then {habre=true;}
//osea activa la variable "habre"

ahora para volver a saber en que hora quedo el juego debes cargar la informacion ya que para juegos hechos con el :GMS: No se debe usar el save_game(); se tiene que usar archivos .ini para guardar tu juego, claro esto si pensas hacerlo para otro dispositivos que NO sean windows.
Te dejo un ejemplo adjunto que acabo de crear especialmente para lo que pides.
Muchas gracias, creo que entendí como hacer ^^

Pero tengo una duda.
En el "create" del reloj, pongo:

{
ini_open('data.ini');
hora = ini_read_real("Tiempo","hora",hora);
minut = ini_read_real("Tiempo","minut",minut);
seg = ini_read_real("Tiempo","seg",seg);
ini_close();
}


Pero sin embargo, el reloj empieza en 00:00:00, en vez de comenzar en 10:29:00 segun el data.ini que dice:
[Tiempo]
seg=0
minut=29
hora=10


Sabés porque no le hace caso?
Gracias!