Advertisement
Lorenc

Firewerkz - Include

Dec 22nd, 2012
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.13 KB | None | 0 0
  1. /*
  2.  *                    v1.0
  3.  *                  Firewerkz
  4.  *
  5.  *              Created all by Lorenc_
  6.  *
  7.  *      www.irresistiblegaming.com - Where gaming is irresistible!
  8. */
  9.  
  10. /* ** Includes ** */
  11. #include                            < a_samp >
  12. #include                            < streamer >
  13.  
  14. /* ** TOGGLE ** */
  15. #define NEON_MODE                   false // Pretty ugly if it is toggled... The lights are not synced well.
  16. #define EXPLOSION_DELAY             320 // This delays each explosion :P
  17. #define MAX_PROJECTILES             ( 25 )
  18.  
  19. /* ** Functions ** */
  20. #define fw::RandomEx(%0,%1)         (random((%1) - (%0)) + (%0))
  21.  
  22. /* ** Variables ** */
  23. enum E_FIREWORK_DATA
  24. {
  25.     bool: E_PLACED,         E_OBJECT_ID,            E_PROJECTILE[ MAX_PROJECTILES ]
  26. }
  27.    
  28. static stock
  29.     g_fireWorkData                  [ 10 ] [ E_FIREWORK_DATA ],
  30.    
  31.     bool: FW_ODOM
  32. ;
  33.  
  34. /* ** Script ** */
  35. forward fw_DestroyProjectile( id, pid );
  36. forward fw_SetToExplode( Float: X, Float: Y, Float: Z );
  37.  
  38. stock CreateFirework( Float: X, Float: Y, Float: Z, Float: speed = 9.0, Float: height = 30.0 )
  39. {
  40.     new
  41.         id;
  42.        
  43.     for( id = 0; id < sizeof( g_fireWorkData ); ++id )
  44.         if( !g_fireWorkData[ id ] [ E_PLACED ] ) break;
  45.        
  46.     if( id >= sizeof( g_fireWorkData ) )
  47.         return -1;
  48.    
  49.     if( g_fireWorkData[ id ] [ E_PLACED ] )
  50.         return -1;
  51.        
  52.     g_fireWorkData[ id ] [ E_PLACED ] = true;
  53.     g_fireWorkData[ id ] [ E_OBJECT_ID ] = CreateDynamicObject( 345, X, Y, Z, 90.0, 0.0, 0.0 );
  54.     MoveDynamicObject( g_fireWorkData[ id ] [ E_OBJECT_ID ], X, Y, Z + height, speed );
  55.     return id;
  56. }
  57.  
  58. public OnDynamicObjectMoved( objectid )
  59. {
  60.     for( new id = 0; id < sizeof( g_fireWorkData ); id++ )
  61.     {
  62.         if( g_fireWorkData[ id ] [ E_OBJECT_ID ] == objectid )
  63.         {      
  64.             new
  65.                 Float: X, Float: Y, Float: Z
  66.             ;
  67.             GetDynamicObjectPos( objectid, X, Y, Z );
  68.             for( new x = 0, Float: degree = 0.0; x < MAX_PROJECTILES; x++ )
  69.             {
  70.                 degree += ( 360 / MAX_PROJECTILES );
  71.                
  72.                 #if NEON_MODE == true
  73.                     g_fireWorkData[ id ] [ E_PROJECTILE ] [ x ] = CreateDynamicObject( fw::RandomEx( 18647, 18652 ), X, Y, Z, 0.0, 0.0, degree );
  74.                     X += 2.0 * floatsin( degree, degrees );
  75.                     Y += 2.0 * floatcos( degree, degrees );
  76.                     Z += 2.0 * floattan( degree, degrees );
  77.                     MoveDynamicObject( g_fireWorkData[ id ] [ E_PROJECTILE ] [ x ], X, Y, Z, 5.0 );
  78.                     SetTimerEx( "fw_DestroyProjectile", 6000, false, "dd", id, x );
  79.                 #else
  80.                     X += random( 10 ) * floatsin( degree, degrees );
  81.                     Y += random( 10 ) * floatcos( degree, degrees );
  82.                     Z += random( 5 ) * floattan( degree, degrees );
  83.                     SetTimerEx( "fw_SetToExplode", x * EXPLOSION_DELAY, false, "fff", X, Y, Z );
  84.                 #endif
  85.             }
  86.             g_fireWorkData[ id ] [ E_PLACED ] = false;
  87.             DestroyDynamicObject( g_fireWorkData[ id ] [ E_OBJECT_ID ] );
  88.             g_fireWorkData[ id ] [ E_OBJECT_ID ] = INVALID_OBJECT_ID;  
  89.             break;
  90.         }
  91.     }
  92.     return ( FW_ODOM ) ? CallLocalFunction( "FW_OnDynamicObjectMoved", "d", objectid ) : 1;
  93. }
  94.  
  95. public fw_SetToExplode( Float: X, Float: Y, Float: Z )
  96.     return CreateExplosion( X, Y, Z, 10, 0.0 );
  97.  
  98. public fw_DestroyProjectile( id, pid )
  99. {
  100.     DestroyDynamicObject( g_fireWorkData[ id ] [ E_PROJECTILE ] [ pid ] );
  101.     g_fireWorkData[ id ] [ E_PROJECTILE ] [ pid ] = INVALID_OBJECT_ID;
  102.     return 1;
  103. }
  104.  
  105. #if defined _ALS_OnDynamicObjectMoved
  106.     #undef OnDynamicObjectMoved
  107. #else
  108.     #define _ALS_OnDynamicObjectMoved
  109. #endif
  110. #define OnDynamicObjectMoved FW_OnDynamicObjectMoved
  111. forward FW_OnDynamicObjectMoved( objectid );
  112.    
  113.  
  114. #if !defined FILTERSCRIPT
  115.     public OnGameModeInit()
  116.     {
  117.         FW_ODOM = ( funcidx( "FW_OnDynamicObjectMoved" ) != -1 );
  118.         return ( funcidx( "FW_OnGameModeInit" ) != -1 ) ? CallLocalFunction( "FW_OnGameModeInit", "" ) : 1;
  119.     }  
  120.     #if defined _ALS_OnGameModeInit
  121.         #undef OnGameModeInit
  122.     #else
  123.         #define _ALS_OnGameModeInit
  124.     #endif
  125.     #define OnGameModeInit FW_OnGameModeInit
  126.     forward FW_OnGameModeInit();
  127. #else
  128.     public OnFilterScriptInit()
  129.     {
  130.         FW_ODOM = ( funcidx( "FW_OnDynamicObjectMoved" ) != -1 );
  131.         return ( funcidx( "FW_OnFilterScriptInit" ) != -1 ) ? CallLocalFunction( "FW_OnFilterScriptInit", "" ) : 1;
  132.     }  
  133.     #if defined _ALS_OnFilterScriptInit
  134.         #undef OnFilterScriptInit
  135.     #else
  136.         #define _ALS_OnFilterScriptInit
  137.     #endif
  138.     #define OnFilterScriptInit FW_OnFilterScriptInit
  139.     forward FW_OnFilterScriptInit();
  140. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement