28.04.2012, 02:17
(
Последний раз редактировалось steki.; 28.04.2012 в 15:25.
)
IntroduзгoTodos 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.
FuncionalidadesO 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)
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;
}
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;
}