Advertisement
Phanto90

PAFKSystem v1.0

Jun 16th, 2011
1,631
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.96 KB | None | 0 0
  1. /*
  2. ================================================================================
  3.                                Phanto's Script
  4. ________________________________________________________________________________
  5. •Script: PAFKSystem          •Scripter:  Phanto90
  6. •Type:   FS                  •File size: 10 Kb
  7. •Lines:  110                 •Version:   1.0v
  8. ________________________________________________________________________________
  9.                                * Description *
  10.  
  11. Tired of the usual AFK system? Try this instead.
  12. -Detect automatically when a player goes afk
  13. -Simple and nice AFK system
  14. -Modify as you want but keep credits!
  15.  
  16.  
  17.                      Thanks for choosing Pawnoscripter!
  18.                      http://pawnoscripter.forumfree.it
  19.  
  20.                                                                       Phanto90
  21. ________________________________________________________________________________
  22.  
  23. Do not remove credits.
  24. ================================================================================
  25. */
  26. //===================INCLUDES
  27. #include a_samp
  28. //===================DEFINES
  29. #define AFK_MINUTES 1 //How many minutes a player can be afk before detected
  30. //===================VARS&ARRAY
  31. enum Info_Afk{Timer, bool: Inactive};
  32. new Player[MAX_PLAYERS][Info_Afk];
  33. new name[29],string[128]; //I know maximum is 24, but 29 just to be "additionally" correct
  34.  
  35. //============================================================ONFILTERSCRIPTINIT
  36. public OnFilterScriptInit()
  37. {
  38.     print("\n________________________________________");
  39.     print("   PAfk System loaded succesfully");
  40.     print("________________________________________\n");
  41.     return 1;
  42. }
  43. //============================================================ONPLAYERDISCONNECT
  44. public OnPlayerDisconnect(playerid)
  45. {
  46.     KillTimer(Player[playerid][Timer]);
  47.     Player[playerid][Inactive]=false;
  48.     GetPlayerName(playerid,name,sizeof(name));
  49.     if(strfind(name,"[AFK]", true)!=-1)
  50.     {
  51.         strdel(name,0,5);
  52.         SetPlayerName(playerid,name);
  53.     }
  54.     return 1;
  55. }
  56. //============================================================ONPLAYERDISCONNECT
  57. public OnPlayerConnect(playerid)
  58. {
  59.     GetPlayerName(playerid,name,sizeof(name));
  60.     if(strfind(name,"[AFK]", true)!=-1)
  61.     {
  62.         SendClientMessage(playerid,-1,"[ERROR:] Invalid nickname. You have been kicked.");
  63.         Kick(playerid);
  64.     }
  65.     return 1;
  66. }
  67. //=================================================================ONPLAYERSPAWN
  68. public OnPlayerSpawn(playerid)
  69. {
  70.     Player[playerid][Timer]=SetTimerEx("Player_Detect_Afk", AFK_MINUTES*60000, false, "d", playerid);
  71.     return 1;
  72. }
  73. //=============================================================PLAYER_DETECT_AFK
  74. forward Player_Detect_Afk(playerid);
  75. public Player_Detect_Afk(playerid)
  76. {
  77.     GetPlayerName(playerid, name, sizeof(name));
  78.     format(string,sizeof(string),"[AFK]%s",name);
  79.     SetPlayerName(playerid, string);
  80.     Player[playerid][Inactive] = true;
  81.     format(string,sizeof(string),"{C14124}%s {FFFFFF}has gone AFK",name);
  82.     SendClientMessageToAll(-1,string);
  83.     TogglePlayerControllable(playerid,0);
  84.     return 1;
  85. }
  86. //========================================================ONPLAYERKEYSTATECHANGE
  87. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  88. {
  89.     Afk_Back(playerid);
  90.     return 1;
  91. }
  92. //==================================================================ONPLAYERTEXT
  93. public OnPlayerText(playerid,text[])
  94. {
  95.     Afk_Back(playerid);
  96.     return 1;
  97. }
  98. //=======================================================================AFKBACK
  99. stock Afk_Back(playerid)
  100. {
  101.     KillTimer(Player[playerid][Timer]);
  102.     Player[playerid][Timer]=SetTimerEx("Player_Detect_Afk", AFK_MINUTES*60000, false, "d", playerid);
  103.     if(Player[playerid][Inactive])
  104.     {
  105.         format(string,sizeof(string),"{C14124}%s {FFFFFF}is back from AFK state",name);
  106.         SendClientMessageToAll(-1,string);
  107.                 Player[playerid][Inactive]=false;
  108.         TogglePlayerControllable(playerid,1);
  109.         GetPlayerName(playerid,name,sizeof(name));
  110.         if(strfind(name,"[AFK]", true)!=-1)
  111.         {
  112.         strdel(name,0,5);
  113.         SetPlayerName(playerid,name);
  114.         }
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement