Mach es doch einfach direkt mit der Positionsabfrage:
new Float:neuer[MAX_PLAYERS[3], IsAFK[MAX_PLAYERS],CheckVariable[MAX_PLAYERS]; //In dieser Zeile musst du noch einen Fehler finden ;)
forward CheckTimer(playerid);//forward für das Public
#define CheckZeit 5000 //Zeit des Timers
//OnPlayerSpawn
CheckVariable[playerid] = 0;//Variable wird auf 0 gesetzt
SetTimerEx("CheckTimer",CheckZeit,true,"i",playerid);//Timer wird gesetzt
public CheckTimer(playerid)//Timerpublic
{
if(IsAFK[playerid] == 0)//Wenn der Spieler nicht afk ist
{
if(CheckVariable[playerid] == 1)//und die Variable 1 ist
{
if(!IsPlayerInRangeOfPoint(playerid,0,neu[playerid][0],neu[playerid][1],neu[playerid][2])return 1;//und der Spieler nicht auf der selben Stelle ist, passiert nichts
CheckVariable[playerid] = 1;//ansonsten wird die Variable auf 1 gesetzt, also dauerhafter Check der selben Position
IsAFK[playerid] = 1;//Der Spieler ist nun afk
}
else if(CheckVariable[playerid] == 0) {//Wenn die Variable 0 ist
GetPlayerPos(playerid,neu[playerid][0],neu[playerid][1],neu[playerid][2]);}//wird die Position für die 2. Abfrage gespeichert
return 1;//der Timer bekommt einen Return
}
else if(IsAFK[playerid] == 1)return 1; //Wenn der Spieler afk ist, passiert nichts
}
Das ganze ist jetzt gerade ungetestet. Ich weis auch nicht, ob es funktioniert, da ich aufgrund der Uhrzeit ziemlich Müde bin 
Sollte es jemand wissen, kann er mich eines besseren belehren