View difference between Paste ID: BQN2XExZ and VDYjYeys
SHOW: | | - or go back to the newest paste.
1
#define MAX_TIMERS 10
2-
#define TIMERS_UPDATE 100
2+
#define TIMERS_UPDATE 250
3
#define INVALID_TIMER_ID (0xFFFF)
4-
forward TOnGameModeInit();
4+
5-
forward UpdateTimers();
5+
forward UpdateTimerss();
6
7-
new TimerTime[MAX_TIMERS], TimerInterval[MAX_TIMERS], TimerRepeating[MAX_TIMERS];
7+
enum TInfo
8
{
9
	TTime,
10-
public OnGameModeInit()
10+
	TInterval,
11
	TRepeating
12-
	SetTimer("UpdateTimers", TIMERS_UPDATE, 1);
12+
};
13-
	return CallLocalFunction("TOnGameModeInit", "");
13+
new TimerInfo[MAX_TIMERS][TInfo];
14
new TimerName[MAX_TIMERS][75];
15
new StartTimers, UpdateTimersID;
16-
public UpdateTimers()
16+
17
public UpdateTimerss()
18
{
19
	for(new A; A != MAX_TIMERS; A++)
20-
		if(!TimerTime[A]) continue;
20+
21-
    		if(TimerTime[A] <= GetTickCount())
21+
		if(!TimerInfo[A][TTime]) continue;
22
    		if(TimerInfo[A][TTime] <= GetTickCount())
23-
        			if(!TimerRepeating[A]) TimerTime[A] = 0;
23+
24-
			else TimerTime[A] = GetTickCount()+TimerInterval[A];
24+
        			if(!TimerInfo[A][TRepeating])
25
			{
26
				TimerInfo[A][TTime] = 0;
27
				if(!--StartTimers) KillTimer(UpdateTimersID);
28
			}
29
			else TimerInfo[A][TTime] = GetTickCount()+TimerInfo[A][TInterval];
30
        			CallLocalFunction(TimerName[A], "");
31-
stock TSetTimer(funcname[], interval, repeating)
31+
32
	}
33
	return 1;
34
}
35-
	    	if(TimerTime[A] != 0) continue;
35+
36
stock TSetTimer(const funcname[], interval, repeating)
37-
		TimerInterval[A] = interval;
37+
38-
		TimerTime[A] = GetTickCount()+interval;
38+
	if(!StartTimers) UpdateTimersID = SetTimer("UpdateTimerss", TIMERS_UPDATE, 1);
39-
		TimerRepeating[A] = repeating;
39+
40
	{
41
		if(TimerInfo[A][TTime] != 0) continue;
42-
	return -1;
42+
43
		TimerInfo[A][TInterval] = interval;
44
		TimerInfo[A][TTime] = GetTickCount()+interval;
45-
stock KillTimerEx(timerid) TimerTime[timerid] = 0;
45+
		TimerInfo[A][TRepeating] = repeating;
46
		StartTimers++;
47-
#define SetTimer TSetTimer
47+
48
	}
49-
#if defined _ALS_OnGameModeInit
49+
	return INVALID_TIMER_ID;
50-
    #undef OnGameModeInit
50+
51-
#else
51+
52-
    #define _ALS_OnGameModeInit
52+
stock TKillTimer(timerid)
53-
#endif
53+
54-
#define OnGameModeInit TOnGameModeInit
54+
	if(TimerInfo[timerid][TTime] != 0)
55
	{
56
		TimerInfo[timerid][TTime] = 0;
57
		if(!--StartTimers) KillTimer(UpdateTimersID);
58
	}
59
	return 1;
60
}