Advertisement
Guest User

textdraw animations v2.0 by Clavador

a guest
Mar 27th, 2012
231
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. #define Init_Effects() new tid
  12.  
  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(%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(%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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement