SA-MP Forums Archive
[Pedido] Anti CMD Flood - 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: [Pedido] Anti CMD Flood (/showthread.php?tid=535131)



Anti CMD Flood - Julinhu - 02.09.2014

Galera eu queria algo que impedisse o player floodar comandos.

Tipo ele faz Flood e retorna uma mensagem pra ele. Pare de floodar comandos, ai se ele flooda mais uma vez ele fique 1 minuto proibido de usar qualquer comando do servidor. Tem como isso?

Uso ZCMD.


Re: Anti CMD Flood - Macintosh - 02.09.2014

pawn Код:
new comandoDigitado[MAX_PLAYERS][128];
new comandoTempo[MAX_PLAYERS] = -1;

//OnPlayerCommandText
public OnPlayerCommandText(playerid, cmdtext[]) {
    if(!strcmp(cmdtext, comandoDigitado[playerid], true) && comandoTempo[playerid] < gettime())  {
        SendClientMessage(playerid, -1, "Aguarde 5 segundos para usar esse comando novamente.");
        return 1;
    }
    format(comandoDigitado[playerid], 128, "%s", cmdtext);
    comandoTempo[playerid] = gettime()+5;

    return ;
}
Cуdigo feito pelo Ricop522.

pawn Код:
//No Topo do GM:

new Comandos[MAX_PLAYERS][20];
new FloodComandos[MAX_PLAYERS];


//No comeзo do OnPlayerCommandText:

new ComandoAtual[20];
    new Parametro;
    ComandoAtual = strtok(cmdtext, Parametro);
    if(!strcmp(ComandoAtual, Comandos[playerid], true) && strlen(Comandos[playerid]))
    {
        FloodComandos[playerid]++;
        SendClientMessage(playerid, 0x33CCFFAA, "Proibido flood em comandos !");
        if(FloodComandos[playerid] == 3)
        {
            Comandos[playerid] = ("");
            FloodComandos[playerid] = 0;
            new STR[65];
            new NickName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, NickName, MAX_PLAYER_NAME);
            format(STR, 65, "%s Foi kickado por floodar nos comandos!", NickName);
            SendClientMessageToAll(0xFF0000AA, STR);
            Kick(playerid);
        }
        return 1;
    }
    else
    {
        FloodComandos[playerid] = 0;
    }
    format(Comandos[playerid], 20, "%s", ComandoAtual);



//E, se a funзгo strtok nгo estiver declarada, no Final do GM:

stock strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }
    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Cуdigo feito pelo rjjj.


Re: Anti CMD Flood - Bruno13 - 02.09.2014

Use o search...

Quote:
Originally Posted by ViniBorn
Посмотреть сообщение
pawn Код:
new Flood[MAX_PLAYERS];
public OnPlayerCommandReceived(playerid, cmdtext[])
{

    if(Flood[playerid] > GetTickCount())
        return SendClientMessage(playerid, -1, "Proibido flood de comandos."), 0;

    Flood[playerid] = GetTickCount() + 1000;
    return true;
}



Re: Anti CMD Flood - Julinhu - 02.09.2014

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Use o search...
Quem disse que eu nгo usei

Se vocк parar pra ver nesse cуdigo, se o player usar outros cmds, ele vai receber a mensagem, quero fazer com que ele sу receba a mensagem se usar o mesmo comando.

Quanto aos outros cуdigos vou analisar e volto aqui


Obrigado


Re: Anti CMD Flood - Spectral - 02.09.2014

E se for para zcmd? Funciona tambйm?


Re: Anti CMD Flood - Julinhu - 03.09.2014

Acho que esses sгo para strcmp, precisava em ZCMD


Re: Anti CMD Flood - Ley - 03.09.2014

Se for para um comando sу, basta utilizar um SetTimerEx + Booleana.

PHP код:
new bool:UsouComando[MAX_PLAYERS];
CMD:virilha(playerid)
{
   if(
UsouComando[playerid] != false) return SendClientMessage(playerid, -1"Aguarde para digitar esse comando novamente");
   
SetTimerEx("Comando"10000,false"i"playerid); // Intervalo de 10 segundos
   
UsouComando[playerid] = true// Ativando a booleana
   // Resto do cуdigo
   
return 1;
}
forward Comando(playerid);
public 
Comando(playerid)
{
   
UsouComando[playerid] = false// Desativa a booleana
   
SendClientMessage(playerid, -1"Jб pode utilizar o comando virilha");
   return 
1;

Uma boa madrugada.