10.06.2012, 23:59
(
Последний раз редактировалось paulor; 27.06.2012 в 19:47.
)
pawn Код:
new Float: PTOldPos[MAX_PLAYERS][3], PTAFKTime[MAX_PLAYERS], PTAFKTime2[MAX_PLAYERS], Timer[MAX_PLAYERS]; //Crie as Vars
public OnPlayerConnect(playerid) {
PTAFKTime2[playerid] = tickcount();
Timer[playerid] = SetTimerEx("PTAFK", 1000, true, "i", playerid); //Iniciei o timer de 1 segundo para o playerid.
}
forward PTAFK(playerid);
public PTAFK(playerid) { //Essa funзгo para ser executado de 1 em 1 segundo.
new Float: PTPos[3]; //Criei um var para as Pos do playerid.
GetPlayerPos(playerid, PTPos[0], PTPos[1], PTPos[2]); //Getei as Pos do playerid.
if(!IsPlayerInRangeOfPoint(playerid, 3.0, PTOldPos[playerid][0], PTOldPos[playerid][1], PTOldPos[playerid][2])) PTAFKTime[playerid] = 0; //Verifico se o playerid nгo estб em um raio de 3 das antigas posiзхes, assim zerando a var.
else PTAFKTime[playerid] += tickcount() - PTAFKTime2[playerid]; //Se ele tiver no raio de 3 das antigas posiзoes, adc o tickcount - o tickcount anterior
PTAFKTime2[playerid] = tickcount(); //Armazeno o tickcount
PTOldPos[playerid][0] = PTPos[0]; //Armazeno a Pos X
PTOldPos[playerid][1] = PTPos[1]; //Armazeno a Pos Y
PTOldPos[playerid][2] = PTPos[2]; //Armazeno a Pos Z
if(PTAFKTime[playerid]/60000 >= 10) { //Verifico se a var divida por 60000(o calculo vai sair em minutos) й maior o igual a 10
SendClientMessage(playerid, 0xFF0000FF, "Kickado por AFK!"); //Mando a msg para o playerid
Kick(playerid); //Kick no playerid por Esc
}
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
KillTimer(Timer[playerid]); //Se o playerid se desconectar destruo o timer para ele nгo ficar rodando enquanto o player estiver off.
return 1;
}
Quote:
ixi, й mesmo tinha esquecido do ongamemodeinit, colocar no onplayerupdate ou connect como paulor disse.
@paulor, vocк poderia me dizer porque nгo irб dar certo, agradeceria muito *.*. Nгo consigo ver porque nгo iria funcionar D: |
pawn Код:
tempo[playerid] = gettime() + (600); //Vc ta armazendo o tempo unix em segundos + 600 segundos que da 10 minutos!
new Float:x,Float:y,Float:z,Float:posicao[3]; //Criou as vars
GetPlayerPos(playerid,x,y,z); //Getou a posiзгo
if(tempo[playerid] <= gettime()) //Aki vc esta verificando Uma coisa que nгo daria certo, pq ? pois a funзгo ela й executa em no maximo 1 milesimo, assim tempo[playerid] nunca vai ser menor sempre maior que gettime!
{