Advertisement
Guest User

Textdraw animations v1.2

a guest
Mar 27th, 2012
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.         if( i == max_buffer )
  104.         {  
  105.             TextDrawShowForPlayer( playerid, T_Buffer[i] );
  106.         }
  107.         else
  108.         {
  109.             while( i < max_buffer )
  110.             {
  111.                 TextDrawShowForPlayer( playerid, T_Buffer[i] );
  112.                 i++;
  113.             }
  114.         }
  115.        
  116.         T_Stuff[playerid][show] = true;        
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement