#include <amxmodx>
#include <reapi>
#define ANIM 3
#define ANIM_TIME 27.0 / 50.0
public plugin_init( )
{
RegisterHookChain( RG_CBasePlayerWeapon_CanDeploy, "CWeapon__CanDeploy_Pre", false );
register_clcmd( "drop", "Command__Drop" );
}
public Command__Drop( const pPlayer )
{
if ( !is_user_alive( pPlayer ) )
return;
new pActiveItem = get_member( pPlayer, m_pActiveItem );
if ( is_nullent( pActiveItem ) || get_entvar( pActiveItem, var_impulse ) <= 0 )
return;
set_entvar( pActiveItem, var_iuser2, true );
}
public CWeapon__CanDeploy_Pre( const pItem )
{
new pPlayer = get_member( pItem, m_pPlayer );
new pActiveItem = get_member( pPlayer, m_pActiveItem );
if ( is_nullent( pActiveItem ) || get_entvar( pActiveItem, var_impulse ) <= 0 || pItem == pActiveItem )
return HC_CONTINUE;
//if ( rg_get_iteminfo( pItem, ItemInfo_iWeight) < rg_get_iteminfo( pActiveItem, ItemInfo_iWeight ) )
// return HC_CONTINUE;
if ( get_entvar( pActiveItem, var_iuser1 ) == true )
{
set_entvar( pActiveItem, var_iuser1, false );
return HC_CONTINUE;
}
if ( get_entvar( pActiveItem, var_iuser2 ) == true )
{
set_entvar( pActiveItem, var_iuser2, false );
set_entvar( pItem, var_iuser3, true );
return HC_CONTINUE;
}
if ( get_entvar( pItem, var_iuser3 ) == true )
{
set_entvar( pItem, var_iuser3, false );
return HC_CONTINUE;
}
SetHookChainReturn( ATYPE_INTEGER, 0 );
UTIL_SendWeaponAnim( pPlayer, 3 );
new iParams[ 2 ]; iParams[ 0 ] = pPlayer, iParams[ 1 ] = pItem;
SetThink( pActiveItem, "CWeapon__Think", iParams, sizeof iParams );
set_entvar( pActiveItem, var_iuser1, true );
set_entvar( pActiveItem, var_nextthink, get_gametime( ) + ANIM_TIME );
set_member( pPlayer, m_flNextAttack, ANIM_TIME );
server_print( "CanDeploy" );
server_print( "pActiveItem %i | pItem %i", pActiveItem, pItem );
return HC_SUPERCEDE;
}
public CWeapon__Think( const pActiveItem, const iParams[ 2 ] )
{
if ( is_nullent( pActiveItem ) || !is_user_alive( iParams[ 0 ] ) )
{
SetThink( pActiveItem, "" );
return;
}
if ( is_nullent( iParams[ 1 ] ) )
{
rg_switch_weapon( iParams[ 0 ], pActiveItem );
SetThink( pActiveItem, "" );
return;
}
server_print( "Think" );
rg_switch_weapon( iParams[ 0 ], iParams[ 1 ] );
SetThink( pActiveItem, "" );
}
stock UTIL_SendWeaponAnim( pPlayer, iAnim )
{
set_entvar( pPlayer, var_weaponanim, iAnim );
message_begin( MSG_ONE, SVC_WEAPONANIM, _, pPlayer );
write_byte( iAnim );
write_byte( 0 );
message_end( );
}