Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- forward TS_OnGameModeInit();
- forward TS_OnPlayerDisconnect(playerid,reason);
- forward TimerSysTimer();
- forward OnPlayerTimerEnd(playerid,definition);
- enum _TimerSys {
- bool:tsActive,
- tsDefinition,
- tsTime,
- tsPlayer,
- }
- new TimerSys[MAX_PLAYERS+200][_TimerSys];
- stock GetFreeTimerSlot() {
- for(new i; i<sizeof(TimerSys); i++){
- if(TimerSys[i][tsActive]==false)return i;
- }
- return -1;
- }
- stock CreateTimer(playerid,time,definition)
- {
- new id = GetFreeTimerSlot();
- TimerSys[id][tsActive]=true;
- TimerSys[id][tsDefinition]=definition;
- TimerSys[id][tsTime]=time;
- TimerSys[id][tsPlayer]=playerid;
- return id;
- }
- stock StopTimer(timerid)
- {
- if(TimerSys[timerid][tsActive]==true){TimerSys[timerid][tsActive]=false; return 1;}
- return 0;
- }
- public TimerSysTimer()
- {
- for(new i; i<sizeof(TimerSys); i++) {
- if(TimerSys[i][tsActive] == true) {
- if(TimerSys[i][tsTime]-1 <= 0){
- TimerSys[i][tsActive] = false;
- OnPlayerTimerEnd(TimerSys[i][tsPlayer],TimerSys[i][tsDefinition]);
- }
- else{TimerSys[i][tsTime]--;}
- }
- }
- }
- public OnGameModeInit()
- {
- SetTimer("TimerSysTimer",1000,1);
- TS_OnGameModeInit();
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit TS_OnGameModeInit
- public OnPlayerDisconnect(playerid,reason)
- {
- for(new i; i<sizeof(TimerSys); i++) {if(TimerSys[i][tsActive] == true && TimerSys[i][tsPlayer] == playerid){TimerSys[i][tsActive] = false;}}
- TS_OnPlayerDisconnect(playerid,reason);
- return 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect TS_OnPlayerDisconnect
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement