Estoy intentando poner una duración en los poderes especiales del personaje de mi juego, como mario se volvia invencible cuando cogia la estrella.
El problema es que solo hay 11 alarmas y necesito mas. He probado contando los segundos desde el inicio de la partida y hacer un script que diga que cuando el tiempo sea el tiempo de ahora + la duración del efecto, este se acabe. Es decir: terminar_efecto = tiempo_ahora + duracion_del_efecto
¿Hay alguna manera mas sencilla y que gaste menos recursos de hacer un cronómetro o algo parecido a alarm?
Cuando pongas la variable de duración, su valor seria:
duración=room_speed*duración_base
en el evento end_step, pon este código:
if(duración) duración--
Eso debería servir para hacer un efecto de invencibilidad.
Una manera en que probaría hacerlo es definir un arreglo
[gml]
mi_alarma[0]
mi_alarma[1]
mi_alarma[2]
mi_alarma[3]
[/gml]
y en create darle valores a cada elemento, según la duración deseada. En step se podría usar un switch/case o ifs para probar en qué momento cada elemento llega al fin de su cuenta (puede ser una cuenta ascendente o descendente, tú decides).
Otra alternativa sería usar los eventos definidos por usuario como alarmas adicionales, en ese caso, se tendrían que llamar mediante la función [gml]event_perform()[/gml]
Obviamente, para ambos casos, la cuenta de pasos no se realiza automáticamente como pasa con las alarmas, sino que se tiene que incrementar/decrementar un contador y controlar en qué momento se detiene o se reinicia la cuenta.