Advertisement
Guest User

Textdraw animations v2.1

a guest
Apr 1st, 2012
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.83 KB | None | 0 0
  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,%7)               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,"ddddd",%1,%2,%4,tid,%7)
  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, sound ); // 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, sound )
  61. {
  62.     if( min_buffer <= max_buffer )
  63.     {
  64.         TextDrawShowForPlayer( playerid, T_Buffer[min_buffer] );
  65.         min_buffer++;
  66.        
  67.         if( sound != 0 )
  68.             PlayerPlaySound( playerid, sound, 0.0, 0.0, 0.0 );     
  69.     }
  70.     else   
  71.     {
  72.         StopTimer( playerid, timer );
  73.         SetTimerEx("OnAnimFinish",duration,false,"ddd",playerid,index,timer);
  74.     }
  75.    
  76.     return 1;  
  77. }
  78.  
  79. public TextDrawGrow( playerid, index, anim_speed, duration, Float:max_x, Float:max_y, timer )
  80. {
  81.     new i = min_buffer;
  82.    
  83.     if( T_Stuff[playerid][timer][txt_x] < max_x ) T_Stuff[playerid][timer][txt_x] += max_x / anim_speed;   
  84.     if( T_Stuff[playerid][timer][txt_y] < max_y ) T_Stuff[playerid][timer][txt_y] += max_y / anim_speed;
  85.    
  86.     while( i <= max_buffer )
  87.     {
  88.         TextDrawLetterSize( T_Buffer[i], T_Stuff[playerid][timer][txt_x], T_Stuff[playerid][timer][txt_y] );
  89.         TextDrawShowForPlayer( playerid, T_Buffer[i] );
  90.         i++;
  91.     }  
  92.    
  93.     if( T_Stuff[playerid][timer][txt_x] >= max_x && T_Stuff[playerid][timer][txt_y] >= max_y )
  94.     {
  95.         StopTimer( playerid, timer );
  96.         T_Stuff[playerid][timer][txt_x] = T_Stuff[playerid][timer][txt_y] = 0.0;       
  97.         SetTimerEx("OnAnimFinish",duration,false,"ddd",playerid,index,timer);
  98.     }
  99.    
  100.     return 1;
  101. }
  102.  
  103. public TextDrawPulsate( playerid, index, repetitions, timer )
  104. {
  105.     new i = min_buffer;
  106.    
  107.     if( !T_Stuff[playerid][timer][show] )
  108.     {
  109.         if( i == max_buffer )
  110.         {  
  111.             TextDrawShowForPlayer( playerid, T_Buffer[i] );
  112.         }
  113.         else
  114.         {
  115.             while( i < max_buffer )
  116.             {
  117.                 TextDrawShowForPlayer( playerid, T_Buffer[i] );
  118.                 i++;
  119.             }
  120.         }
  121.        
  122.         T_Stuff[playerid][timer][show] = true;         
  123.     }
  124.     else
  125.     {
  126.         if( i == max_buffer )
  127.         {  
  128.             TextDrawHideForPlayer( playerid, T_Buffer[i] );
  129.         }
  130.         else
  131.         {
  132.             while( i < max_buffer )
  133.             {
  134.                 TextDrawHideForPlayer( playerid, T_Buffer[i] );
  135.                 i++;
  136.             }
  137.         }
  138.        
  139.         T_Stuff[playerid][timer][show] = false;        
  140.     }
  141.    
  142.     if( T_Stuff[playerid][timer][count] > repetitions )
  143.     {
  144.         T_Stuff[playerid][timer][count] = 0;
  145.         StopTimer( playerid, timer );
  146.         OnAnimFinish( playerid, index, timer );    
  147.     }
  148.     else T_Stuff[playerid][timer][count]++;
  149.    
  150.     return 1;
  151. }
  152.  
  153. public HideDynamicTextDraws( playerid, timer )
  154. {
  155.     if( T_Stuff[playerid][timer][maximum] < 0 ) T_Stuff[playerid][timer][maximum] = MAX_BUFFER;
  156.  
  157.     while( T_Stuff[playerid][timer][minimum] < T_Stuff[playerid][timer][maximum] )
  158.     {
  159.         TextDrawHideForPlayer( playerid, T_Buffer[T_Stuff[playerid][timer][minimum]] );
  160.         T_Stuff[playerid][timer][minimum]++;
  161.     }
  162.    
  163.     return 1;
  164. }
  165.  
  166. stock StopTimer( playerid, timer )
  167. {
  168.     KillTimer( T_Stuff[playerid][timer][t_id] );
  169.     T_Stuff[playerid][timer][t_id] = 0;
  170.    
  171.     return 1;
  172. }
  173.  
  174. stock Gettimer( playerid )
  175. {
  176.     for( new i; i<sizeof(T_Stuff[]); i++)
  177.     {
  178.         if( T_Stuff[playerid][i][t_id] == 0 )
  179.         {
  180.             return i;
  181.         }
  182.     }
  183.    
  184.     return 0;
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement