new Float:Posicoes[MAX_PLAYERS][6],TimerAFK[MAX_PLAYERS],TimerDis[MAX_PLAYERS],SAFK[MAX_PLAYERS];
//onplayerspawn
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,1887.4683,-2419.4358,13.5391);
if(TimerDis[playerid] == 0)
{
TimerDis[playerid] = 1;
TimerAFK[playerid] = SetTimerEx("AFK",5000,true,"i",playerid);
}
return 1;
}
//public
public AFK(playerid)
{
GetPlayerPos(playerid,Posicoes[playerid][0],Posicoes[playerid][1],Posicoes[playerid][2]);
if(Posicoes[playerid][0] == Posicoes[playerid][3] && Posicoes[playerid][1] == Posicoes[playerid][4] && Posicoes[playerid][2] == Posicoes[playerid][5])
{
Posicoes[playerid][3] = Posicoes[playerid][0];
Posicoes[playerid][4] = Posicoes[playerid][1];
Posicoes[playerid][5] = Posicoes[playerid][2];
SAFK[playerid]++;
print("AFK");
if(SAFK[playerid] == 12)
{
pinfo[playerid][pAFK] = 1;
}
}
return 1;
}
new Float: Posicoes[MAX_PLAYERS][6], TimerAFK[MAX_PLAYERS], TimerDis[MAX_PLAYERS], SAFK[MAX_PLAYERS];
//onplayerspawn
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid, 1887.4683, -2419.4358, 13.5391);
if (TimerDis[playerid] == 0)
{
TimerDis[playerid] = 1;
TimerAFK[playerid] = SetTimerEx("AFK", 5000, true, "i", playerid);
}
return 1;
}
//public
public AFK(playerid)
{
GetPlayerPos(playerid, Posicoes[playerid][0], Posicoes[playerid][1], Posicoes[playerid][2]);
if (Posicoes[playerid][0] == Posicoes[playerid][3] && Posicoes[playerid][1] == Posicoes[playerid][4] && Posicoes[playerid][2] == Posicoes[playerid][5])
{
Posicoes[playerid][3] = Posicoes[playerid][0];
Posicoes[playerid][4] = Posicoes[playerid][1];
Posicoes[playerid][5] = Posicoes[playerid][2];
SAFK[playerid]++;
printf("AFK");
if (SAFK[playerid] == 12)
{
pinfo[playerid][pAFK] = 1;
}
}
return 1;
}
pawn Код:
|
#include a_samp
enum pNumerator
{
Float:PosX,
Float:PosY,
Float:PosZ,
bool:inAFK,
getAFK
};
new pAFK[MAX_PLAYERS][pNumerator];
OnPlayerAFK(playerid); public OnPlayerAFK(playerid)
{
if(pAFK[playerid][inAFK] != true && (pAFK[playerid][PosX] == 0.0 && pAFK[playerid][PosY] == 0.0 && pAFK[playerid][PosZ] == 0.0)){
GetPlayerPos(playerid, pAFK[playerid][PosX], pAFK[playerid][PosY], pAFK[playerid][PosZ]);
}else {
static Float:enAFK[3]; enAFK[0] = '\0';
GetPlayerPos(playerid, enAFK[0],enAFK[1],enAFK[2]);
if(pAFK[playerid][PosX] == enAFK[0] && pAFK[playerid][PosY] == enAFK[1] && pAFK[playerid][PosZ] == enAFK[2])
{
if(pAFK[playerid][getAFK] == 3)
{
//
// CASO O PLAYER ESTIVER AFK. COLOQUE AS FUNЗФES AQUI!!!!
//
}
pAFK[playerid][getAFK]++;
}
}
SetTimerEx("OnPlayerAFK", 5000, false, "i", playerid);
return true;
}
OnPlayerAFK(playerid);
#include <a_samp>
#define tempoafk 60000*3 // 3 minutinhos
new mes[128];
new afk[MAX_PLAYERS];
new ultmomen[MAX_PLAYERS];
new Float:posveia[MAX_PLAYERS][3];
new nome[MAX_PLAYER_NAME];
public OnPlayerConnect(playerid)
{
afk[playerid] = SetTimerEx("AFKCheck",1000,true,"i",playerid); // para cada player.
ultmomen[playerid]=GetTickCount();
return 1;
}
public OnPlayerDisconnect(playerid)
{
KillTimer(afk[playerid]); // mata o kill, para nгo dar lag.
}
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys) // isso daqui, geta a cada key pressionada, e comeзa um tick, se ele nгo pressionar nada por 3 mins vai executar lб enbaixo !
{
ultmomen[playerid]=GetTickCount();
return 1;
}
public OnPlayerUpdate(playerid)
{
GetPlayerPos(playerid,posveia[playerid][0],posveia[playerid][1],posveia[playerid][2]); // geta a posiзгo
if(IsPlayerInRangeOfPoint(playerid,1.0,posveia[playerid][0],posveia[playerid][1],posveia[playerid][2]))ultmomen[playerid]=GetTickCount(); // A cada 1 segundo irб ser checado 4 vezes.
return 1;
}
forward AFKCheck(playerid);
public AFKCheck(playerid)
{
if(GetTickCount()-ultmomen[playerid]>tempoafk) // caso o tempo for maior que 3 minutos, vai executar a funзгo abaixo
{
GetPlayerName(playerid, nome, sizeof(nome));
format(mes,sizeof(mes),"O jogador %s foi kickado por estar afk nos ultimos 3 minutos",nome);
SendClientMessageToAll(-1,mes);
Kick(playerid);
}
}