2021-10-14, 10:57 PM
Code:
// Use SetPVarInt and GetPVarInt it gives possibility for user to use AFK information also inside gamemode itself.
// Currently your filterscript funcinality is useless, because it's basic command, what can be written by everyone, who knows something about variables and strings.
// But its great idea to implement something new and useful for others
#include <a_samp>
static PlayerAFKCounter[MAX_PLAYERS],
bool:PlayerIsAFK[MAX_PLAYERS];
public OnFilterScriptInit(){
SetTimer("CheckPlayerAFKStatus", 1000, true);
return 1;
}
public OnPlayerConnect(playerid){
PlayerIsAFK[playerid] = false;
SetPVarInt(playerid, "isPlayerAFK", 0);
return 1;
}
public OnPlayerUpdate(playerid){
PlayerAFKCounter[playerid] = 0;
// Called, when player returns from AFK
if(PlayerIsAFK[playerid]){
PlayerIsAFK[playerid] = false;
SetPVarInt(playerid, "isPlayerAFK", 0);
}
return 1;
}
forward CheckPlayerAFKStatus();
public CheckPlayerAFKStatus(){
for(new i; i < MAX_PLAYERS; i){
if(!IsPlayerConnected(i))continue;
// Explanation
// This timer is called in every second and when player isn't AFK, then OnPlayerUpdate will reset this counter
// But if player is AFK OnPlayerUpdate doesn't reset counter and player is setted into AFK status.
PlayerAFKCounter[i] = 1;
if(PlayerAFKCounter[i] >= 5){
// Called, when player enters AFK status
if(!PlayerIsAFK[playerid]){
PlayerIsAFK[playerid] = true;
SetPVarInt(playerid, "isPlayerAFK", 1);
}
}
}
return 1;
}