09.02.2017, 11:54
hey so I have an afk system that is working fine but is there is a way that if the player stops moving for a while he goes afk I can set the timer but I need the function here is the code if required:
Код:
public OnPlayerCommandText(playerid, cmdtext[]) { GetPlayerName(playerid, names, sizeof(names)); if (strcmp("/afk", cmdtext, true, 10) == 0) { if(IsAfk[playerid]) return SendClientMessage(playerid, 0xADD8E6FF, "You're already in AFK mode."); IsAfk[playerid] = 1; TogglePlayerControllable(playerid, 0); format(string,sizeof(string),"%s is AFK.", names); SendClientMessageToAll(0xFFFF00FF, string); GetPlayerPos(playerid, X, Y, Z); GetPlayerHealth(playerid, health); afktext = CreatePlayer3DTextLabel(playerid,"Player is in AFK mode.",0xFF0000FF, X,Y,Z,40.0); return 1; } if (strcmp("/back", cmdtext, true, 10) == 0) { if(IsAfk[playerid] == 1) { Afk_Back(playerid); } else SendClientMessage(playerid, 0xFF0000FF, "You're not AFK!."); return 1; } return 0; } /*public OnPlayerStateChange(playerid, newstate, oldstate) { if(IsAfk[playerid] == 1) { Afk_Back(playerid); } else SendClientMessage(playerid, 0xADD8E6FF, "You're not in AFK mode."); return 1; }*/ stock Afk_Back(playerid) { IsAfk[playerid] = 0; TogglePlayerControllable(playerid, 1); format(string,sizeof(string),"%s is back.", names); SendClientMessageToAll(0xFFFF00FF, string); DeletePlayer3DTextLabel(playerid, afktext); return 1; }