Eu sei que poderia usar o alarme, mas dessa maneira ficou bem mais dinâmico e sem limites !
Pra quem ja programou em JavaScript, esse script tem a mesma função do setInterval ou do setTimout,
Para quem nunca programou em JS, recomendo a olhar os links das funções para entender melhor como funcionam !
Para usar a função é muito simples, depois de criar script e colocar o código dentro dele, lembrando, cole todo o script abaixo do seu function inicial, ou substitua ele, ai use
if (wait("meu_timer", 300)) { /* Função ou script que quer executa em um loop de 5 minutos */ }
na parte de "Meu Timer", você pode colocar o nome que quiser, só lembre que ele é global, então nunca use o mesmo nome se não vai da conflito, após isso você define o tempo em segundos.
No link citado abaixo o desenvolvedor passa alguns outros scripts que funcionam em conjunto a esse, sendo eles wait_reset (Reseta o seu timer), wait_get_time (Retorna um valor especificando quanto tempo falta para o seu timer chegar a zero 0)
Este é o site onde encontrei
Código: Selecionar todos
function wait(){
/// @function wait(index, time);
/// @param {int|string} index
/// @param {real} time
/// @author Lucas Chasteen <[email protected]>
/// @copyright XGASOFT 2018, All Rights Reserved
/*
Sets a timer and waits for it to complete. Returns 'true' or 'false' depending on timer state.
Input time is a value in seconds.
Note that 'true' will only be returned for **one step**, after which the timer will restart
automatically.
Timer 'index' can be either an integer or a string. All timers are global, so you should not
use the same index twice unless you want to overwrite a previous timer. For this reason, a
unique string is recommended for easy memorability.
Example usage:
if (wait("t_alarm", 300)) {
//Action
}
*/
//Set script to auto-init at launch
gml_pragma("global", "wait();");
//Initialize data structure if no arguments are supplied
if (argument_count == 0) {
global.ds_wait = -1; /* DO NOT DO THIS MANUALLY OR YOU WILL CREATE A MEMORY LEAK */
exit;
}
//Ensure timer data structure exists
if (!ds_exists(global.ds_wait, ds_type_map)) {
global.ds_wait = ds_map_create();
}
//Ensure timer ID exists
if (!ds_map_exists(global.ds_wait, argument[0])) {
global.ds_wait[? argument[0]] = 0;
}
//Set timer
if (global.ds_wait[? argument[0]] == 0) {
global.ds_wait[? argument[0]] = argument[1];
} else {
//Decrement timer
global.ds_wait[? argument[0]] -= delta_time/1000000;
//Reset timer and return true when complete
if (global.ds_wait[? argument[0]] <= 0) {
ds_map_delete(global.ds_wait, argument[0]);
return true;
}
}
//Disable until time is complete
return false;
}