Advertisement
DeWilX

Simple AFK System [0.7]

Apr 20th, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.63 KB | None | 0 0
  1. /* Simple AFK System by DeWilX */
  2.  
  3. #define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6.  
  7. #define COLOR_LIMEGREEN 0x32CD32AA
  8. #define COLOR_RED 0xFF0000FF
  9. #define ms 60000
  10. #define afktime 1 // AFK time in minutes
  11. #define AutoAFKTimer 1 // Enable Auto AFK? 1 = On 0 = Off
  12. #define AutoBackOnButtonPress 1 // Enable Auto Back on "Move Forward" key press? 1 = On 0 = Off
  13.  
  14. forward public PlayerMoveTimer(playerid);
  15. new gPlayers[MAX_PLAYERS][MAX_PLAYER_NAME+1];
  16. new hp = 9999999;
  17. new Float:phealth;
  18. new Float:parmour;
  19. new IsPlayerAfk[MAX_PLAYERS];
  20. new i=0;
  21. new autoafk=ms*afktime;
  22. new AFKtime=AutoAFKTimer;
  23. new AutoBack=AutoBackOnButtonPress;
  24. new afktag[MAX_PLAYERS];
  25. new pname[16];
  26.  
  27. public OnFilterScriptInit()
  28. {
  29.     print("\n--------------------------------------");
  30.     print(" DeWilX's Simple AFK System -- Loaded");
  31.     print("--------------------------------------\n");
  32.     return 1;
  33. }
  34.  
  35. public OnPlayerConnect(playerid)
  36. {
  37.     if (AFKtime == 1)
  38.     {
  39.     SetTimerEx("PlayerMoveTimer", autoafk/2, true, "i", playerid);
  40.     }
  41.     GetPlayerName(playerid,pname,16);
  42.     IsPlayerAfk[playerid] = 0;
  43.     return 1;
  44. }
  45.  
  46. public OnPlayerDisconnect(playerid, reason)
  47. {
  48.     IsPlayerAfk[playerid] = 0;
  49.     return 1;
  50. }
  51.  
  52. public OnPlayerText(playerid, text[])
  53. {
  54.     if(IsPlayerAfk[playerid] == 1)
  55.         {
  56.         SendClientMessage(playerid, COLOR_RED, "ERROR : You can not use chat when you're AFK. Use /back to be back!");
  57.         return 0;
  58.         }
  59.     return 1;
  60. }
  61.  
  62. public OnPlayerCommandText(playerid, cmdtext[])
  63. {
  64. if (strcmp("/afk", cmdtext, true, 10) == 0)
  65. {
  66.     new string[33];
  67.     new name[16];
  68.     new setname[16];
  69.     GetPlayerName(playerid,name,128);
  70.     if (IsPlayerAfk[playerid] == 0) {
  71.     GetPlayerName(playerid,gPlayers[playerid],MAX_PLAYER_NAME);
  72.     GetPlayerHealth(playerid,phealth);
  73.     SetPlayerHealth(playerid,hp);
  74.     GetPlayerArmour(playerid,parmour);
  75.     TogglePlayerControllable(playerid, 0);
  76.     format(string,sizeof(string),"***%s is now AFK!",gPlayers[playerid]);
  77.     SendClientMessageToAll(COLOR_RED,string);
  78.     format(setname, sizeof(setname), "[AFK]%s",name);
  79.     if(!strlen(name[11]))
  80.     {
  81.         afktag[playerid] = 1;
  82.         SetPlayerName(playerid,setname);
  83.     }
  84.     IsPlayerAfk[playerid] = 1;
  85.     return true;
  86.     }
  87.     if (IsPlayerAfk[playerid] == 1) {
  88.     SendClientMessage(playerid, COLOR_RED, "ERROR : You are already AFK! Use /back to be back!");
  89.     }
  90.     return true;
  91. }
  92. if (strcmp("/back", cmdtext, true, 10) == 0)
  93. {
  94.     new string[39];
  95.     if (IsPlayerAfk[playerid] == 1) {
  96.     TogglePlayerControllable(playerid, 1);
  97.     SetPlayerHealth(playerid,phealth);
  98.     SetPlayerArmour(playerid,parmour);
  99.     format(string,sizeof(string),"***%s is no longer AFK!",gPlayers[playerid]);
  100.     SendClientMessageToAll(COLOR_LIMEGREEN,string);
  101.     if(afktag[playerid] == 1)
  102.     {
  103.         afktag[playerid] = 0;
  104.         SetPlayerName(playerid,pname);
  105.     }
  106.     IsPlayerAfk[playerid] = 0;
  107.     return true;
  108.     }
  109.     if (IsPlayerAfk[playerid] == 0) {
  110.     SendClientMessage(playerid, COLOR_RED, "ERROR : You arent AFK! Use /afk to be AFK!");
  111.     }
  112.     return true;
  113. }
  114. return 1;
  115. }
  116. public PlayerMoveTimer(playerid)
  117. {
  118.     new string[33];
  119.     new name[16];
  120.     new setname[16];
  121.     GetPlayerName(playerid,name,128);
  122.     if (IsPlayerAfk[playerid] == 0) {
  123.     i++;
  124.     }
  125.     if ((IsPlayerAfk[playerid] == 0) && (i == 2)) {
  126.         GetPlayerName(playerid,gPlayers[playerid],MAX_PLAYER_NAME);
  127.         GetPlayerHealth(playerid,phealth);
  128.         SetPlayerHealth(playerid,hp);
  129.         GetPlayerArmour(playerid,parmour);
  130.         TogglePlayerControllable(playerid, 0);
  131.         format(string,sizeof(string),"***%s is now AFK!",gPlayers[playerid]);
  132.         SendClientMessageToAll(COLOR_RED,string);
  133.         format(setname, sizeof(setname), "[AFK]%s",name);
  134.         if(!strlen(name[11]))
  135.         {
  136.             afktag[playerid] = 1;
  137.             SetPlayerName(playerid,setname);
  138.         }
  139.         IsPlayerAfk[playerid] = 1;
  140.         return true;
  141.     }
  142.     return 1;
  143. }
  144. public OnPlayerUpdate(playerid)
  145. {
  146.     if (IsPlayerAfk[playerid] == 0) {
  147.     i=0;
  148.     }
  149.     new Keys,ud,lr;
  150.     new string[39];
  151.     GetPlayerKeys(playerid,Keys,ud,lr);
  152.  
  153.     if((ud == KEY_UP ) || (ud == KEY_DOWN) || (Keys == KEY_FIRE) || (lr == KEY_LEFT) || (lr == KEY_RIGHT) || (Keys == KEY_ACTION) || (Keys == KEY_JUMP) || (Keys == KEY_SPRINT) && (AutoBack == 1))
  154.     {
  155.     if (IsPlayerAfk[playerid] == 1) {
  156.     TogglePlayerControllable(playerid, 1);
  157.     SetPlayerHealth(playerid,phealth);
  158.     SetPlayerArmour(playerid,parmour);
  159.     format(string,sizeof(string),"***%s is no longer AFK!",gPlayers[playerid]);
  160.     SendClientMessageToAll(COLOR_LIMEGREEN,string);
  161.     if(afktag[playerid] == 1)
  162.     {
  163.         afktag[playerid] = 0;
  164.         SetPlayerName(playerid,pname);
  165.     }
  166.     IsPlayerAfk[playerid] = 0;
  167.     return true;
  168.     }
  169.     }
  170.     return 1;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement