Como e quando usar alarms
Autor: Victor | Publicado: 2011-07-11T16:32:00-07:00

ALARMS

O QUE SÃO?
Alarm é um evento que é executado depois de um tempo. Para entender melhor você pode compara-lo com uma bomba relógio que depois de um tempo programado pelo terrorista (você) ela explode (faz o que você quer). 
Na versão 8.0 do GM você tem 12 alarms por objeto para usar e abusar, começando de 0 a 11.



COMO USO ALARMS?
Para que os alarms funcionem primeiro você precisa pensar o tempo que vai demorar para ele acontecer e quando vai começar a contar este tempo. Por exemplo, se você quer que o alarm 0 execute depois de 10 segundos começando a contar quando o objeto foi criado, você deve colocar o código no create do objeto:

alarm[0]=10*room_speed;
Para quem não sabe, room_speed é igual a 1 segundo no jogo, então basta multiplicarmos os segundos que queremos pela room_speed.
Se você estiver usando outro alarm basta trocar o número que está entre os colchetes.

Nosso alarm já ta programado para acontecer depois de 10 segundos que o objeto foi criado, mas quando o tempo acaba ele ainda não faz nada, esse é o segundo passo para se usar um alarm. No nosso exemplo quando o tempo acabar o alarm vai criar um objeto qualquer e colocar o alarm a voltar acontecer depois de 15 segundos.
Para isso criamos o evento do alarm (Add Event &gt; Alarm &gt; 0 ):

Expandir esta imagemReduzir esta imagem Ver em tamanho real


Dentro do evento vamos adicionar o seguinte código:


instance_create(x,y,obj_qualquer) alarm[0]=15*room_speed;

DESATIVANDO UM ALARM
Para desativar um alarm basta setá-lo como -1. Ex:


alarm[0]=-1;

CUIDADO COM ALARMS EM EVENTOS QUE SE REPETEM (STEP, DRAW, ETC)
É preciso tomar cuidado em setar alarms em eventos que se repetem porque eles irão ficar setando o step a todo momento. Por exemplo:
No Step você coloca:


alarm[0]=10*room_speed;
Quando o alarm[0] for diminuir, o step vai executar de novo e "falar" que ele é igual a 10*room_speed. Isso vai acontecer sempre fazendo com que o alarm nunca execute. Uma solução é colocar o cidgo dentro de um if, por exemplo:


if (contar_alarm==true) { alarm[0]=10*room_speed; contar_alarm=false; }
Quando o Step for executar de novo contar_alarm vai ser igual a false e o alarm não será setado.

QUANDO USO ALARMS?
Os alarms podem ser usados para várias coisas relacionadas a tempo dentro de um jogo. Eu irei explicar como usar o alarm para criar um relógio com contagem regressiva e como fazer ganhar uma vida de 30 em 30 segundos.
Para criar um relógio com minutos e segundos precisamos declarar a variável minutos no create:


minutos=5;//coloque os minutos que você quer que comece
Você deve estar se perguntando, e os segundos? Para os segundos vamos usar o próprio alarm. Para isso vamos setar o alarm[0] para disparar depois de 60 segundos. Para isso coloque depois do código acima:


alarm[0]=60*room_speed;

Adicione o evento alarm 0 e nele coloque o código:


minutos-=1; alarm[0]=60*room_speed;//começa os segundos de novo

Agora só falta mostrar na tela, colocando no draw:


draw_text(x,y,string(minutos)+":"+string(floor(alarm[0]/room_speed)));



Para criar um sistema que ganha uma vida de 30 em 30 segundos colocamos no create:


alarm[1]=30*room_speed; global.vidas=3;

Crie um evento alarm 1 e coloque nele:


global.vidas+=1; alarm[1]=30*room_speed;
VÍDEO


CONCLUSÃO
Bom pessoal espero que vocês tenham aprendido com o tutorial e estou aberto a sugestões, criticas e dúvidas.