PDA

View Full Version : Getting weapons.


TooLz
03-22-2007, 05:59 PM
Well I've got a small problem here, I can only find one method to receive a weapon, which is give_item(id, "weapon_name") Well my problem with that is simple.. I need to get the weapon without the weapon_name, I want to either get it by the weapon number or name listed in dodconst.inc

For instance, I need to get DODW_SCOPED_FG42, or weapon #32, its seeming to be easier said than done at this point, I've tried several things and no luck, if anyone has any ideas on how to do this, let me know. I've been referencing loads of other code here just to see before asking if anyone else has done it, and it seems the only way I can use DODW_SCOPED_FG42 is just by giving them the ammo for it, which is obviously pointless and not what I need to do.

Let me know if anyone knows a way to do this, I'll be highly greatful!

Cya

Zor
03-23-2007, 09:36 AM
Try looking at:


if(!(pev(id, SOMEIDIDONTREMEMBER)&(0<<32)))
{
//Remove weapon
pev(id, SOMEIDIDONTREMEMBER)~(0<<weaponid))

//Give weapon
pev(id, SOMEIDIDONTREMEMBER)&(0<<32))
}


Or something like so!

Cheers!

TooLz
03-23-2007, 10:02 AM
public cmdScopedFG42(id){
new weapon_id[32]
pev(id, weapon_id)&(0<<32)
give_item(id,weapon_id)
return PLUGIN_HANDLED
}

Not sure if I did that right or not, but it definently still doesnt work. lol

Cya

Allenwr
03-23-2007, 11:17 AM
yes, its called fakemeta

TooLz
03-23-2007, 11:29 AM
Found that out right before you posted, edited the post above to my code that does not work still..

Cya

TooLz
03-23-2007, 11:55 AM
Found this list of pev values, making my life a little easier below:
enum
{
pev_string_start = 0, // ignore all "pev_*_start" and "pev_*_end"
pev_classname,
pev_globalname,
pev_model,
pev_target,
pev_targetname,
pev_netname,
pev_message,
pev_noise,
pev_noise1,
pev_noise2,
pev_noise3,
pev_string_end,
pev_edict_start,
pev_chain,
pev_dmg_inflictor,
pev_enemy,
pev_aiment,
pev_owner,
pev_groundentity,
pev_euser1,
pev_euser2,
pev_euser3,
pev_euser4,
pev_edict_end,
pev_float_start,
pev_impacttime,
pev_starttime,
pev_idealpitch,
pev_pitch_speed,
pev_yaw_speed,
pev_ltime,
pev_nextthink,
pev_gravity,
pev_friction,
pev_frame,
pev_animtime,
pev_framerate,
pev_scale,
pev_renderamt,
pev_health,
pev_frags,
pev_takedamage,
pev_max_health,
pev_teleport_time,
pev_armortype,
pev_armorvalue,
pev_dmg_take,
pev_dmg_save,
pev_dmg,
pev_dmgtime,
pev_speed,
pev_air_finished,
pev_pain_finished,
pev_radsuit_finished,
pev_maxspeed,
pev_fov,
pev_flFallVelocity,
pev_fuser1,
pev_fuser2,
pev_fuser3,
pev_fuser4,
pev_float_end,
pev_int_start,
pev_fixangle,
pev_modelindex,
pev_viewmodel,
pev_weaponmodel,
pev_movetype,
pev_solid,
pev_skin,
pev_body,
pev_effects,
pev_light_level,
pev_sequence,
pev_gaitsequence,
pev_rendermode,
pev_renderfx,
pev_weapons,
pev_deadflag,
pev_button,
pev_impulse,
pev_spawnflags,
pev_flags,
pev_colormap,
pev_team,
pev_waterlevel,
pev_watertype,
pev_playerclass,
pev_weaponanim,
pev_pushmsec,
pev_bInDuck,
pev_flTimeStepSound,
pev_flSwimTime,
pev_flDuckTime,
pev_iStepLeft,
pev_gamestate,
pev_oldbuttons,
pev_groupinfo,
pev_iuser1,
pev_iuser2,
pev_iuser3,
pev_iuser4,
pev_int_end,
pev_vec_start,
pev_origin_x,
pev_origin_y,
pev_origin_z,
pev_oldorigin_x,
pev_oldorigin_y,
pev_oldorigin_z,
pev_velocity_x,
pev_velocity_y,
pev_velocity_z,
pev_basevelocity_x,
pev_basevelocity_y,
pev_basevelocity_z,
pev_clbasevelocity_x,
pev_clbasevelocity_y,
pev_clbasevelocity_z,
pev_movedir_x,
pev_movedir_y,
pev_movedir_z,
pev_angles_x,
pev_angles_y,
pev_angles_z,
pev_avelocity_x,
pev_avelocity_y,
pev_avelocity_z,
pev_v_angle_x,
pev_v_angle_y,
pev_v_angle_z,
pev_endpos_x,
pev_endpos_y,
pev_endpos_z,
pev_startpos_x,
pev_startpos_y,
pev_startpos_z,
pev_absmin_x,
pev_absmin_y,
pev_absmin_z,
pev_absmax_x,
pev_absmax_y,
pev_absmax_z,
pev_mins_x,
pev_mins_y,
pev_mins_z,
pev_maxs_x,
pev_maxs_y,
pev_maxs_z,
pev_size_x,
pev_size_y,
pev_size_z,
pev_rendercolor_x,
pev_rendercolor_y,
pev_rendercolor_z,
pev_view_ofs_x,
pev_view_ofs_y,
pev_view_ofs_z,
pev_vuser1_x,
pev_vuser1_y,
pev_vuser1_z,
pev_vuser2_x,
pev_vuser2_y,
pev_vuser2_z,
pev_vuser3_x,
pev_vuser3_y,
pev_vuser3_z,
pev_vuser4_x,
pev_vuser4_y,
pev_vuser4_z,
pev_vec_end,
pev_vecl_start,
pev_vec_x,
pev_vec_y,
pev_vec_z,
pev_vecl_end,
pev_byte_start,
pev_controller_0,
pev_controller_1,
pev_controller_2,
pev_controller_3,
pev_blending_0,
pev_blending_1,
pev_byte_end,
pev_bytearray_start,
pev_controller,
pev_blending,
pev_bytearray_end,
pev_vecarray_start,
pev_origin,
pev_oldorigin,
pev_velocity,
pev_basevelocity,
pev_clbasevelocity,
pev_movedir,
pev_angles,
pev_avelocity,
pev_v_angle,
pev_endpos,
pev_startpos,
pev_absmin,
pev_absmax,
pev_mins,
pev_maxs,
pev_size,
pev_rendercolor,
pev_view_ofs,
pev_vuser1,
pev_vuser2,
pev_vuser3,
pev_vuser4,
pev_punchangle,
pev_vecarray_end

}

Did this assuming pev_weapons was my way to go:

public cmdScopedFG42(id){
pev(id, pev_weapons)&(0<<32)
return PLUGIN_HANDLED
}

Still failed.. lol

Cya

TooLz
03-25-2007, 08:14 AM
lol well I managed to make it turn my FG42's model into a scoped FG42, but it still obviously didn't scope. So still an issue.. lol

public plugin_precache() {
precache_model("models/p_scopedfg42bu.mdl")
precache_model("models/v_scopedfg42.mdl")
}
public give_scopedfg42(id) {
give_item(id, "weapon_fg42")
give_item(id, "ammo_fg42")
entity_set_string(id, EV_SZ_viewmodel, "models/v_scopedfg42.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_scopedfg42bu.mdl")
}

Cya

Wilson [29th ID]
03-25-2007, 09:52 AM
We got it. ToolZ and I were using FMResearch to scroll through pdata and compare the weapons.
The offset is 115.

So grab a regular FG42 and change the offset 115 to 1, and it becomes a scoped fg42. (switch weapons and it refreshes the model too.)

Same thing with enfield and scoped enfield.

Hooray for FM Research! :P

TooLz
03-25-2007, 11:42 AM
stock detect_weapon_id(id) {
// Big thanks to Wilson for this stock!
new m_iCurEnt = -1, m_iWpnEnt = 0, m_szWpn[32];
new clip, ammo, m_iWpn = get_user_weapon(id,clip,ammo);
xmod_get_wpnlogname( m_iWpn, m_szWpn, 31 ); // Requires DoDX Module
format( m_szWpn, 31, "weapon_%s", m_szWpn );
if(equal(m_szWpn, "weapon_scoped_enfield")) m_szWpn = "weapon_enfield";
new Float:m_flOrigin[3];
pev( id, pev_origin, m_flOrigin );
while( ( m_iCurEnt = engfunc( EngFunc_FindEntityInSphere, m_iCurEnt, m_flOrigin, Float:1.0 ) ) != 0 ) {
new m_szClassname[32];
pev( m_iCurEnt, pev_classname, m_szClassname, 31 );
if( equal( m_szClassname, m_szWpn ) )
m_iWpnEnt = m_iCurEnt;
}
return m_iWpnEnt;
}
public cmdMakeScoped(id){
set_pdata_int(detect_weapon_id(id),115,1)
}

Great work, thanks for the help Wilson, and everyone - Enjoy the finally long awaited complete version of Weapons Mod 2.0

Cya

diamond-optic
03-25-2007, 08:27 PM
fucking awesome!