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