I have been adding weapon related functions to my libcod git the last few weeks.
Also I found out how the weapons use their move speed scale. So i added this cod4 function to cod2 .
PHP Code:
player SetMoveSpeedScale(2.5)
Note: you need to reset the value manual. It doesn't automatically revert back to 1 when the player disconnects or the map restarts.
PHP Code:
init()
{
setdefaultweapon("mp44_mp"); // changes defaultweapon_mp to mp44_mp
level.otherweapons = []; // for weapons that aren't stored in level.weapons
level.otherweapons["glock_mp"] = spawnstruct();
loadedweapons = getloadedweapons();
developer = getCvarInt("developer_script");
for(i=0;i<loadedweapons.size;i++)
{
weaponname = loadedweapons[i]; // i = weapon index
if(isDefined(level.weapons[weaponname]))
loadWeaponInfo(i, level.weapons[weaponname]);
else if(isDefined(level.otherweapons[weaponname]))
loadWeaponInfo(i, level.otherweapons[weaponname]);
if(developer == 1 || i >= 64)
printfline("[%]: %", i, weaponname);
}
setWepDamage("glock_mp", 65, true);
setWepMeleeDamage("raygun_m2_mp", 400, true);
}
I made these wrappers to make the function easier and less messy.
PHP Code:
loadWeaponInfo(i, array)
{
array.id = i;
array.dmg = getweapondamage(i); // store baseline
array.meleedmg = getweaponmeleedamage(i); // in case you want to restore old value
if(i >= 64) // no viewmodels after 64th weapon
array.bugged = 1;
}
getWeaponArray(weapon)
{
if(isDefined(level.weapons[weapon]) && isDefined(level.weapons[weapon].id))
return level.weapons[weapon];
else if(isDefined(level.otherweapons[weapon]) && isDefined(level.otherweapons[weapon].id))
return level.otherweapons[weapon];
else
return undefined;
}
updateWepDamage(weapon, dmg)
{
array = getWeaponArray(weapon);
if(isDefined(array))
array.dmg = dmg;
}
updateWepMeleeDamage(weapon, dmg)
{
array = getWeaponArray(weapon);
if(isDefined(array))
array.meleedmg = dmg;
}
getWeaponId(weapon)
{
if(isDefined(level.weapons[weapon]) && isDefined(level.weapons[weapon].id))
return level.weapons[weapon].id;
else if(isDefined(level.otherweapons[weapon]) && isDefined(level.otherweapons[weapon].id))
return level.otherweapons[weapon].id;
else
return -1;
}
WeaponMaxAmmo(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;
return getweaponmaxammo(id);
}
WeaponDamage(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;
return getweapondamage(id);
}
WeaponMeleeDamage(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;
return getweaponmeleedamage(id);
}
setWepDamage(weapon, dmg, isdefault)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;
if(isDefined(isdefault) && isdefault)
updateWepDamage(weapon, dmg);
return setweapondamage(id, dmg);
}
setWepMeleeDamage(weapon, dmg, isdefault)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;
if(isDefined(isdefault) && isdefault)
updateWepMeleeDamage(weapon, dmg);
return setweaponmeleedamage(id, dmg);
}
I haven't found where cod stored the hit location multiplier yet. You can check the bottom of gsc_utils.cpp to see what i mapped so far.
Is there any function related to weapon that you would like?
Edit: forgot one example (i copied the cod4 name)
PHP Code:
maxammo = WeaponMaxAmmo("mp44_mp");