Cita de: Silver_light en Abril 25, 2017, 01:41:52 AMGracias, la estructura quedo así, no se si sera la forma correcta, pero funciona, lo malo es que uno no sabe cuanto tiempo falta para que llegue a 0, creía que saldría una especie de contador ???, pero creo que eso debe formar parte de algún draw_GUI, algo así como cuando le dicen al jugador queda x minutos x segundos para tal cosa, al parecer tendré que agregar algún elemento para que eso funcione ¿que modificación debería ponerle a este código?.
Un método sencillo que puedes utilizar es descontar una variable a través de una alarma.
Es decir, declaras en el evento create una variable, pongamosle que la quieras llamar "tiempo".
[GML]
tiempo = 100 [/GML]
Entonces tienes 100 segundos para hacer algo, o esperar a que se acaben.
Luego, para que se vaya descontanto deberían iniciar una alarma, que haga el trabajo de ir descontandola. Para ello es necesario que hagas una llamada a cualquier alarma, en este caso usariamos alarm[0] pero puede ser cualquiera que te acomode mejor.
[GML]
tiempo = 100
alarm[0] = 1 [/GML]
Ya con eso pondrías a andar el evento "alarm[0]=1" el cual debiera ejecutar un código para ir restando la variable tiempo.
Entonces creas el evento alarm[0] dentro del mismo objeto y colocas:
[GML]
tiempo = tiempo -1 [/GML]
Con eso te aseguras de que en algun momento se haga 0.
Ahora, para que se repita la alarma, es decir, para que se vuelva a descontar el temporizador , es necesario hacer otra llamada a la alarma. Creamos entonces un bucle dentro de la alarma para que se repita una y otra vez, haciendo la llamada con alarm[0] = room_speed, lo que haría que cada segundo se vuelva a ejecutar. Por consecuente se restará 1 al temporizador y volverá a llamar a la alarma.
[GML]
tiempo = tiempo -1
alarm[0] = room_speed [/GML]
Finalmente solo debes colocar la condición necesaria para que cuando llegue a cero ocurra algo.
[GML]
if (tiempo > 0){
tiempo = tiempo -1
alarm[0] = room_speed
}else // tiempo es 0
game_end() [/GML]
En este caso, cuando la alarma llegue a cero, se termina el juego, pero puedes siempre cambiarlo por otra cosa.
saludos!
CREATE:
///Tiempo inicial
tiempo = 5*30;
alarm[0] = 1;
ALARMA 0
///Contador de segundos
tiempo = tiempo -1;
alarm[0] = room_speed;
STEP:
///Tiempo actual
if (tiempo > 0) {
tiempo = tiempo -1
alarm[0] = room_speed
}else // tiempo es 0
game_end()