View difference between Paste ID: s0N01r33 and zeLNSPNH
SHOW: | | - or go back to the newest paste.
1
// Clavador Mar-2012 
2
3
#if !defined MAX_BUFFER	
4
		#define MAX_BUFFER 24
5
	#endif
6
	
7
#if !defined PLY_MX
8
		#define PLY_MX MAX_PLAYERS
9
	#endif	
10
11
#define Init_Effects() new tid
12
13-
#define TextDraw_FadeIn(%1,%2,%3,%4,%5,%6) 		tid = Gettimer(playerid);		\	
13+
#define TextDraw_FadeIn(%1,%2,%3,%4,%5,%6) 		tid = Gettimer(%1);		\	
14
												T_Stuff[%1][tid][minimum] = %5; \
15
												T_Stuff[%1][tid][maximum] = %6;	\
16
												T_Stuff[%1][tid][t_id] = SetTimerEx("TextDrawFadeIn",%3,true,"dddd",%1,%2,%4,tid)
17
												
18-
#define TextDraw_Grow(%1,%2,%3,%4,%5,%6,%7,%8)  tid = Gettimer(playerid); 		\												
18+
#define TextDraw_Grow(%1,%2,%3,%4,%5,%6,%7,%8)  tid = Gettimer(%1); 		\												
19
												T_Stuff[%1][tid][minimum] = %5; \
20
												T_Stuff[%1][tid][maximum] = %6;	\
21
												T_Stuff[%1][tid][t_id] = SetTimerEx("TextDrawGrow",1,true,"ddddffd",%1,%2,%3,%4,%7,%8,tid)
22
												
23-
#define TextDraw_Pulsate(%1,%2,%3,%4,%5,%6) 	tid = Gettimer(playerid);		\
23+
#define TextDraw_Pulsate(%1,%2,%3,%4,%5,%6) 	tid = Gettimer(%1);		\
24
												T_Stuff[%1][tid][minimum] = %5; \
25
												T_Stuff[%1][tid][maximum] = %6;	\												
26
												T_Stuff[%1][tid][t_id] = SetTimerEx("TextDrawPulsate",%4,true,"ddddd",%1,%2,%3,tid)
27
												
28
												
29
#define TextDraw_Hide(%1,%2,%3,%4)				T_Stuff[%1][%2][minimum] = %3; 	\
30
												T_Stuff[%1][%2][maximum] = %4;	\
31
												HideDynamicTextDraws( %1, %2 )
32
												
33
												
34
#define min_buffer T_Stuff[playerid][timer][minimum]
35
#define max_buffer T_Stuff[playerid][timer][maximum]
36
37
enum Stuff
38
{
39
	minimum,
40
	maximum,
41
	t_id,
42
	count,
43
	bool:show,
44
	Float:txt_x,
45
	Float:txt_y
46
}
47
48
new T_Stuff[PLY_MX][MAX_BUFFER][Stuff];
49
new Text:T_Buffer[MAX_BUFFER];
50
51
// THIS IS CALLED WHEN ANIMATION FINISHES
52
forward OnAnimFinish( playerid, index, timer );
53
54
forward HideDynamicTextDraws( playerid, timer ); // HIDES FROM MIN TO MAX
55
forward TextDrawFadeIn( playerid, index, duration, timer ); // SHOWS FROM MIN TO MAX
56
forward TextDrawGrow( playerid, index, anim_speed, duration, Float:max_x, Float:max_y, timer ); // GROWS FROM 0 TO X
57
forward TextDrawPulsate( playerid, index, repetitions, timer ); // SHOWS AND HIDES FROM MIN TO MAX WITH X REPETITIONS
58
59
// FUNCTIONS
60
public TextDrawFadeIn( playerid, index, duration, timer )
61
{
62
	if( min_buffer <= max_buffer )
63
	{
64
		TextDrawShowForPlayer( playerid, T_Buffer[min_buffer] );	
65
		min_buffer++;
66
	}
67
	else	
68
	{
69
		StopTimer( playerid, timer );
70
		SetTimerEx("OnAnimFinish",duration,false,"ddd",playerid,index,timer);
71
	}
72
	
73
	return 1;	
74
}
75
76
public TextDrawGrow( playerid, index, anim_speed, duration, Float:max_x, Float:max_y, timer )
77
{
78
	new i = min_buffer;
79
	
80
	if( T_Stuff[playerid][timer][txt_x] < max_x ) T_Stuff[playerid][timer][txt_x] += max_x / anim_speed;	
81
	if( T_Stuff[playerid][timer][txt_y] < max_y ) T_Stuff[playerid][timer][txt_y] += max_y / anim_speed;
82
	
83
	while( i <= max_buffer )
84
	{
85
		TextDrawLetterSize( T_Buffer[i], T_Stuff[playerid][timer][txt_x], T_Stuff[playerid][timer][txt_y] );
86
		TextDrawShowForPlayer( playerid, T_Buffer[i] );
87
		i++;
88
	}	
89
	
90
	if( T_Stuff[playerid][timer][txt_x] >= max_x && T_Stuff[playerid][timer][txt_y] >= max_y )
91
	{
92
		StopTimer( playerid, timer );
93
		T_Stuff[playerid][timer][txt_x] = T_Stuff[playerid][timer][txt_y] = 0.0;		
94
		SetTimerEx("OnAnimFinish",duration,false,"ddd",playerid,index,timer);
95
	}
96
	
97
	return 1;
98
}
99
100
public TextDrawPulsate( playerid, index, repetitions, timer )
101
{
102
	new i = min_buffer;
103
	
104
	if( !T_Stuff[playerid][timer][show] )
105
	{
106
		if( i == max_buffer ) 
107
		{	
108
			TextDrawShowForPlayer( playerid, T_Buffer[i] );
109
		}
110
		else
111
		{
112
			while( i < max_buffer )
113
			{
114
				TextDrawShowForPlayer( playerid, T_Buffer[i] );
115
				i++;
116
			}
117
		}
118
		
119
		T_Stuff[playerid][timer][show] = true;			
120
	}
121
	else
122
	{
123
		if( i == max_buffer ) 
124
		{	
125
			TextDrawShowForPlayer( playerid, T_Buffer[i] );
126
		}
127
		else
128
		{
129
			while( i < max_buffer )
130
			{
131
				TextDrawHideForPlayer( playerid, T_Buffer[i] );
132
				i++;
133
			}
134
		}
135
		
136
		T_Stuff[playerid][timer][show] = false;			
137
	}
138
	
139
	if( T_Stuff[playerid][timer][count] > repetitions )
140
	{
141
		T_Stuff[playerid][timer][count] = 0;
142
		StopTimer( playerid, timer );
143
		OnAnimFinish( playerid, index, timer );		
144
	}
145
	else T_Stuff[playerid][timer][count]++;
146
	
147
	return 1;
148
}
149
150
public HideDynamicTextDraws( playerid, timer )
151
{
152
	if( T_Stuff[playerid][timer][maximum] < 0 ) T_Stuff[playerid][timer][maximum] = MAX_BUFFER;
153
154
	while( T_Stuff[playerid][timer][minimum] < T_Stuff[playerid][timer][maximum] )
155
	{
156
		TextDrawHideForPlayer( playerid, T_Buffer[T_Stuff[playerid][timer][minimum]] );
157
		T_Stuff[playerid][timer][minimum]++;
158
	}
159
	
160
	return 1;
161
}
162
163
StopTimer( playerid, timer )
164
{
165
	KillTimer( T_Stuff[playerid][timer][t_id] );
166
	T_Stuff[playerid][timer][t_id] = 0;
167
	
168
	return 1;
169
}
170
171
Gettimer( playerid )
172
{
173
	for( new i; i<sizeof(T_Stuff[]); i++)
174
	{
175
		if( T_Stuff[playerid][i][t_id] == 0 )
176
		{
177
			return i;
178
		}
179
	}
180
	
181
	return 0;
182
}