[Pedido] Sistema ANTI-AFK automatico
#5

Mas pode haver um caso em que ele esteja sу a escrever(falar) parado! Isso irб expulsб-lo

Fiz este cуdigo (Nгo foi experimentado):
PHP код:
#include <a_samp> // ISTO Й FUNDAMENTAL TER :D

#define TEMPOMAX_AFK 60*5 // O Tempo й em segundos nгo em milisegundos. Ex: 60 = 1 minuto, 60*5 = 300seg (5 Minutos).

new VerificarAFK[MAX_PLAYERS], Float:PosicaoDoJogador[MAX_PLAYERS][3], TimerAFK[MAX_PLAYERS], bool:JogadorFalou[MAX_PLAYERS];

public 
OnPlayerConnect(playerid// public Para ver se o jogador conectou-se
{
    
JogadorFalou[playerid] = false;
    
VerificarAFK[playerid] = 0// Pфr isto para manter a certeza que ele entrou agora (se nгo serб expulso)
    
TimerAFK[playerid] = SetTimerEx("AntiAFK"1000true"i"playerid); // AFK Timer
}

public 
OnPlayerDisconnect(playeridreason// Isto verifica se o jogador saiu do servidor
{
    
JogadorFalou[playerid] = false// Sу para verificar que o jogador jб nгo fala
    
VerificarAFK[playerid] = 0// Pфr isto para manter a certeza que o proximo jogador com o mesmo ID nгo seja expulso mal entre.
    
KillTimer(TimerAFK[playerid]); // O jogador jб nгo estб presente entre nуs por isso tira-lhe o timer!
}

public 
OnPlayerText(playeridtext[]) // public Para ver se o jogador falou e o quк!
{
    
JogadorFalou[playerid] = true// O jogador falou - torna-se este valor verdadeiro
    
return 1// return 1; para deixar o jogador falar e que seja transmitido aos outros
}

forward Expulsar(playerid); 
public 
Expulsar(playerid// Isto serve para expulsar o jogador
{
    
Kick(playerid);
}

forward AntiAFK(playerid);
public 
AntiAFK(playerid)
{
    
// PASSO 1: Verificar se os jogadores estгo na mesma posiзгo
    
new Float:xFloat:yFloat:z;
    
GetPlayerPos(playeridxyz); // No inнcio o valor de PosicaoDoJogador й 0.0 por isso ele nгo vai ter aumento no VerificarAFK
    
if((PosicaoDoJogador[playerid][0] == x) && (PosicaoDoJogador[playerid][1] == y) && (PosicaoDoJogador[playerid][2] == z)) // Estгo parados?
    
{
        if(
JogadorFalou[playerid] == false// O jogador estб parado e nгo fala
        
{
            
VerificarAFK[playerid]++; // Aumentar ao valor entгo...
            
if(VerificarAFK[playerid] >= TEMPOMAX_AFK// O jogador ultrapassou o valor mбximo de inatividade no servidor
            
{
                
SendClientMessage(playerid0xFF0000FF"[AFK]: {FFFFFF}Vocк estб expulso do servidor por ficar muito tempo parado."); // A mensagem
                
SetTimerEx("Expulsar"100false"i"playerid); // Este timer existe sу mesmo para que o jogador receba a mensagem de que estб expulso
            
}
        }
        else 
// O jogador estб parado mas estб a falar
        
{
            
VerificarAFK[playerid] = 0// Reset
            
JogadorFalou[playerid] = false// O jogador jб nгo fala por isso й melhor tornar este valor em falso
        
}
    }
    else 
// Nгo estгo? Й porque se estгo a mexer, VerificarAFK = 0;
    
{
        
PosicaoDoJogador[playerid][0] = x// Valor de X
        
PosicaoDoJogador[playerid][1] = y// Valor de Y
        
PosicaoDoJogador[playerid][2] = z// Valor de Z
        
VerificarAFK[playerid] = 0// Reset
        
JogadorFalou[playerid] = false// Sу para ter a certeza que ele nгo falou
    
}

Reply


Messages In This Thread
Sistema ANTI-AFK automatico - by BobbMarley - 18.09.2016, 18:08
Re: Sistema ANTI-AFK automatico - by Carlos001 - 19.09.2016, 00:00
Re: Sistema ANTI-AFK automatico - by ClaudineiCDS - 20.09.2016, 03:28
Re: Sistema ANTI-AFK automatico - by StreetGT - 20.09.2016, 17:08
Re: Sistema ANTI-AFK automatico - by Nikkel - 20.09.2016, 18:04
Re: Sistema ANTI-AFK automatico - by BobbMarley - 20.09.2016, 18:48
Re: Sistema ANTI-AFK automatico - by ClaudineiCDS - 20.09.2016, 22:54
Re: Sistema ANTI-AFK automatico - by StreetGT - 21.09.2016, 01:10

Forum Jump:


Users browsing this thread: 1 Guest(s)