[Include] Flood Control - Administre infinitas maneiras de floods em seu servidor!
#1

Introduзгo
Todos sabemos que a galerinha dos flooders jб teve uma boa diversгo causando com os RPGs (lol).
Esse script promete corrigir tanto flood de chat, quanto de comandos, kills e quaisquiser outras coisas. Basta configurar o script.
Funcionalidades
O script trata indiscriminadamente todo o tipo de 'input' gerado pelo player (com exceзгo do death flood). Excedendo os limites impostos pelo scripter, OnPlayerFlood й chamada.

OnPlayerFlood(playerid, source, row):
  • playerid - Auto explicativo
  • source - A origem. Pode ser tanto chat, comandos, quanto gerado pelo usuбrio
  • row - O nъmero de mensagens enviadas (agora que eu percebi que isto й um pouco redundante)
Exemplo:
pawn Код:
public OnPlayerFlood(playerid, source, row)
{
    if(source == FLOOD_SOURCE_DEATH)
        Ban(playerid);
    if(source == FLOOD_SOURCE_CHAT)
    {
        SendClientMessage(playerid, -1, "Hб uma tolerвncia de apenas " MAX_MESSAGES_PER_INTERVAL " mensagens a cada " FLOOD_NEW_ROW_INTERVAL "ms!");
    }
    return 1;
}
public OnPlayerText(playerid, text[])
{
    flood_MessageHandler(playerid, FLOOD_SOURCE_CHAT);
    return 1;
}
Lembrando que й preciso a funзгo flood_MessageHandler para ser 'contada' a mensagem.

flood_MessageHandler(playerid, source):
  • playerid - Auto explicativo
  • source - A origem, que serб mostrada no OnPlayerFlood, se exceder o mбximo de mensagens.

Para configurar, visite o codigo fonte do script. Й bem уbvio.
Ah. Isso nгo й tгo simples como uma mensagem a cada segundo. Vocк pode abrir uma tolerвncia de 10 mensagens por segundo, nгo deixando a jogabilidade chata, mas tambйm nгo fodendo com a porra toda.

E й bem recomendбvel banir logo o infeliz, se a resposta for FLOOD_SOURCE_DEATH.

Pastebin


Exemplo:
pawn Код:
#include <a_samp>
#include <fcontrol>

new gPlayerMutado[MAX_PLAYERS];

public OnPlayerText(playerid, text[])
{
    //  Faz com que seja contada essa mensagem e, caso extrapole o limite
    //  a OnPlayerFlood seja chamada
    flood_HandleMessage(playerid, FLOOD_SOURCE_CHAT);

    // Se o player ainda estб mutado
    if(gPlayerMutado[playerid] > gettime())
    {
        SendClientMessage(playerid, -1, "Vocк ainda estб mutado por flood!");
        return 0;
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    flood_HandleMessage(playerid, FLOOD_SOURCE_COMMAND);

    if(gPlayerMutado[playerid] > gettime())
    {
        SendClientMessage(playerid, -1, "Vocк ainda estб mutado por flood!");
        return 0;
    }

    // Comandos aqui
    if(!strcmp("/testeflood", cmdtext, true))
    {
        SendClientMessage(playerid, -1, "Este foi o /testeflood!");
    }
    return 0;
}

public OnPlayerFlood(playerid, source, row)
{
    // Se o player estб floodando fake deaths
    if(source == FLOOD_SOURCE_DEATH)
    {
        SendClientMessage(playerid, -1, "   - Vocк foi banido por death spam!");
        BanEx(playerid, "Death Spam");
    }
    // Se o player floodou tanto o chat, quando comando
    else if(source == FLOOD_SOURCE_CHAT || source == FLOOD_SOURCE_COMMAND)
    {
        SendClientMessage(playerid, -1, "Vocк foi mutado pelos prуximos 15 segundos por flood!");
        gPlayerMutado[playerid] = gettime() + 15;
    }
    return 1;
}
Dъvidas? Poste aqui!
Reply
#2

Fodastico cara,parabens,a lуgica ficou muito boa.
Reply
#3

Уtimo Gostei parabens :P
Reply
#4

Quote:
Originally Posted by Gustavo_Araujo
Посмотреть сообщение
Fodastico cara,parabens,a lуgica ficou muito boa.
Mais rбpido que eu o_O
Reply
#5

Gostei =)
Vocк utilizou TickCount no lugar de GetTickCount, isto pra min me fascina,
porque muitas pessoas usam GetTickCount nгo sabendo que ela prejudica
o servidor.

Bom trabalho.
Reply
#6

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Gostei =)
Vocк utilizou TickCount no lugar de GetTickCount, isto pra min me fascina,
porque muitas pessoas usam GetTickCount nгo sabendo que ela prejudica
o servidor.

Bom trabalho.
Os dois retornam o up-time do servidorl, tickcount vai causar os msm problemas que o GetTickCount quando ultrapassar os 32-bits.

Stewie, tenho de avisar sobre o Fake kill que direciona o playerid & o killerid na OnPlayerDeath.
Bom, acho que deve rever este script, eu jб vi o prуprio DM da FoCo ter problemas com esse fakekill, se o cara colocar para banir e um cara com esse cleo entrar ele poderб banir o servidor inteiro.
Reply
#7

Quote:
Originally Posted by Caio_Freeze
Посмотреть сообщение
eu nгo intendi como usa й so clocar a include e aquelas public no GM/FS e ja era?
Quote:
Originally Posted by Skream
Посмотреть сообщение
Os dois retornam o up-time do servidorl, tickcount vai causar os msm problemas que o GetTickCount quando ultrapassar os 32-bits.

Stewie, tenho de avisar sobre o Fake kill que direciona o playerid & o killerid na OnPlayerDeath.
Bom, acho que deve rever este script, eu jб vi o prуprio DM da FoCo ter problemas com esse fakekill, se o cara colocar para banir e um cara com esse cleo entrar ele poderб banir o servidor inteiro.
O GetTickCount retorna o tempo em ms da carga do kernel, enquanto o tickcount retorna a carga do servidor.

Atй onde eu saiba, nгo tem como morrer como se fosse outro player, mas meu script apenas detecta esse 'flood'. Se vocк quiser banir, fica a seu critйrio.
Reply
#8

Quote:
Originally Posted by Skream
Посмотреть сообщение
Os dois retornam o up-time do servidorl, tickcount vai causar os msm problemas que o GetTickCount quando ultrapassar os 32-bits.

Stewie, tenho de avisar sobre o Fake kill que direciona o playerid & o killerid na OnPlayerDeath.
Bom, acho que deve rever este script, eu jб vi o prуprio DM da FoCo ter problemas com esse fakekill, se o cara colocar para banir e um cara com esse cleo entrar ele poderб banir o servidor inteiro.
mais esse fake kill nгo й cleo й apenas um software.

@Stewie

Como uso ele em zcmd?
Reply
#9

Quote:
Originally Posted by Caio_Freeze
Посмотреть сообщение
mais esse fake kill nгo й cleo й apenas um software.

@Stewie

Como uso ele em zcmd?
Achei que era Cleo, mas na lуgica isso nгo faz a menor diferenзa.
Reply
#10

Quote:
Originally Posted by Caio_Freeze
Посмотреть сообщение
mais esse fake kill nгo й cleo й apenas um software.

@Stewie

Como uso ele em zcmd?
coloque flood_HandleMessage(playerid, FLOOD_SOURCE_COMMAND); em OnCommandRecieved.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)