SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    Tutorial Anti Flood Simples.

    avatar
    -
    SS - Membro de honra
    SS - Membro de honra


    Celular : -
    Mensagens : 2172
    Moedas : 7376
    Data de inscrição : 12/10/2015
    Idade : 73

    Tutorial Anti Flood Simples. Empty Tutorial Anti Flood Simples.

    Mensagem por - Ter 28 Jun 2016 - 16:04

    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

      Data/hora atual: Sex 19 Abr 2024 - 1:46