PDA

View Full Version : Advanced dod_get/set_weapon_scoped


xxavalanchexx
06-21-2007, 12:15 AM
I just compiled this as a way to change whether a weapon is scoped or not without having to change out to another weapon and back.

// see if an enfield/fg42 is scoped
stock dod_get_weapon_scoped(ent)
{
return get_pdata_int(ent,115,4);
}

// set an enfield/fg42 to scoped
stock dod_set_weapon_scoped(ent,value)
{
static gmsgSetFOV, gmsgScope;
if(!gmsgSetFOV)
{
gmsgSetFOV = get_user_msgid("SetFOV");
gmsgScope = get_user_msgid("Scope");
}

new wId = get_pdata_int(ent,91,4);
if(wId != DODW_FG42 && wId != DODW_ENFIELD) return 0;

set_pdata_int(ent,115,value,4);

new owner = pev(ent,pev_owner);
if(!is_user_connected(owner)) return 1;

new dummy, curweapon = get_user_weapon(owner,dummy,dummy);
switch(curweapon)
{
case DODW_SCOPED_FG42: curweapon = DODW_FG42;
case DODW_SCOPED_ENFIELD: curweapon = DODW_ENFIELD;
}

if(wId != curweapon) return 1;

if(!value)
{
message_begin(MSG_ONE,gmsgSetFOV,_,owner);
write_byte(0);
message_end();

message_begin(MSG_ONE,gmsgScope,_,owner);
write_byte(0);
message_end();

new Float:speed;
if(pev(owner,pev_maxspeed,speed) && speed == 42.0)
set_pev(owner,pev_maxspeed,600.0);

switch(wId)
{
case DODW_FG42:
{
set_pev(owner,pev_viewmodel2,"models/v_fg42.mdl");
set_pev(owner,pev_weaponmodel2,"models/p_fg42bu.mdl");
}
default:
{
set_pev(owner,pev_viewmodel2,"models/v_enfield.mdl");
set_pev(owner,pev_weaponmodel2,"models/p_enfield.mdl");
}
}
}
else
{
switch(wId)
{
case DODW_FG42:
{
set_pev(owner,pev_viewmodel2,"models/v_scopedfg42.mdl");
set_pev(owner,pev_weaponmodel2,"models/p_fg42s.mdl");
}
default:
{
set_pev(owner,pev_viewmodel2,"models/v_enfield_scoped.mdl");
set_pev(owner,pev_weaponmodel2,"models/p_enfields.mdl");
}
}
}

return 1;
}

The only bug with it, is if you have the Scoped FG42 out, and you have the scope up, if you set it to non-scoped, the firerate will still be as if it was scoped until you switch weapons.

Hell Phoenix
06-21-2007, 12:46 PM
Very nice.