Witam .
Mam pewien problem z pluginem na podmianę broni.
Załączam tutaj kod :
/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#include < fun >
#include < fakemeta_util >
#include < engine >
new old_weapon[ 33 ];
new bool:ma_bron[ 33 ];
new MsgIndexWeaponList;
public plugin_init()
{
register_plugin( "Custom Weapon", "1.0", "Fili:P" );
register_event( "CurWeapon", "CurWeapon", "be", "1=1" );
register_forward( FM_SetModel, "fw_SetModel" );
MsgIndexWeaponList = get_user_msgid( "WeaponList" );
RegisterHam( Ham_Item_AddToPlayer, "weapon_m3", "OnAddToPlayerWpn" );
RegisterHam( Ham_Item_ItemSlot, "weapon_m3", "OnItemSlotWpn" );
RegisterHam( Ham_TakeDamage, "player", "fw_TakeDmg", 0 );
register_clcmd( "weapon_diesel", "ClientCommand_SelectWpn" );
register_clcmd( "give_diesel", "give_diesel" );
}
public plugin_precache()
{
precache_model( "models/gtm_guns/diesel/p_m3.mdl" );
precache_model( "models/gtm_guns/diesel/w_m3.mdl" );
precache_model( "models/gtm_guns/diesel/w_m3.mdl" );
precache_generic( "sprites/w_m3.spr" );
precache_generic( "sprites/w_m3.spr" );
}
public plugin_natives()
{
register_native( "give_diesel", "give_wpn", 1 );
register_native( "still_diesel", "take_wpn", 1 );
}
public still_diesel( id )
{
ClientCommand_SelectWpn( id );
client_cmd( id, "drop" );
}
public give_diesel( id )
{
new item = give_item( id, "weapon_diesel" );
message_begin( MSG_ONE, MsgIndexWeaponList, _, id );
write_string( "weapon_diesel" ); // WeaponName
write_byte( 5 ); // PrimaryAmmoID
write_byte( 5 ); // PrimaryAmmoMaxAmount write_byte( -1 ); // SecondaryAmmoID
write_byte( -1 ); // SecondaryAmmoMaxAmount
write_byte( 1 ); // SlotID (0...N)
write_byte( 2 ); // NumberInSlot (1...N)
write_byte( CSW_M3 ); // WeaponID
write_byte( 0 ); // Flags
message_end();
ClientCommand_SelectWpn( id );
}
public fw_TakeDmg( vic, idi, id, Float:damage, damagebits )
{
if( !is_user_alive( id ) || !is_user_alive( vic ) )
return HAM_IGNORED;
if( !(damagebits & 4098) )
return HAM_IGNORED;
if( !ma_bron[ id ] )
return HAM_IGNORED;
SetHamParamFloat( 4, damage * 3.2 );
return HAM_HANDLED;
}
public ClientCommand_SelectWpn( const client )
{
engclient_cmd( client, " weapon_m3 " );
}
public CurWeapon( id )
{
if( !is_user_alive( id ) )
return
if( !ma_bron[ id ] )
return
set_pev( id, pev_viewmodel2, "models/gtm_guns/diesel/w_m3.mdl" );
set_pev( id, pev_weaponmodel2, "models/gtm_guns/diesel/p_m3.mdl" );
if( read_data( 2 ) != old_weapon[ id ] )
setWeaponAnim( id, 2 );
old_weapon[ id ] = read_data( 2 );
new iEnt;
static Float:fSpeedMultiplier = 0.7
if(old_weapon[ id ] == CSW_M3)
{
iEnt = fm_find_ent_by_owner(-1, "weapon_m3", id)
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
}
}
public fw_SetModel(entity, model[])
{
if(!is_valid_ent(entity))
return FMRES_IGNORED;
if( equal( model, "w_m3.mdl" ) && ma_bron[ pev( entity, pev_owner ) ] )
{
set_pev( entity, pev_model, "models/gtm_guns/diesel/w_m3.mdl" );
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public OnAddToPlayerWpn( const item, const player )
{
if( pev_valid( item ) && is_user_alive( player ) )
{
message_begin( MSG_ONE, MsgIndexWeaponList, _, player );
write_string( "weapon_diesel" ); // WeaponName
write_byte( CSW_M3 ); // PrimaryAmmoID
write_byte( 5 ); // PrimaryAmmoMaxAmount write_byte( -1 ); // SecondaryAmmoID
write_byte( -1 ); // SecondaryAmmoMaxAmount
write_byte( 1 ); // SlotID (0...N)
write_byte( 2 ); // NumberInSlot (1...N)
write_byte( CSW_M3 ); // WeaponID
write_byte( 0 ); // Flags
message_end();
}
}
public OnItemSlotWpn( const item )
{
SetHamReturnInteger(2);
return HAM_SUPERCEDE;
}
stock setWeaponAnim(id, anim)
{
set_pev(id, pev_weaponanim, anim)
message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
write_byte(anim)
write_byte(pev(id, pev_body))
message_end()
}
A coś takiego mam w logach po odpaleniu debugu pluginu:
L 07/11/2013 - 11:25:47: [FUN] Item "weapon_diesel" failed to create L 07/11/2013 - 11:25:47: [AMXX] Displaying debug trace (plugin "m3_diesel.amxx") L 07/11/2013 - 11:25:47: [AMXX] Run time error 10: native error (native "give_item") L 07/11/2013 - 11:25:47: [AMXX] [0] m3_diesel.sma::give_diesel (line 46)


Dodatki SourceMod













