SA-MP Forums Archive
[Tutorial] Como fazer um Countdown - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Como fazer um Countdown (/showthread.php?tid=461135)



Como fazer um Countdown - bruxo00 - 31.08.2013

Includes necessбrias

pawn Код:
#include < a_samp > // Obrigatуria
#include < ZCMD > // Opcional
Cуdigo e Explicaзгo

pawn Код:
#include < a_samp >
#include < ZCMD >

forward Countdown();

new CounterCountdown;

CMD:countdown(playerid, params[])
{
    SendClientMessage(playerid, -1, "Comeзaste um countdown!");
   
    CounterCountdown = 11;
   
    SetTimer("Countdown", 1000, true);
    return 1;
}

public Countdown()
{
    new string[3];
    if(CounterCountdown != 0)
    {
        CounterCountdown--;

        format(string, sizeof(string), "%i", CounterCountdown);
        GameTextForAll(string, 999, 4);
    }
    else if(CounterCountdown == 0)
    {
        KillTimer(CounterCountdown);
    }
    return 1;
}

forward Countdown(); - estamos a permitir a chamada da callback Countdown

new CounterCountdown; - criamos uma variбvel global para poder ser chamada em qualquer callback

CMD:countdown(playerid, params[]) - permite, atravйz da include ZCMD criar um comando chamado

SendClientMessage(playerid, -1, "Comeзaste um countdown!"); - Envia uma mensagem ao jogador que executou o comando countdown

CounterCountdown = 11; - Setamos o valor da variбvel CounterCountdown para 11. O nosso countdown vai ser de 10 atй 0, portanto, coloquem SEMPRE 1 valor acima do que querem

SetTimer("Countdown", 1000, true); - Chamamos a callback Countdown de segundo a segundo, atй desligarmos o Timer

public Countdown() - Abrimos a callback Countdown

new string[3]; - Cria uma variбvel local com o nome string, de 3 cйlulas

if(CounterCountdown != 0) - Se a variбvel CounterCountdown for diferente de 0...

CounterCountdown--; - Retira um valor а variбvel CounterCountdown, cada vez que a callback for chamada

format(string, sizeof(string), "%i", CounterCountdown); - Formata a variбvel string, para o countdown aparecer

GameTextForAll(string, 999, 4); - Aperece o valor da variбvel CounterCountdown, como foi formatada antes, e fica na tela 0.99 segundos. Isto vai dar melhor efeito ao countdown

else if(CounterCountdown == 0) - Se a variбvel CounterCountdown for igual a 0, vai...

KillTimer(CounterCountdown); - Acaba com o Timer CounterCountdown, iniciado no comando.


[/FONT]



Re: Como fazer um Countdown - darkxdll - 01.09.2013

Ficou bom , mais poderia ter explicado mais parte dos parвmetros , mais ficou bom.


#QueIsso. Eu que upei o tutorial do cara , ninguйm gostou ?



Re: Como fazer um Countdown - Falcon. - 01.09.2013

imagina o que aconteceria, se vбrias pessoas executassem o comando dentro destes 11 segundos...

Crie uma variбvel booleana para bloquear o uso do comando enquanto a contagem estб em andamento.


Re: Como fazer um Countdown - bruxo00 - 02.09.2013

Quote:
Originally Posted by Falcon.
Посмотреть сообщение
imagina o que aconteceria, se vбrias pessoas executassem o comando dentro destes 11 segundos...

Crie uma variбvel booleana para bloquear o uso do comando enquanto a contagem estб em andamento.
Obrigado pelo feedback, nгo tinha reparado que tinham respondido :P

Falcon, esse countdown й mais para admins executarem ele.


Re: Como fazer um Countdown - Falcon. - 02.09.2013

Mas de qualquer forma й sempre bom tem um sistema com o mнnimo de chances de dar erro. Pois imagina o que aconteceria, se vбrios admins executassem o comando dentro destes 11 segundos...




Re: Como fazer um Countdown - darkxdll - 02.09.2013

Falcon. acho que o tutorial foi para explicar um pouco sobre "cronometragem" e nгo como bloquear algo com uma variбvel .

Concordo que bloqueando o comando seria melhor pois ai nгo teria o perigo de alguйm ferrar o servidor