FIX: Reloading animation bug while holding weapon with altered Maxclip (#861)

* Add functions for default weaponinfo array
* Whitespace cleaning and pointer safety check
* Added reload condition to enhance conditions
This commit is contained in:
Francisco Muñoz 2023-09-28 06:08:35 -03:00 committed by GitHub
parent 8a52b7e38d
commit 67e7d87423
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 0 deletions

View File

@ -4822,6 +4822,16 @@ int EXT_FUNC GetWeaponData(edict_t *pEdict, struct weapon_data_s *info)
item->fuser2 = weapon->m_flStartThrow;
item->fuser3 = weapon->m_flReleaseThrow;
item->iuser1 = weapon->m_iSwing;
#ifdef REGAMEDLL_FIXES
if (pPlayerItem == pPlayer->m_pActiveItem && !weapon->m_fInReload && weapon->m_iClip == II.iMaxClip)
{
const WeaponInfoStruct *wpnInfo = GetDefaultWeaponInfo(II.iId);
if (wpnInfo && wpnInfo->gunClipSize != II.iMaxClip)
item->m_iClip = wpnInfo->gunClipSize;
}
#endif
}
}

View File

@ -529,6 +529,17 @@ WeaponInfoStruct *GetWeaponInfo(const char *weaponName)
return nullptr;
}
WeaponInfoStruct *GetDefaultWeaponInfo(int weaponID)
{
for (auto& info : g_weaponInfo_default) {
if (info.id == weaponID) {
return &info;
}
}
return nullptr;
}
AmmoInfoStruct *GetAmmoInfo(const char *ammoName)
{
for (auto& info : g_ammoInfo) {

View File

@ -445,6 +445,8 @@ void WeaponInfoReset();
WeaponInfoStruct *GetWeaponInfo(int weaponID);
WeaponInfoStruct *GetWeaponInfo(const char *weaponName);
WeaponInfoStruct *GetDefaultWeaponInfo(int weaponID);
AmmoInfoStruct *GetAmmoInfo(AmmoType ammoID);
AmmoInfoStruct *GetAmmoInfo(const char *ammoName);