[AJUDA]/Relatorio com Settimer
#1

Alguem pode ajudar? eu tentei fazer + n deu mt certo entao deixei desligado, eu queria q o settimer fosse por id, tipo tal player mando relato ae so depois de 8 segundos ele pode manda denovo + quem nao mando relato pode manda entendeu? tipo nao kero q tenha apenas um relato a cada 8 segundos + q cada player so mande 1 a cada 8 segundos igual alguns gms de rpg +conhecidos bpg bpf e etc

pawn Код:
if(strcmp(cmd, "/relatorio", true) == 0 || strcmp(cmd, "/relato", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(gPlayerLogged[playerid] == 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "Vocк nгo estб logado!");
                return 1;
            }
            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: /relatorio [texto]");
                return 1;
            }
            if(TentouDivulgar(result))
            {
                if(cdivulgar[playerid] >= 6)
                {
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Cuidado, Poderб ser banido.");
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Evite digitar muitos nъmeros consecutivos.");
                    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                    Kick(playerid);
                }
                GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
                format(string, 128, "AdmAviso: [%d]%s tentou divulgar: %s.",playerid,playername,result);
                ABroadCast(COLOR_YELLOW,string,1);
                DivulgouLog(string);
                cdivulgar[playerid] += 1;
                return 1;
            }
            /*if(pMandoRelato[playerid] == 1)
            {
                SendClientMessage(playerid,COLOR_GRAD2,"Espere 8 segundos para poder mandar o relatorio novamente!");
                return 1;
            }*/

            if(PlayerInfo[playerid][pVIP] == 1)
            {
                new lol;
                lol = PlayerInfo[playerid][pVIP];
                format(string, sizeof(string), "==> Relatуrio VIP de %s - ID[%d]: %s <==", sendername, playerid, lol, (result));
                ABroadCast(COR_PRATA,string,1);
                SendClientMessage(playerid, COLOR_YELLOW, "Seu relatуrio VIP foi enviado aos admins, aguarde uma resposta...");
                //pMandoRelato[playerid] = 1;
                TempoRelato = SetTimer("MandoRelato", 7000, 0);
            }
            else
            {
                format(string, sizeof(string), "==> Relatуrio de %s(%d): %s <==", sendername, playerid, (result));
                ABroadCast(0xFFFF66FF,string,1);
                SendClientMessage(playerid, COLOR_YELLOW, "Seu relatуrio foi enviado aos admins, aguarde uma resposta...");
                //pMandoRelato[playerid] = 1;
                TempoRelato = SetTimer("MandoRelato", 8000, 0);
            }
        }
        return 1;
    }
Reply
#2

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

new TimerRelato;
new TempoRelato[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" CidadeNovaRP OWNED");
    print("--------------------------------------\n");
    return 1;
}

forward RelatarN(playerid);
public RelatarN(playerid)
{
    if ((TempoRelato[playerid]) >= 1)
    {
        TempoRelato[playerid] --;
    }
    else if ((TempoRelato[playerid]) <= 0)
    {
        SendClientMessage(playerid, 0xF68E00F6, "Vocк jб pode usar o Comando: /relatorio novamente!");
        KillTimer(TimerRelato);
        TempoRelato[playerid] = 0;
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmd, "/relatorio", true) == 0 || strcmp(cmd, "/relato", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if ((TempoRelato[playerid]) >= 1)
            {
                TempoRelato[playerid] --;
                format(string, sizeof(string), "Faltam %d segundos para usar este Comando novamente.", TempoRelato[playerid]);
                SendClientMessage(playerid, COLOR_GREY, string);
                return 1;
            }
            if(gPlayerLogged[playerid] == 0)
            {
                SendClientMessage(playerid, COLOR_GREY, "Vocк nгo estб logado!");
                return 1;
            }
            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: /relatorio [texto]");
                return 1;
            }
            if(TentouDivulgar(result))
            {
                if(cdivulgar[playerid] >= 6)
                {
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Cuidado, Poderб ser banido.");
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Evite digitar muitos nъmeros consecutivos.");
                    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                    Kick(playerid);
                }
                GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
                format(string, 128, "AdmAviso: [%d]%s tentou divulgar: %s.",playerid,playername,result);
                ABroadCast(COLOR_YELLOW,string,1);
                DivulgouLog(string);
                cdivulgar[playerid] += 1;
                return 1;
            }
            /*if(pMandoRelato[playerid] == 1)
            {
                SendClientMessage(playerid,COLOR_GRAD2,"Espere 8 segundos para poder mandar o relatorio novamente!");
                return 1;
            }*/

            if(PlayerInfo[playerid][pVIP] == 1)
            {
                new lol;
                lol = PlayerInfo[playerid][pVIP];
                format(string, sizeof(string), "==> Relatуrio VIP de %s - ID[%d]: %s <==", sendername, playerid, lol, (result));
                ABroadCast(COR_PRATA,string,1);
                SendClientMessage(playerid, COLOR_YELLOW, "Seu relatуrio VIP foi enviado aos admins, aguarde uma resposta...");
                //pMandoRelato[playerid] = 1;
                TempoRelato = SetTimer("MandoRelato", 7000, 0);
            }
            else
            {
                format(string, sizeof(string), "==> Relatуrio de %s(%d): %s <==", sendername, playerid, (result));
                ABroadCast(0xFFFF66FF,string,1);
                SendClientMessage(playerid, COLOR_YELLOW, "Seu relatуrio foi enviado aos admins, aguarde uma resposta...");
                //pMandoRelato[playerid] = 1;
                TempoRelato = SetTimer("MandoRelato", 8000, 0);
            }
        }
        return 1;
    }
    return 0;
}
Reply
#3

tendi nd --*
Reply
#4

Quote:
Originally Posted by Luiiz
Посмотреть сообщение
tendi nd --*
Coloca que vai dar , rlx
Reply
#5

onde bota isso?
pawn Код:
forward RelatarN(playerid);
public RelatarN(playerid)
{
    if ((TempoRelato[playerid]) >= 1)
    {
        TempoRelato[playerid] --;
    }
    else if ((TempoRelato[playerid]) <= 0)
    {
        SendClientMessage(playerid, 0xF68E00F6, "Vocк jб pode usar o Comando: /relatorio novamente!");
        KillTimer(TimerRelato);
        TempoRelato[playerid] = 0;
    }
    return 1;
}
Reply
#6

pega ai:

pawn Код:
//no topo do gm:
new timerrelato[MAX_PLAYERS];
new TempoRelato[MAX_PLAYERS]; // talvez vc tenha uma var com nome TempoRelato, deverб apaga-la e por essa.


//no comando, substitui por esse:
if(strcmp(cmd, "/relatorio", true) == 0 || strcmp(cmd, "/relato", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_GREY, "Vocк nгo estб logado!");
            if(timerrelato[playerid] == 1) return SendClientMessage(playerid, COLOR_GREY, "Vocк sу poderб enviar outro relatorio dentro de 8 segundos");
            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)) return SendClientMessage(playerid, COLOR_GRAD2, "USE: /relatorio [texto]");

            if(TentouDivulgar(result))
            {
                if(cdivulgar[playerid] >= 6)
                {
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Cuidado, Poderб ser banido.");
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Evite digitar muitos nъmeros consecutivos.");
                    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                    Kick(playerid);
                }
                GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
                format(string, 128, "AdmAviso: [%d]%s tentou divulgar: %s.",playerid,playername,result);
                ABroadCast(COLOR_YELLOW,string,1);
                DivulgouLog(string);
                cdivulgar[playerid] += 1;
                return 1;
            }

            if(PlayerInfo[playerid][pVIP] == 1)
            {
                new lol;
                lol = PlayerInfo[playerid][pVIP];
                format(string, sizeof(string), "==> Relatуrio VIP de %s - ID[%d]: %s <==", sendername, playerid, lol, (result));
                ABroadCast(COR_PRATA,string,1);
                SendClientMessage(playerid, COLOR_YELLOW, "Seu relatуrio VIP foi enviado aos admins, aguarde uma resposta...");
                TempoRelato[playerid] = SetTimer("MandouRelato", 7000, false, "i",playerid);
                timerrelato[playerid] = 1;
            }
            else
            {
                format(string, sizeof(string), "==> Relatуrio de %s(%d): %s <==", sendername, playerid, (result));
                ABroadCast(0xFFFF66FF,string,1);
                SendClientMessage(playerid, COLOR_YELLOW, "Seu relatуrio foi enviado aos admins, aguarde uma resposta...");
                TempoRelato[playerid] = SetTimerEx("MandouRelato", 8000, false,"i", playerid);
                timerrelato[playerid] = 1;
            }
        }
        return 1;
    }
   

//no final do gm. depois da ultima linha
forward MandouRelato (playerid);
public MandouRelato (playerid)
{
    timerrelato[playerid] = 0;
    KillTimer(TempoRelato[playerid]);
}
@edit, arrumei uma coisinha q tinha esquecido.
Reply
#7

Quote:
Originally Posted by Luiiz
Посмотреть сообщение
onde bota isso?
pawn Код:
forward RelatarN(playerid);
public RelatarN(playerid)
{
    if ((TempoRelato[playerid]) >= 1)
    {
        TempoRelato[playerid] --;
    }
    else if ((TempoRelato[playerid]) <= 0)
    {
        SendClientMessage(playerid, 0xF68E00F6, "Vocк jб pode usar o Comando: /relatorio novamente!");
        KillTimer(TimerRelato);
        TempoRelato[playerid] = 0;
    }
    return 1;
}
No Final do GM ;*
Reply
#8

simples:

pawn Код:
new tempoRelatorio[MAX_PLAYERS];

// no comando /relatorio

if(gettime() < tempoRelatorio[playerid]) return SendClientMessage(playerid, -1, "Aguarde TEMPO para usar o comando novamente.");
tempoRelatorio[playerid] = gettime()+TEMPO(EM SEGUNDOS);

// Pronto.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)