Advertisement
Guest User

pause_ALS.inc - Dayrion

a guest
Nov 25th, 2016
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.86 KB | None | 0 0
  1. /*
  2.     -------------------------------------------------------------------------------------
  3.     * Include made by * aka Dayrion.
  4.  
  5.     public OnPlayerUnPause(playerid, time);
  6.         - When a player return in game after being AFK. Return the time which he were AFK in seconds.
  7.     public OnPlayerPause(playerid);
  8.         - When a player back to the desktop or press ESC.
  9.     bool:IsPlayerPaused(playerid);
  10.         - Return if, or not, a player is in pause.
  11.     -------------------------------------------------------------------------------------
  12. */
  13.  
  14. // ===================================================================================================================================================
  15.  
  16. #tryinclude <a_samp>
  17. #tryinclude <YSI\y_hooks>
  18.  
  19. #if defined _included_ji_afkdetect
  20.     #endinput
  21. #endif
  22.  
  23. #if !defined MAX_PLAYERS
  24.     #error "You must have the lastest version of SAMP (0.3.7) or include it (a_samp) before this one."
  25. #endif
  26.  
  27. #define _included_ji_afkdetect
  28.  
  29. #if !defined MAX_TIME_ALLOWED
  30.     #define MAX_TIME_ALLOWED 3 // sec
  31. #endif
  32.  
  33. #if !defined INTERVAL_AFK_DETECT
  34.     #define INTERVAL_AFK_DETECT 800 // ms
  35. #endif
  36.  
  37. // ===================================================================================================================================================
  38.  
  39. forward OnPlayerUnPause(playerid, time);
  40. forward OnPlayerPause(playerid);
  41. //bool:IsPlayerPaused(playerid);
  42.  
  43. // ===================================================================================================================================================
  44.  
  45. static
  46.     PlayerAFK[MAX_PLAYERS],
  47.     AFKDetect[MAX_PLAYERS],
  48.     v_Ji_TAFK;
  49.  
  50. // ===================================================================================================================================================
  51.  
  52. #if defined FILTERSCRIPT
  53.  
  54.     public OnFilterScriptInit()
  55.     {
  56.         v_Ji_TAFK = SetTimer("Ji_TAFK", INTERVAL_AFK_DETECT, true);
  57.         #if defined Ji_OnFilterScriptInit
  58.             return Ji_OnFilterScriptInit();
  59.         #else
  60.             return 1;
  61.         #endif
  62.     }
  63.  
  64.     #if defined _ALS_OnFilterScriptInit
  65.         #undef OnFilterScriptInit
  66.     #else
  67.         #define _ALS_OnFilterScriptInit
  68.     #endif
  69.     #define OnFilterScriptInit Ji_OnFilterScriptInit
  70.    
  71.     #if defined Ji_OnFilterScriptInit
  72.         forward Ji_OnFilterScriptInit();
  73.     #endif
  74.  
  75.  
  76.     public OnFilterScriptExit()
  77.     {
  78.         KillTimer(v_Ji_TAFK);
  79.         #if defined Ji_OnFilterScriptExit
  80.             return Ji_OnFilterScriptExit();
  81.         #else
  82.             return 1;
  83.         #endif
  84.     }
  85.  
  86.     #if defined _ALS_OnFilterScriptExit
  87.         #undef OnFilterScriptExit
  88.     #else
  89.         #define _ALS_OnFilterScriptExit
  90.     #endif
  91.     #define OnFilterScriptExit Ji_OnFilterScriptExit
  92.    
  93.     #if defined Ji_OnFilterScriptExit
  94.         forward Ji_OnFilterScriptExit();
  95.     #endif
  96.  
  97. #else
  98.  
  99.     public OnGameModeInit()
  100.     {
  101.         v_Ji_TAFK = SetTimer("Ji_TAFK", INTERVAL_AFK_DETECT, true);
  102.         #if defined Ji_OnGameModeInit
  103.             return Ji_OnGameModeInit();
  104.         #else
  105.             return 1;
  106.         #endif
  107.     }
  108.  
  109.     #if defined _ALS_OnGameModeInit
  110.         #undef OnGameModeInit
  111.     #else
  112.         #define _ALS_OnGameModeInit
  113.     #endif
  114.     #define OnGameModeInit Ji_OnGameModeInit
  115.    
  116.     #if defined Ji_OnGameModeInit
  117.         forward Ji_OnGameModeInit();
  118.     #endif
  119.  
  120.     public OnGameModeExit()
  121.     {
  122.         KillTimer(v_Ji_TAFK);
  123.         #if defined Ji_OnGameModeExit
  124.             return Ji_OnGameModeExit();
  125.         #else
  126.             return 1;
  127.         #endif
  128.     }
  129.  
  130.     #if defined _ALS_OnGameModeExit
  131.         #undef OnGameModeExit
  132.     #else
  133.         #define _ALS_OnGameModeExit
  134.     #endif
  135.     #define OnGameModeExit Ji_OnGameModeExit
  136.  
  137.     #if defined Ji_OnPlayerUpdate
  138.         forward Ji_OnPlayerUpdate(playerid);
  139.     #endif
  140.  
  141. #endif
  142.  
  143. // ===================================================================================================================================================
  144.  
  145. public OnPlayerUpdate(playerid)
  146. {
  147.     AFKDetect[playerid] = gettime();
  148.  
  149.     #if defined Ji_OnPlayerUpdate
  150.         return Ji_OnPlayerUpdate(playerid);
  151.     #else
  152.         return 1;
  153.     #endif
  154. }
  155.  
  156. #if defined _ALS_OnPlayerUpdate
  157.     #undef OnPlayerUpdate
  158. #else
  159.     #define _ALS_OnPlayerUpdate
  160. #endif
  161.  
  162. #define OnPlayerUpdate Ji_OnPlayerUpdate
  163.  
  164. #if defined Ji_OnPlayerUpdate
  165.     forward Ji_OnPlayerUpdate(playerid);
  166. #endif
  167.  
  168. // ===================================================================================================================================================
  169.  
  170. stock
  171.     bool:IsPlayerPaused(playerid)
  172.         return PlayerAFK[playerid] > 0 ? true : false;
  173.  
  174. forward Ji_TAFK();
  175. public Ji_TAFK()
  176. {
  177.     for(new j = GetPlayerPoolSize(); j > 0; j--)
  178.     {
  179.         if(!IsPlayerConnected(j))
  180.             continue;
  181.  
  182.         if(gettime() - AFKDetect[j] > MAX_TIME_ALLOWED && PlayerAFK[j] == 0)
  183.         {
  184.             PlayerAFK[j] = AFKDetect[j];
  185.             CallRemoteFunction("OnPlayerPause", "i", j);
  186.         }
  187.         else if(gettime() - AFKDetect[j] < MAX_TIME_ALLOWED && PlayerAFK[j] > 0)
  188.         {
  189.             CallRemoteFunction("OnPlayerUnPause", "ii", j, (gettime() - PlayerAFK[j]) + MAX_TIME_ALLOWED);
  190.             PlayerAFK[j] = 0;
  191.         }
  192.     }
  193.     return 1;
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement