Dynamic Viewmodel FOVs
This is a very simple copy-and-paste tutorial for setting a weapon's viewmodel FOV in it's script. Lets get started!
Add this to weapon_parse.h in the shared gamefolder:
float m_flViewModelFOV; // Dynamic Viewmodel FOV
Put this under:
char szAmmo2[MAX_WEAPON_AMMO_NAME]; // "secondary" ammo type
Next Add this string to weapon_parse.cpp in FileWeaponInfo_t::Parse:
m_flViewModelFOV = pKeyValuesData->GetFloat("ViewModelFOV", 54.0f);
and then change ClientModeShared::GetViewModelFOV in clientmode_shared.cpp to say:
ConVar r_viewmodelfov("r_viewmodelfov", "0", FCVAR_CHEAT);
float ClientModeShared::GetViewModelFOV(void)
{
float flFov = 90.0f;
if (r_viewmodelfov.GetFloat() > 0)
return r_viewmodelfov.GetFloat();
CBasePlayer *pPlayer = CBasePlayer::GetLocalPlayer();
if (!pPlayer)
return flFov;
C_BaseCombatWeapon *pWpn = pPlayer->GetActiveWeapon();
if (pWpn)
{
flFov = pWpn->GetWpnData().m_flViewModelFOV;
}
return flFov;
}
Now, due to this, the command "viewmodel_fov" will no longer work, but you will be able to set the FOVs of weapons in their script file! Just add:
"ViewModelFOV" "NaN"
To the weaponscript file and replace NaN with your FOV or choice. If it doesn't find the ViewModelFOV string in the weaponscript file, it will assume the FOV is 54.
