Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Samigabacho en Octubre 22, 2012, 06:23:36 PM

Título: Función para detectar alarma (SOLUCIONADO)
Publicado por: Samigabacho en Octubre 22, 2012, 06:23:36 PM
Hola a todos,
me pregunto si hay alguna función en GM para comprobar si una alarma se está ejecutando.
Mi primera corazonada me llevó a intentar algo así como:

if (alarm[1]) {
<sentencia1>
}
if (alarm[2]) {
<sentencia2>
}
i


Pero por he hecho una pequeña prueba y no funciona.
¿Alguien sabe alguna manera de evaluar si una alarma se está ejecutado?
Gracias
Título: Re:Función para detectar alarma
Publicado por: noshy en Octubre 22, 2012, 06:58:32 PM
Hol, colega, no entiendo bien la pregunta ya que hay contradicciones, cuando se ejecuta la alarma, la misma dura un solo step, o sea una sola vuelta del sistema, por lo cual es imposible detectarla mediante otro evento.

Pero si a lo que te refieres es saber si he declarado una alarma y el sistema esta esperando para ejecutarla lo puedes hacer verificando si alarm[0] > -1. (-1 es el valor de la alarma miestras no esta esperando)

Con esto tambien puedes ver los step que faltan para que se ejecute.

Te quedaria asi:

if (alarm[1] > -1) {
<sentencia mientras esta esperando ser ejecutada>
} else {
<sentencia cuando la alarma no esta en espera>
}

if (alarm[2] > -1) {
<sentencia mientras esta esperando ser ejecutada>
}



Saludos y espero haberme explicado bien.


Título: Re:Función para detectar alarma
Publicado por: Samigabacho en Octubre 22, 2012, 07:15:20 PM
Hola compañero noshy,
ahora que leo tu respuesta veo mi contradicción y nace de tener un concepto erróneo de las alarmas. Pero creo que me has abierto los ojo.
Cuando hablaba de si se estaba ejecutando me refería a si había comenzado la cuenta atrás para ejecutar las acciones de dicha alarma.
Ejemplo:

En Create:

alarm[0] = 5*room_speed;
//activo la alarma [0] que será llamada en 5 segundos (en verdad esta duración no es fija si no variable)


En alarm[0]:
<lo que sea en GML>
alarm[1]=3*room_speed;
//trascurridos 3 segundos se activará esta alarma(en verdad esta duración no es fija si no variable)


En alarm[1]:
<lo que sea en GML>
game_end();


Lo que quería saber es si el juego se encuentra ejecutando la cuenta atrás de alarm[0] o la de alarm[1] para durante el tiempo que duran esas cuentas regresivas hacer diferentes cosas.

Imagino que el código que sugieres puede funcionar... voy a ver.
Gracias.
Título: Re:Función para detectar alarma
Publicado por: Samigabacho en Octubre 22, 2012, 07:28:32 PM
Ups, pues me temo que o bien no lo entendí bien o no funciona lo que sugieres.
Dejo un ejemplo simple para poder evaluarlo mejor


EDITADO:

Vale, vale.... tonto yo :D
el fallo venía en mi condicional para calcular el modulo de los segundos y no en tu formula para ver si está corriendo la alarma.
Muchas gracias.
Título: Re:Función para detectar alarma
Publicado por: noshy en Octubre 22, 2012, 10:09:38 PM
Colega, estuve probando tu ejemplo y lo he modificado para que veas como funciona, lo que no te esta funcionando es "show_debug_message" yo te hice lo mismo con el draw y tengas una idea de como funciona, tu con tiempo y paciencia te fijas en el resto del codigo.

Saludos y cualquier problema me avisas.