SA-MP Forums Archive
[Ajuda] setimer - 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)
+---- Thread: [Ajuda] setimer (/showthread.php?tid=289328)



[Ajuda] setimer - ceesar90 - 11.10.2011

Tava editando meu comando de relatorio aqui, e queria por 1 settimer de 5 secs, daн botei, mas quando fui testar nгo funcionou como eu queria, aqui vai:
pawn Код:
format(string, sizeof(string), "Relatorio de %s[%d]: %s", sendername,playerid, (result));
            ABroadCast(COLOR_ASKQ,string,1);
            SendClientMessage(playerid, COLOR_ASKQ, "Seu relatуrio foi enviado aos Admins.");
            SetTimerEx("temporelato",5000,0,"i",playerid); return SendClientMessage(playerid, COLOR_ASKQ, "Aguarde 5 segundos para mandar outro relatorio.");
Minha logica estб errada, correto?


Re: Dъvida besta sobre setimer - [BWL]DuST - 11.10.2011

o SetTimer que falhou no jogo?
ou deu erro no GM?


Re: Dъvida besta sobre setimer - WLSF - 11.10.2011

usa uma bool true/false para definir que estб em tempo de espera, ou em tempo livre...
pawn Код:
new bool:esperando[MAX_PLAYERS];

forward Tempo(playerid);
public Tempo(playerid)
{
    esperando[playerid] == false;
    return 1;
}

//no comando...
if(esperando[playerid] == false)
{
    //Executa o comando...
    esperando[playerid] = true;
    SetTimerEx("Tempo",5000,false,"i",playerid);
    return 1;
}
else
{
    SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");
}



Re: Dъvida besta sobre setimer - ceesar90 - 11.10.2011

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
usa uma bool true/false para definir que estб em tempo de espera, ou em tempo livre...
pawn Код:
new bool:esperando[MAX_PLAYERS];

forward Tempo(playerid);
public Tempo(playerid)
{
    esperando[playerid] == false;
    return 1;
}

//no comando...
if(esperando[playerid] == false)
{
    //Executa o comando...
    esperando[playerid] = true;
    SetTimerEx("Tempo",5000,false,"i",playerid);
    return 1;
}
else
{
    SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");
}
Terra.pwn(20035) : warning 225: unreachable code
Terra.pwn(20035) : error 029: invalid expression, assumed zero
Terra.pwn(58171) : warning 215: expression has no effect

Acho que botei em algum lugar errado, olha aqui como o comando ficou:
pawn Код:
if(strcmp(cmd, "/relato", true) == 0 || strcmp(cmd, "/rel", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        if(esperando[playerid] == false)
        {
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new length = strlen(cmdtext);
            while ((idx < length) && (cmdtext[idx] <= ' '))
            {
                idx++;
            }
            new offset = idx;
            new result[64];
            while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
            {
                result[idx - offset] = cmdtext[idx];
                idx++;
            }
            result[idx - offset] = EOS;
            if(!strlen(result))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /relato [texto]");
                return 1;
            }
            format(string, sizeof(string), "Relatorio de %s[%d]: %s", sendername,playerid, (result));
            ABroadCast(COLOR_ASKQ,string,1);
            SendClientMessage(playerid, COLOR_ASKQ, "Seu relatуrio foi enviado aos Admins.");
            esperando[playerid] = true;
            SetTimerEx("Tempo",5000,false,"i",playerid);
        return 1;
        else
{
    SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");
}
        }
        return 1;
    }



Re: [Ajuda] setimer - [O.z]Caroline - 11.10.2011

pawn Код:
if(strcmp(cmd, "/relato", true) == 0 || strcmp(cmd, "/rel", true) == 0)
    {
        if(esperando[playerid] == false)
        {
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new length = strlen(cmdtext);
            while ((idx < length) && (cmdtext[idx] <= ' '))
            {
                idx++;
            }
            new offset = idx;
            new result[64];
            while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
            {
                result[idx - offset] = cmdtext[idx];
                idx++;
            }
            result[idx - offset] = EOS;
            if(!strlen(result))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /relato [texto]");
                return 1;
            }
            format(string, sizeof(string), "Relatorio de %s[%d]: %s", sendername,playerid, (result));
            ABroadCast(COLOR_ASKQ,string,1);
            SendClientMessage(playerid, COLOR_ASKQ, "Seu relatуrio foi enviado aos Admins.");
            esperando[playerid] = true;
            SetTimerEx("Tempo",5000,false,"i",playerid);
            return 1;
        }
        SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");
        return 1;
    }



Re: [Ajuda] setimer - Pharrel - 11.10.2011

pawn Код:
new count[MAX_PLAYERS];//topo do GM
count[playerid] = GetTickCount();//quando ele mandar o relato
if(GetTickCount()-count[playerid] < 5000)
    return SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");//dentro do /re depois da chave {
Sem timer.


Re: [Ajuda] setimer - ceesar90 - 11.10.2011

Quote:
Originally Posted by Pharrel
Посмотреть сообщение
pawn Код:
new count[MAX_PLAYERS];//topo do GM
count[playerid] = GetTickCount();//quando ele mandar o relato
if(GetTickCount()-count[playerid] < 5000)
    return SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");//dentro do /re depois da chave {
Sem timer.
warning 219: local variable "count" shadows a variable at a preceding level


Re: [Ajuda] setimer - Pharrel - 11.10.2011

troca o nome da variavel count por qualquer outra coisa, por exemplo:

pawn Код:
new countRelato[MAX_PLAYERS];//topo do GM
countRelato[playerid] = GetTickCount();//quando ele mandar o relato
if(GetTickCount()-countRelato[playerid] < 5000)
    return SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");//dentro do /re depois da chave {



Re: [Ajuda] setimer - ceesar90 - 11.10.2011

Quote:
Originally Posted by Pharrel
Посмотреть сообщение
troca o nome da variavel count por qualquer outra coisa, por exemplo:

pawn Код:
new countRelato[MAX_PLAYERS];//topo do GM
countRelato[playerid] = GetTickCount();//quando ele mandar o relato
if(GetTickCount()-countRelato[playerid] < 5000)
    return SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");//dentro do /re depois da chave {
Valeu, funcionou! rep+!


Re: [Ajuda] setimer - [O.z]Caroline - 11.10.2011

se eu fosse vocк nгo ultilizaria GetTickCount

Код:
Important Note: GetTickCount will cause problems on servers with uptime of over 24 days (physical server, not SA:MP server) as GetTickCount will eventually warp past the integer size constraints
traduзгo:
Notнcia importante: GetTickCount causarб problemas em servidores quando passar de 24 horas (Servidor fнsico, nгo sa-mp server). como GetTickCount acabarб warp passado as restriзхes de tamanho inteiro.


Conclusгo
troque GetTickCount para Tickcount.
Exemplo:
pawn Код:
new countRelato[MAX_PLAYERS];//topo do GM

countRelato[playerid] = Tickcount();//quando ele mandar o relato

if(Tickcount()-countRelato[playerid] < 5000)
    return SendClientMessage(playerid,-1,"Vocк precisa esperar 5 segundos para mandar outro /relatorio");
Espero ter ajudado *-*

\/