Advertisement
macquid123560

Top Jailbreak | Lr Dodgeball

Mar 23rd, 2016
912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.90 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < fakemeta >
  3. #include < fakemeta_util >
  4. #include < engine >
  5. #include < cstrike >
  6. #include < csx >
  7.  
  8. native bool: is_user_lr( const index );
  9. native bool: is_lr_active();
  10. native stop_lr( Num = 0 );
  11. native bool: is_lr_dodgeball();
  12.  
  13. /* Variables */
  14.     new Sprite,
  15.  
  16. /* Arrays */
  17.     g_Models[ 3 ][ ] =
  18.     {
  19.         "models/Top/JB/LR/p_dodgeball.mdl",
  20.         "models/Top/JB/LR/v_dodgeball.mdl",
  21.         "models/Top/JB/LR/w_dodgeball.mdl"
  22.     };
  23.    
  24.     new g_Sprite[ ][ ] = {"sprites/lgtning.spr" };
  25.    
  26.     new const g_Sound[ ] = "weapons/g_bound1.wav";
  27.    
  28.     new g_mBalls[ 33 ];
  29.  
  30. public plugin_init( )
  31. {
  32.     register_plugin( "Dodgeball Day", "0.1b", "Built by Rejack || Edit by @.TheBomB`" );
  33.    
  34.     register_event( "CurWeapon", "evCurWeapon", "b" );
  35.    
  36.     //register_event( "RoundTime", "evRoundTime", "bc" );
  37.    
  38.     register_message( get_user_msgid( "SendAudio" ), "MsgAudio" );
  39.    
  40.     register_message( get_user_msgid( "TextMsg" ), "MsgText" );
  41.    
  42.     register_touch( "*", "player", "PlayerInteract" );
  43.    
  44.     register_touch( "grenade", "*", "BallInteract" );
  45.    
  46.     register_forward( FM_SetModel, "FwdSetModel", 0 );
  47.    
  48.     register_forward( FM_EmitSound, "FwdEmitSound", 0 );
  49.    
  50.     register_think( "grenade", "FwdThinkGrenade" );
  51. }
  52.  
  53. public plugin_natives()
  54. {
  55.     register_library( "dbnative" );
  56.    
  57.     register_native( "start_dodgeball", "native_start_dodgeball" );
  58.     register_native( "GetUserBalls", "nativeGetUserBalls" );
  59. }
  60.  
  61. public plugin_precache( )
  62. {
  63.     for ( new i; i < 3; i++ )
  64.         precache_model( g_Models[ i ] );
  65.        
  66.     Sprite      = precache_model( g_Sprite[ 0 ] );
  67.    
  68.     precache_sound( g_Sound );
  69. }
  70.  
  71. public native_start_dodgeball( plugin, params )
  72. {
  73.     static index, client;
  74.    
  75.     index   = get_param( 1 );
  76.    
  77.     client  = get_param( 2 );
  78.    
  79.     fm_strip_user_weapons( index );
  80.    
  81.     fm_set_user_health( index, 100 );
  82.    
  83.     fm_give_item( index, "weapon_hegrenade" );
  84.    
  85.     cs_set_user_bpammo( index, CSW_HEGRENADE, 999 );
  86.    
  87.     fm_strip_user_weapons( client );
  88.    
  89.     fm_set_user_health( client, 100 );
  90.    
  91.     fm_give_item( client, "weapon_hegrenade" );
  92.    
  93.     cs_set_user_bpammo( client, CSW_HEGRENADE, 999 );
  94.    
  95.     g_mBalls[ index ]   = 0;
  96.    
  97.     g_mBalls[ client ]  = 0;
  98. }
  99.  
  100. public nativeGetUserBalls( plugin, params )
  101.     return g_mBalls[ get_param( 1 ) ];
  102.  
  103. public grenade_throw( client, GrenadeIndex, WeaponID )
  104. {
  105.     if ( CheckLr( client ) )
  106.     {
  107.         if ( WeaponID == CSW_HEGRENADE )
  108.         {
  109.             entity_set_edict( GrenadeIndex, EV_ENT_euser1, client );
  110.             entity_set_int( GrenadeIndex, EV_INT_iuser1, 0 );
  111.             entity_set_size( GrenadeIndex, Float:{-6.0,-6.0,-6.0}, Float:{6.0,6.0,6.0} );
  112.             entity_set_float( GrenadeIndex, EV_FL_friction, 0.6 );
  113.            
  114.             message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  115.             write_byte( TE_BEAMFOLLOW );
  116.             write_short( GrenadeIndex );
  117.             write_short( Sprite );
  118.             write_byte( 20 );
  119.             write_byte( 5 );
  120.             write_byte( 0 );
  121.             write_byte( 255 );
  122.             write_byte( 255 );
  123.             write_byte( 255 );
  124.             message_end( );
  125.            
  126.             set_rendering( GrenadeIndex, kRenderFxGlowShell, 0, 255, 255 );
  127.            
  128.             g_mBalls[ client ]++;
  129.            
  130.             set_task( 0.1, "CmdStopRolling" ,GrenadeIndex );
  131.         }
  132.     }
  133. }
  134.  
  135. public CmdStopRolling( ent )
  136. {
  137.     if ( CheckLr( 0 ) )
  138.     {
  139.         if( is_valid_ent( ent ) )
  140.         {
  141.             if( get_entity_flags( ent ) & FL_ONGROUND )
  142.             {
  143.                 entity_set_vector( ent, EV_VEC_velocity, Float:{0.0,0.0,0.0} );
  144.                 entity_set_float( ent, EV_FL_gravity, 1.0 );
  145.                 remove_entity( ent );
  146.             }
  147.            
  148.             else set_task( 0.1, "CmdStopRolling", ent );
  149.         }
  150.     }
  151. }
  152. public PlayerInteract( ent, client )
  153. {
  154.     if ( CheckLr( client ) )
  155.     {
  156.         if ( !is_valid_ent( ent ) ) return 0;
  157.        
  158.         new szClassname[ 32 ], szModel[ 32 ];
  159.        
  160.         entity_get_string( ent, EV_SZ_classname, szClassname, charsmax( szClassname ) );
  161.        
  162.         entity_get_string( ent, EV_SZ_model, szModel, charsmax( szModel ) );
  163.        
  164.         if ( equali( szClassname, "armoury_entity" ) )
  165.         {
  166.    
  167.             if ( equali( szModel, g_Models[ 2 ] ) )
  168.             {
  169.                 if ( user_has_dodgeball( client ) <= 0 )
  170.                 {
  171.                     fm_give_item( client, "weapon_hegrenade" );
  172.                    
  173.                     remove_entity( ent );
  174.                 }
  175.             }
  176.    
  177.             return 1;
  178.         }
  179.        
  180.         if( equali ( szClassname, "grenade") )
  181.             CmdHitByBall( client, ent );
  182.     }
  183.    
  184.     return PLUGIN_CONTINUE;
  185. }
  186.  
  187. public BallInteract( ball, ent )
  188. {
  189.     if ( CheckLr( 0 ) )
  190.     {
  191.         if ( ent == 0 )
  192.         {
  193.             entity_set_int( ball, EV_INT_iuser1, 1 );
  194.            
  195.             set_rendering( ball );
  196.         }
  197.        
  198.         else
  199.         {
  200.             new szClassname[ 32] ;
  201.            
  202.             entity_get_string( ent, EV_SZ_classname, szClassname, charsmax( szClassname ) );
  203.            
  204.             if ( equali ( szClassname, "func_", 5 ) )
  205.             {
  206.                 entity_set_int( ball, EV_INT_iuser1, 1 );
  207.                
  208.                 set_rendering( ball );
  209.             }
  210.         }
  211.     }
  212. }
  213.  
  214. public CmdHitByBall( client, ball )
  215. {
  216.     if ( CheckLr( client ) )
  217.     {
  218.         if( entity_get_int( ball, EV_INT_iuser1 ) == 1 )
  219.         {
  220.             if( user_has_dodgeball( client ) <= 0 )
  221.                 remove_entity( ball );
  222.                
  223.             return 1;
  224.         }
  225.        
  226.         new Owner = entity_get_edict( ball, EV_ENT_euser1 );
  227.        
  228.         if( Owner == client )
  229.         {
  230.             remove_entity( ball );
  231.            
  232.             return 1;
  233.         }
  234.        
  235.         if ( !CheckLr( Owner ) )
  236.             return 1;
  237.        
  238.         new Float:iOrigin[ 3 ], Float:vec[ 3 ], Float:bOrigin[ 3 ], Float:Maxs[ 3 ];
  239.        
  240.         entity_get_vector( ball, EV_VEC_origin, iOrigin );
  241.        
  242.         get_velocity( client, iOrigin, 5120.0, vec );
  243.        
  244.         vec[2] = 512.0;
  245.        
  246.         entity_set_vector( client, EV_VEC_velocity, vec );
  247.        
  248.         fm_set_user_godmode( client, 1 );
  249.        
  250.         set_task( 0.1, "CmdKill" ,client );
  251.        
  252.         remove_entity( ball );
  253.        
  254.         entity_get_vector( client, EV_VEC_maxs, Maxs );
  255.        
  256.         entity_get_vector( client, EV_VEC_origin, bOrigin);
  257.        
  258.         bOrigin[ 2 ] += Maxs[ 2 ];
  259.        
  260.         entity_set_int( ball, EV_INT_iuser1, 1 );
  261.     }
  262.    
  263.     return 0;
  264. }
  265.  
  266. public CmdKill( client )
  267. {
  268.     if ( CheckLr( client ) )
  269.     {
  270.         user_silentkill( client );
  271.        
  272.         new iOrigin[ 3 ]
  273.        
  274.         get_user_origin( client , iOrigin, 1 );
  275.        
  276.         stop_lr( 1 );
  277.     }
  278. }
  279.  
  280. /* Events */
  281.  
  282. public evRoundTime( )
  283. {
  284.     new ent;
  285.    
  286.     while( ( ent = find_ent_by_class( ent, "grenade" ) ) != 0 ) remove_entity( ent );
  287.    
  288.     stop_lr( 1 );
  289. }
  290.  
  291. public evCurWeapon( client )
  292. {
  293.     if ( CheckLr( client ) )
  294.     {
  295.         new Clip, Ammo, Weapon = get_user_weapon( client, Clip, Ammo );
  296.        
  297.         if( Weapon == CSW_HEGRENADE )
  298.         {
  299.             entity_set_string( client, EV_SZ_viewmodel, g_Models[ 1 ] );
  300.            
  301.             entity_set_string( client, EV_SZ_weaponmodel, g_Models[ 0 ] );
  302.         }
  303.     }
  304. }
  305.  
  306. /* Forwards */
  307.  
  308. public FwdSetModel( ent, szModel[ ] )
  309. {
  310.     if ( CheckLr( 0 ) )
  311.     {
  312.         if ( equali( szModel, "models/w_hegrenade.mdl" ) )
  313.         {
  314.             entity_set_model( ent, g_Models[ 2 ] );
  315.            
  316.             return FMRES_SUPERCEDE;
  317.         }
  318.     }
  319.    
  320.     return FMRES_IGNORED;
  321. }
  322.  
  323. public FwdEmitSound( ent, channel, sample[], Float:volume, Float:atten, flags, pitch)
  324. {
  325.     if ( CheckLr( 0 ) )
  326.     {
  327.         if( containi( sample, "he_bounce" ) != -1 )
  328.         {
  329.             if ( entity_get_float( ent, EV_FL_fuser1 ) + 0.3 < get_gametime( ) )
  330.             {
  331.                 entity_set_float( ent, EV_FL_fuser1, get_gametime( ) );
  332.                
  333.                 emit_sound( ent, CHAN_ITEM, g_Sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
  334.             }
  335.             return FMRES_SUPERCEDE;
  336.         }
  337.     }
  338.    
  339.     return FMRES_IGNORED;
  340. }
  341.  
  342. public FwdThinkGrenade( ent )
  343. {
  344.     if ( !CheckLr( 0 ) )
  345.         return 0;
  346.    
  347.     new szModel[ 64 ];
  348.     entity_get_string( ent, EV_SZ_model, szModel, charsmax( szModel ) );
  349.    
  350.     if ( !equali( szModel, g_Models[ 2 ] ) )
  351.         return 0;
  352.    
  353.     return 1;
  354.    
  355. }
  356.  
  357. /* Messages */
  358.  
  359. public MsgAudio()
  360. {
  361.     if ( CheckLr( 0 ) )
  362.     {
  363.         new szString[ 32 ];
  364.        
  365.         get_msg_arg_string( 2, szString, charsmax( szString ) );
  366.        
  367.         if ( equal( szString, "%!MRAD_FIREINHOLE" ) )
  368.             return 1;
  369.     }
  370.    
  371.     return PLUGIN_CONTINUE;
  372. }
  373.  
  374. public MsgText()
  375. {
  376.     if ( CheckLr( 0 ) )
  377.     {
  378.         new szString[ 32 ];
  379.        
  380.         get_msg_arg_string( 2, szString, charsmax( szString ) );
  381.        
  382.         if ( equali( szString, "#Weapon_Cannot_Be_Dropped" ) )
  383.             return 1;
  384.        
  385.         if ( str_to_num( szString ) > 0 )
  386.         {
  387.             get_msg_arg_string( 3, szString, charsmax( szString ) );
  388.             if ( equali( szString, "#Game_radio" ) )
  389.             {
  390.                 get_msg_arg_string( 5, szString, charsmax( szString ) );
  391.                 if ( equali( szString, "#Fire_in_the_hole" ) )
  392.                     return 1;
  393.             }
  394.         }
  395.     }
  396.    
  397.     return PLUGIN_CONTINUE;
  398. }
  399.  
  400. /* Stocks */
  401.  
  402. stock user_has_dodgeball( client )
  403. {
  404.     new Clip, Ammo;
  405.    
  406.     get_user_ammo( client, CSW_HEGRENADE, Clip, Ammo );
  407.    
  408.     return Ammo;
  409. }
  410.  
  411. stock get_velocity( ent, Float:fOrigin[ 3 ], Float:fSpeed, Float:fVelocity[ 3 ] )
  412. {
  413.     new Float:fEntOrigin[3];
  414.     entity_get_vector(ent,EV_VEC_origin,fEntOrigin);
  415.    
  416.     new Float:fDistance[3];
  417.     fDistance[0] = fEntOrigin[0] - fOrigin[0];
  418.     fDistance[1] = fEntOrigin[1] - fOrigin[1];
  419.     fDistance[2] = fEntOrigin[2] - fOrigin[2];
  420.    
  421.     new Float:fTime = ( vector_distance( fEntOrigin,fOrigin ) / fSpeed );
  422.    
  423.     fVelocity[0] = fDistance[0] / fTime;
  424.     fVelocity[1] = fDistance[1] / fTime;
  425.     fVelocity[2] = fDistance[2] / fTime;
  426.    
  427.     return (fVelocity[0] && fVelocity[1] && fVelocity[2]);
  428. }
  429.  
  430. stock bool: CheckLr( const index )
  431. {
  432.     if ( index > 0 && is_user_lr( index ) && is_lr_active() && is_lr_dodgeball() || index == 0 && is_lr_active() && is_lr_dodgeball() )
  433.         return true;
  434.    
  435.     return false;
  436. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement