Advertisement
Firerfan

Timer-System

Mar 28th, 2013
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 1.70 KB | None | 0 0
  1. forward TS_OnGameModeInit();
  2. forward TS_OnPlayerDisconnect(playerid,reason);
  3. forward TimerSysTimer();
  4. forward OnPlayerTimerEnd(playerid,definition);
  5.  
  6. enum _TimerSys {
  7.     bool:tsActive,
  8.     tsDefinition,
  9.     tsTime,
  10.     tsPlayer,
  11. }
  12. new TimerSys[MAX_PLAYERS+200][_TimerSys];
  13.  
  14. stock GetFreeTimerSlot() {
  15.     for(new i; i<sizeof(TimerSys); i++){
  16.         if(TimerSys[i][tsActive]==false)return i;
  17.     }
  18.     return -1;
  19. }
  20. stock CreateTimer(playerid,time,definition)
  21. {
  22.     new id = GetFreeTimerSlot();
  23.     TimerSys[id][tsActive]=true;
  24.     TimerSys[id][tsDefinition]=definition;
  25.     TimerSys[id][tsTime]=time;
  26.     TimerSys[id][tsPlayer]=playerid;
  27.     return id;
  28. }
  29. stock StopTimer(timerid)
  30. {
  31.     if(TimerSys[timerid][tsActive]==true){TimerSys[timerid][tsActive]=false; return 1;}
  32.     return 0;
  33. }
  34. public TimerSysTimer()
  35. {
  36.     for(new i; i<sizeof(TimerSys); i++) {
  37.         if(TimerSys[i][tsActive] == true) {
  38.             if(TimerSys[i][tsTime]-1 <= 0){
  39.                 TimerSys[i][tsActive] = false;
  40.                 OnPlayerTimerEnd(TimerSys[i][tsPlayer],TimerSys[i][tsDefinition]);
  41.             }
  42.             else{TimerSys[i][tsTime]--;}
  43.         }
  44.     }
  45. }
  46. public OnGameModeInit()
  47. {
  48.     SetTimer("TimerSysTimer",1000,1);
  49.     TS_OnGameModeInit();
  50. }
  51. #if defined _ALS_OnGameModeInit
  52.     #undef OnGameModeInit
  53. #else
  54.     #define _ALS_OnGameModeInit
  55. #endif
  56. #define OnGameModeInit TS_OnGameModeInit
  57.  
  58. public OnPlayerDisconnect(playerid,reason)
  59. {
  60.     for(new i; i<sizeof(TimerSys); i++) {if(TimerSys[i][tsActive] == true && TimerSys[i][tsPlayer] == playerid){TimerSys[i][tsActive] = false;}}
  61.     TS_OnPlayerDisconnect(playerid,reason);
  62.     return 1;
  63. }
  64. #if defined _ALS_OnPlayerDisconnect
  65.     #undef OnPlayerDisconnect
  66. #else
  67.     #define _ALS_OnPlayerDisconnect
  68. #endif
  69. #define OnPlayerDisconnect TS_OnPlayerDisconnect
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement