I have a problem with instant change weapon model through Forward - FM_UpdateClientData and I don't know, where is the error, please?
Code:
PHP Code:
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#include < cstrike >
#define EXTRAOFFSET_WEAPON 4
#define m_pPlayer 41
new bool:g_bSkins[ 33 ];
public plugin_init()
{
register_plugin( "Test", "1.0", "Author" );
new szWeapon[ 20 ];
for(new i = CSW_P228; i <= CSW_P90; i++ )
{
if( get_weaponname( i, szWeapon, charsmax( szWeapon ) ) )
{
RegisterHam( Ham_Item_Deploy, szWeapon, "ham_Deploy_Post", 1 );
}
}
register_forward( FM_UpdateClientData, "UpdateClientData_Post", 1 );
register_clcmd( "say /test", "Open_Setting" );
}
public client_putinserver( id )
{
g_bSkins[ id ] = true;
}
public ham_Deploy_Post( iWeapon )
{
new id = get_pdata_cbase( iWeapon, m_pPlayer, EXTRAOFFSET_WEAPON );
new iCswId = cs_get_weapon_id( iWeapon );
if( g_bSkins[ id ] )
{
if( iCswId == CSW_KNIFE )
{
set_pev( id, pev_viewmodel2, "models/v_newknife.mdl" );
set_pev( id, pev_weaponmodel2, "models/p_newknife.mdl" );
}
}
else
{
if( iCswId == CSW_KNIFE )
{
set_pev( id, pev_viewmodel2, "models/v_knife.mdl" );
set_pev( id, pev_weaponmodel2, "models/p_knife.mdl" );
}
}
}
public UpdateClientData_Post( id, sendweapons, cd_handle )
{
if( !is_user_alive( id ) )
return FMRES_IGNORED;
if( g_bSkins[ id ] )
{
get_cd( cd_handle, CD_ViewModel, g_bSkins[ id ] );
}
else
{
set_cd( cd_handle, CD_ViewModel );
}
return FMRES_HANDLED;
}
public Open_Setting( id )
{
new hSet = menu_create( "\ySetting:", "Handler_Setting" );
menu_additem( hSet, ( g_bSkins[ id ] ) ? "\wSkins \y[ON]" : "\wSkins \r[OFF]", "1", 0);
menu_display( id, hSet, 0 );
}
public Handler_Setting( id, hMenu, iItem )
{
if( iItem == MENU_EXIT )
{
return;
}
new szData[ 6 ], iAccess2, hCallback;
menu_item_getinfo( hMenu, iItem, iAccess2, szData, 5, _, _, hCallback );
new iKey = str_to_num( szData );
switch( iKey )
{
case 1:
{
g_bSkins[ id ] = ( g_bSkins[ id ] ) ? false : true;
}
}
menu_destroy( hMenu );
return;
}