Anti flood dominado -
nasser - 15.09.2016
#resolvido
Re: Anti flood dominado -
nasser - 15.09.2016
#Resolvido tinha errado no timer agora sim estб para 3 segundos.
Re: Anti flood dominado -
RodrigoMSR - 17.09.2016
Muito mais fбcil e otimizado usando
gettime():
Код:
new AntiFloodCommand[MAX_PLAYERS][2];
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(gettime() - AntiFloodCommand[playerid][0] >= 2)
{
AntiFloodCommand[playerid][1] = 0;
AntiFloodCommand[playerid][0] = gettime();
}
AntiFloodCommand[playerid][1]++;
if(AntiFloodCommand[playerid][1] > 10)
{
SendClientMessage(i, -1, "Vocк foi kickado por floodar 10 comandos em 2 segundos, os admins foram avisados !");
Kick(i);
}
return 1;
}
Re: Anti flood dominado -
nasser - 17.09.2016
Galera vlw mбs tipo eu n uso zcmd e tambйm nгo й um flood do player falando й um flood que havia de um bug do server sacou? mбs vlw aн obg
Re: Anti flood dominado -
RodrigoMSR - 18.09.2016
XandyMello, como um timer fazendo um loop pode ser mais rбpido do que esse cуdigo? Ainda pode dar falhas, como se o timer estiver na metade do tempo e aн nгo sгo mais 2 segundos e sim 1 (mas isso й desprezнvel), o delay atй chegar no ID do jogador que deu o flood, ainda hб o lag do servidor que pode atrasar mais ainda o timer, com esses atrasos o cheater jб teria feito um flood muito maior, jб com o meu cуdigo nada disso acontece porque quando chega em 10 comandos seguidos й kickado instantaneamente e nгo hб como "floodar" mais que isso. Nгo consigo entender como isso pode ser mais rбpido e de mesma eficбcia que esse meu cуdigo.
Re: Anti flood dominado -
RodrigoMSR - 19.09.2016
Estou falando rбpido e eficaz para o servidor e nгo para quem escreve o cуdigo, o maior problema й que o jogador poderб digitar quantos comandos imaginar nesse espaзo de 2 segundos que o timer dб a ele antes de fazer a verificaзгo, jб o meu cуdigo nгo deixa passar de 10 comandos (isso nгo faria diferenзa nesse caso, mas pense se fosse um anti-flood de mensagens no chat). Quanto ao atraso adicionado ao timer pelo lag do servidor й realmente quase inexistente, vocк tem razгo. Sobre o foreach, nunca usei mas acho que (no caso para players) seria a mesma coisa que um loop normal usando a definiзгo MAX_PLAYERS (redefinida conforme o real nъmero) e a funзгo IsPlayerConnected, devo estar muito errado.
Re: Anti flood dominado -
nasser - 19.09.2016
Eu nem tava falando de flood em comandos mбs blz, ADM pode fechar aqui se quiser ;-;
Re: Anti flood dominado -
F1N4L - 19.09.2016
Quote:
Originally Posted by RodrigoMSR
Muito mais fбcil e otimizado usando gettime():
Код:
new AntiFloodCommand[MAX_PLAYERS][2];
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(gettime() - AntiFloodCommand[playerid][0] >= 2)
{
AntiFloodCommand[playerid][1] = 0;
AntiFloodCommand[playerid][0] = gettime();
}
AntiFloodCommand[playerid][1]++;
if(AntiFloodCommand[playerid][1] > 10)
{
SendClientMessage(i, -1, "Vocк foi kickado por floodar 10 comandos em 2 segundos, os admins foram avisados !");
Kick(i);
}
return 1;
}
|
@Edit
Testou o cуdigo? Toda a vez que for realizado um comando, a array AntiFloodCommand[playerid][1] vai aumentar independentemente se for digitado em mais ou menos de 2 segundos.
E sim, este modo й o mais otimizado se nгo quiser mostrar quantos segundos faltam para digitar.
Re: Anti flood dominado -
nasser - 19.09.2016
Nгo testei nada que mandaram aqui porque pelo o que eu vi й para comandos e para dominar uma base nгo й necessario um comando, e o que eu fiz foi sу criar um timer
Re: Anti flood dominado -
RodrigoMSR - 19.09.2016
Quote:
Originally Posted by F1N4L
@Edit
Testou o cуdigo? Toda a vez que for realizado um comando, a array AntiFloodCommand[playerid][1] vai aumentar independentemente se for digitado em mais ou menos de 2 segundos.
E sim, este modo й o mais otimizado se nгo quiser mostrar quantos segundos faltam para digitar.
|
Aumenta sim, mas ao passar de 2 segundos ele zera a array logo acima e assim recomeзa a contagem.