[Ajuda] setimer
#1

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?
Reply
#2

o SetTimer que falhou no jogo?
ou deu erro no GM?
Reply
#3

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");
}
Reply
#4

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;
    }
Reply
#5

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;
    }
Reply
#6

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.
Reply
#7

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
Reply
#8

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 {
Reply
#9

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+!
Reply
#10

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 *-*

\/
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)