[Pedido] Anti Flood com Kick player.
#1

Olб, estava a procura de algum script que fise-se com que se um player digita-se 3 mensagens ( independentemente se for iguais ou nгo ) rapidamente em menos de 3 segundos ( Exemplo ), ele fosse kickado do servidor por motivo de FLOOD.

Alguйm poderia me ajudar?
Reply
#2

pawn Код:
forward TextoZerado(playerid);

new FloodMsg[MAX_PLAYERS];

//OnPlayerText
FloodMsg[playerid]++;
TimerText = SetTimerEx("TextoZerado", 3000, true, "i", playerid);
if(FloodMsg[playerid] == 3)
{
     SendClientMessage(playerid, -1, "Kickado Por Flood");
     Kick(playerid);
     return 1;
}

//Public

public TextoZerado(playerid)
{
      FloodMsg[playerid] = 0;
      KillTimer(TimerText);
      return 1;
}
Acho eu que poderia ser assim, fiz na hora aqui, corrijam-me se estiver errado
Reply
#3

Eu normalmente faria com gettime();

pawn Код:
new canSpeak[MAX_PLAYERS],
    floodCount[MAX_PLAYERS];

public OnPlayerText(playerid, text[])
{
    if(gettime() >= canSpeak[playerid] && canSpeak[playerid] > 0)
        canSpeak[playerid] = 0;
    else
    {
        floodCount[playerid]++;
        if(floodCount[playerid] == 3)
            Kick(playerid);
    }
    canSpeak[playerid] = gettime() + 3;
    return 1;
}
Nem testei, caso for usar e aponte erros, avise-me.
Reply
#4

Quote:
Originally Posted by Pedro_Miranda
Посмотреть сообщение
Eu normalmente faria com gettime();

pawn Код:
new canSpeak[MAX_PLAYERS],
    floodCount[MAX_PLAYERS];

public OnPlayerText(playerid, text[])
{
    if(gettime() >= canSpeak[playerid] && canSpeak[playerid] > 0)
        canSpeak[playerid] = 0;
    else
    {
        floodCount[playerid]++;
        if(floodCount[playerid] == 3)
            Kick(playerid);
    }
    canSpeak[playerid] = gettime() + 3;
    return 1;
}
Nem testei, caso for usar e aponte erros, avise-me.
Nem erro da... Da crash direto '-'
Reply
#5

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
pawn Код:
forward TextoZerado(playerid);

new FloodMsg[MAX_PLAYERS];

//OnPlayerText
FloodMsg[playerid]++;
TimerText = SetTimerEx("TextoZerado", 3000, true, "i", playerid);
if(FloodMsg[playerid] == 3)
{
     SendClientMessage(playerid, -1, "Kickado Por Flood");
     Kick(playerid);
     return 1;
}

//Public

public TextoZerado(playerid)
{
      FloodMsg[playerid] = 0;
      KillTimer(TimerText);
      return 1;
}
Acho eu que poderia ser assim, fiz na hora aqui, corrijam-me se estiver errado
Irei testar...

Funfou o/ obrigado! Rep+
Reply
#6

https://sampforum.blast.hk/showthread.php?tid=354667
Reply
#7

Olha na minha opiniгo й melhor deixar o player calado do que kikar...
Eu acho melhor ao invez de kikar, vocк "muta" ele por 1 minuto ou menos...
Reply
#8

Quote:
Originally Posted by Mercurio
Посмотреть сообщение
Irei testar...

Funfou o/ obrigado! Rep+
Nгo use settimer, pois o mesmo poderб dar lerdeza ao servidor.

pawn Код:
new Flooding[MAX_PLAYERS char];
stock IsPlayerFlooding(pid, maxtime)
{
        if(tickcount() - Flooding{pid} < maxtime * 1000)
            return Flooding{pid} = tickcount(), true;
    return Flooding{pid} = tickcount(), false;
}
Reply
#9

mt bom gatin.

@edit: o gatin, cade duvida aki, poderia implementar o kick pra mim ? obrigado
Reply
#10

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Nгo use settimer, pois o mesmo poderб dar lerdeza ao servidor.

pawn Код:
new Flooding[MAX_PLAYERS char];
stock IsPlayerFlooding(pid, maxtime)
{
        if(tickcount() - Flooding{pid} < maxtime * 1000)
            return Flooding{pid} = tickcount(), true;
    return Flooding{pid} = tickcount(), false;
}
E eu colocaria isso no OnPlayerText?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)