SA-MP Forums Archive
[Ajuda] Sistema de AFK - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Sistema de AFK (/showthread.php?tid=376629)



Sistema de AFK - Maklister - 11.09.2012

Nao sei por que o Fail, simplismente ele fica em AFK caso fique parado mais de 1 minuto, penso que o erro esteje na public porem nao detectei o mesmo


pawn Код:
#define TEMPO_AFK              5

new AFK[MAX_PLAYERS];

enum pPos
{
    Float:LastX,
    Float:LastY,
    Float:LastZ,
}
new PlayerLastPos[MAX_PLAYERS][pPos], PlayerAfkTicks[MAX_PLAYERS], Float:PlayerCurrentPos[3];

forward TempoAfk(playerid);
public TempoAfk(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        GetPlayerPos(i, PlayerCurrentPos[0], PlayerCurrentPos[1], PlayerCurrentPos[2]);
        if(!floatcmp(PlayerCurrentPos[0], PlayerLastPos[i][LastX]) && !floatcmp(PlayerCurrentPos[1], PlayerLastPos[i][LastY]))
        {
            PlayerAfkTicks[i] ++;
        }
        else
        {
            PlayerAfkTicks[i] = 0;
        }
        PlayerLastPos[i][LastX] = PlayerCurrentPos[0];
        PlayerLastPos[i][LastY] = PlayerCurrentPos[1];
        PlayerLastPos[i][LastZ] = PlayerCurrentPos[2];

        if(PlayerAfkTicks[i] == TEMPO_AFK*60)
        {
            AFK[i] = 1;
            SendClientMessage(i, VERMELHO_ESCURO, "[ ANTI AFK ] Voce foi Bloqueado de upar por suspeita de Ausencia");
            TextDrawShowForPlayer(i,TextAfk1);
            TextDrawShowForPlayer(i,TextAfk2);
            TextDrawShowForPlayer(i,TextAfk3);
        }
    }
    return 1;
}



Re: Sistema de AFK - Spectro_BR - 11.09.2012

olha,nгo entendi a sua duvida,mais dк uma olhada em outros sitemas anti afk..
https://sampforum.blast.hk/showthread.php?tid=139081
https://sampforum.blast.hk/showthread.php?tid=320242
https://sampforum.blast.hk/showthread.php?tid=171808
https://sampforum.blast.hk/showthread.php?tid=142409


Re: Sistema de AFK - Maklister - 11.09.2012

Quote:
Originally Posted by Spectro_BR
Посмотреть сообщение
Rsrs minha duvida e que no meu caso, o player somente entra em AFK caso fique muito tempo parado, assim vai somando, so que nao ta dando certo, simplismente fica parado muito tempo e nao entro em estado AFK


Re: Sistema de AFK - Victor' - 11.09.2012

Qual o intervalo do timer?


Re: Sistema de AFK - Maklister - 11.09.2012

Para aumentar o PlayerAfkTicks

pawn Код:
TEMPO_AFK * 60

// Tempo AFK = 5



Re: Sistema de AFK - Victor' - 11.09.2012

Tente:

pawn Код:
#define TEMPO_AFK              5 // Em minutos

new AFK[MAX_PLAYERS];

enum pPos
{
    Float:LastX,
    Float:LastY,
    Float:LastZ,
}
new PlayerLastPos[MAX_PLAYERS][pPos], PlayerAfkTicks[MAX_PLAYERS], Float:PlayerCurrentPos[3];


forward TempoAfk();
public TempoAfk()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        GetPlayerPos(i, PlayerCurrentPos[0], PlayerCurrentPos[1], PlayerCurrentPos[2]);
        if(!floatcmp(PlayerCurrentPos[0], PlayerLastPos[i][LastX]) && !floatcmp(PlayerCurrentPos[1], PlayerLastPos[i][LastY]))
        {
            PlayerAfkTicks[i] ++; // Passado 1 segundo aumenta o contador
        }
        else
        {
            PlayerAfkTicks[i] = 0;
        }
        PlayerLastPos[i][LastX] = PlayerCurrentPos[0];
        PlayerLastPos[i][LastY] = PlayerCurrentPos[1];
        PlayerLastPos[i][LastZ] = PlayerCurrentPos[2];

        if(PlayerAfkTicks[i] == TEMPO_AFK * 60000) // assim fica 5 minutos
        {
            AFK[i] = 1;
            SendClientMessage(i, VERMELHO_ESCURO, "[ ANTI AFK ] Voce foi Bloqueado de upar por suspeita de Ausencia");
            TextDrawShowForPlayer(i,TextAfk1);
            TextDrawShowForPlayer(i,TextAfk2);
            TextDrawShowForPlayer(i,TextAfk3);
        }
    }
    return 1;
}

// OnGameModeInit
SetTimer("TempoAfk", 1000, true);



Re: Sistema de AFK - Maklister - 11.09.2012

Quote:
Originally Posted by Victor'
Посмотреть сообщение
Tente:

pawn Код:
#define TEMPO_AFK              5 // Em minutos

new AFK[MAX_PLAYERS];

enum pPos
{
    Float:LastX,
    Float:LastY,
    Float:LastZ,
}
new PlayerLastPos[MAX_PLAYERS][pPos], PlayerAfkTicks[MAX_PLAYERS], Float:PlayerCurrentPos[3];


forward TempoAfk();
public TempoAfk()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        GetPlayerPos(i, PlayerCurrentPos[0], PlayerCurrentPos[1], PlayerCurrentPos[2]);
        if(!floatcmp(PlayerCurrentPos[0], PlayerLastPos[i][LastX]) && !floatcmp(PlayerCurrentPos[1], PlayerLastPos[i][LastY]))
        {
            PlayerAfkTicks[i] ++; // Passado 1 segundo aumenta o contador
        }
        else
        {
            PlayerAfkTicks[i] = 0;
        }
        PlayerLastPos[i][LastX] = PlayerCurrentPos[0];
        PlayerLastPos[i][LastY] = PlayerCurrentPos[1];
        PlayerLastPos[i][LastZ] = PlayerCurrentPos[2];

        if(PlayerAfkTicks[i] == TEMPO_AFK * 60000) // assim fica 5 minutos
        {
            AFK[i] = 1;
            SendClientMessage(i, VERMELHO_ESCURO, "[ ANTI AFK ] Voce foi Bloqueado de upar por suspeita de Ausencia");
            TextDrawShowForPlayer(i,TextAfk1);
            TextDrawShowForPlayer(i,TextAfk2);
            TextDrawShowForPlayer(i,TextAfk3);
        }
    }
    return 1;
}

// OnGameModeInit
SetTimer("TempoAfk", 1000, true);
pawn Код:
forward TempoAfk();
public TempoAfk()
tem algum problema ficando assim ? pois no caso nao teria que ser em

pawn Код:
forward TempoAfk(playerid);
public TempoAfk(playerid)



Re: Sistema de AFK - Victor' - 11.09.2012

Quote:
Originally Posted by Murilo_sousa
Посмотреть сообщение
pawn Код:
forward TempoAfk();
public TempoAfk()
tem algum problema ficando assim ? pois no caso nao teria que ser em

pawn Код:
forward TempoAfk(playerid);
public TempoAfk(playerid)
Nгo hб necessidade de usar o argumento " playerid " jб que se trata de um loop na funзгo que verifica todos os ids, alйm de " playerid " nгo ser usado na funзгo.

Agora se vocк estб fazendo com argumentos, use SetTimerEx.


Re: Sistema de AFK - Maklister - 11.09.2012

Quote:
Originally Posted by Victor'
Посмотреть сообщение
Nгo hб necessidade de usar o argumento " playerid " jб que se trata de um loop na funзгo que verifica todos os ids, alйm de " playerid " nгo ser usado na funзгo.

Agora se vocк estб fazendo com argumentos, use SetTimerEx.
Testei e nao Funcionou =/