I've been having problems with the value of m_iClip being incorrect on the
client side since the port to 2.2. I noticed the following code in the
client CBasePlayerWeapon that looks like a problem. Is this the case or is
it compensated for elsewhere? If it is dealt with elsewhere, then where?
void CBasePlayerWeapon::ItemPostFrame( void )
{
if ((m_fInReload) && (m_pPlayer->m_flNextAttack <= 0.0))
{
#if 0 // FIXME, need ammo on client to make this work right
// complete the reload.
int j = min( iMaxClip() - m_iClip,
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
// Add them to the clip
m_iClip += j;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j;
#else
m_iClip += 10;
#endif
m_fInReload = FALSE;
}
// ...
}
It looks to me that the clip is passed to the client in
HUD_WeaponsPostThink(), with pCurrent->m_iClip = pfrom->m_iClip. Why is
the above code clobbering the correct value of m_iClip with an arbitrary
amount? Is m_iClip just increased temporarily so we can get on with things
until it is set to the correct value the next time the server updates the
client? Am I just confused by the sequence and a hack to get things working?
Rob 'Commando' Prouse
Tour of Duty Mod
http://www.tourofdutymod.com
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders