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)