Vamos cria-la com o nome Spamming, Essa variável armazenará o timestamp do jogador:
- Código:
new Spamming[MAX_PLAYERS];
Após criar nossa variável, precisamos criar nosso algoritimo em que faz a verificação para saber se o jogador realizou flood ou spam:
- Código:
if((gettime() - Spamming[playerid]) <= 2 && Spamming[playerid])
{
return SendClientMessage(playerid, -1, "[Erro]: Sistema anti Spam/Flood");
}
Spamming[playerid] = gettime();
Quando o player digita algum comando ele verifica na condição se a variável Spamming for diferente de 0 e o timestamp atual subtraído pelo timestamp salvo na variável Spamming for menor ou igual a 2 significa que o jogador está fazendo SPAM. Caso o jogador não estiver fazendo SPAM, ele armazena na variável Spamming o timestamp atual.
- Código:
/*
Na condição a seguir, é realizado uma verificação para saber se a variável Spamming é diferente de 0
e também para saber se o timestamp atual subtraído pelo timestamp da última vez que ele digitou algum comando
é menor ou igual a 2. Caso for menor ou igual a 2 ele manda a mensagem.
*/
if((gettime() - Spamming[playerid]) <= 2 && Spamming[playerid])
{
// Mensagem informando que o jogador cometeu SPAM:
return SendClientMessage(playerid, -1, "[Erro]: Sistema anti Spam/Flood");
}
/*
Caso fizer mais que 2 segundos que o jogador digitou algum comando, ele apenas armazena o timestamp
na variável Spamming.
*/
Spamming[playerid] = gettime();
Este é um exemplo muito simples, envolve mais questão de lógica do que de funções. Lembrando que você pode utilizar este anti-spam/anti-flood em qualquer parte do seu gamemode:
Caso você use ZCMD ou Y_CMD
- Código:
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if((gettime() - Spamming[playerid]) <= 2 && Spamming[playerid])
{
return SendClientMessage(playerid, -1, "[Erro]: Sistema anti Spam/Flood");
}
Spamming[playerid] = gettime();
return 1;
}
Em STRCMP
- Código:
public OnPlayerCommandText(playerid, cmdtext[])
{
if((gettime() - Spamming[playerid]) <= 2 && Spamming[playerid])
{
return SendClientMessage(playerid, -1, "[Erro]: Sistema anti Spam/Flood");
}
Spamming[playerid] = gettime();
return 1;
}
Tutorial por:
zSuYaNw