Use safe pointer for members m_rghPlayerItems, m_pActiveItem etc

This commit is contained in:
s1lentq 2023-01-09 20:49:33 +07:00
parent 5b1b9574db
commit 2cfa4fc5ff
47 changed files with 1202 additions and 1167 deletions

View File

@ -218,7 +218,7 @@ EXT_FUNC bool CCSPlayer::RemovePlayerItemEx(const char* pszItemName, bool bRemov
if (pItem->IsWeapon()) if (pItem->IsWeapon())
{ {
if (pItem == pPlayer->m_pActiveItem) { if (pItem == pPlayer->m_hActiveItem) {
((CBasePlayerWeapon *)pItem)->RetireWeapon(); ((CBasePlayerWeapon *)pItem)->RetireWeapon();
} }
@ -236,7 +236,7 @@ EXT_FUNC bool CCSPlayer::RemovePlayerItemEx(const char* pszItemName, bool bRemov
pItem->Kill(); pItem->Kill();
if (!pPlayer->m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]) { if (!pPlayer->m_rghPlayerItems[PRIMARY_WEAPON_SLOT]) {
pPlayer->m_bHasPrimary = false; pPlayer->m_bHasPrimary = false;
} }
@ -323,7 +323,7 @@ EXT_FUNC bool CCSPlayer::RemoveShield()
bool bIsProtectedShield = pPlayer->IsProtectedByShield(); bool bIsProtectedShield = pPlayer->IsProtectedByShield();
pPlayer->RemoveShield(); pPlayer->RemoveShield();
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(pPlayer->m_pActiveItem); CBasePlayerWeapon *pWeapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon && pWeapon->IsWeapon()) if (pWeapon && pWeapon->IsWeapon())
{ {
if (!pWeapon->CanHolster()) if (!pWeapon->CanHolster())

View File

@ -381,7 +381,7 @@ bool CCSBot::IsUsingMachinegun() const
// Return true if primary weapon doesn't exist or is totally out of ammo // Return true if primary weapon doesn't exist or is totally out of ammo
bool CCSBot::IsPrimaryWeaponEmpty() const bool CCSBot::IsPrimaryWeaponEmpty() const
{ {
CBasePlayerWeapon *pCurrentWeapon = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pCurrentWeapon = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
if (!pCurrentWeapon) if (!pCurrentWeapon)
return true; return true;
@ -395,7 +395,7 @@ bool CCSBot::IsPrimaryWeaponEmpty() const
// Return true if pistol doesn't exist or is totally out of ammo // Return true if pistol doesn't exist or is totally out of ammo
bool CCSBot::IsPistolEmpty() const bool CCSBot::IsPistolEmpty() const
{ {
CBasePlayerWeapon *pCurrentWeapon = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pCurrentWeapon = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
if (!pCurrentWeapon) if (!pCurrentWeapon)
return true; return true;
@ -440,7 +440,7 @@ void CCSBot::EquipBestWeapon(bool mustEquip)
if (!mustEquip && m_equipTimer.GetElapsedTime() < minEquipInterval) if (!mustEquip && m_equipTimer.GetElapsedTime() < minEquipInterval)
return; return;
CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimary = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
if (pPrimary) if (pPrimary)
{ {
WeaponClassType weaponClass = WeaponIDToWeaponClass(pPrimary->m_iId); WeaponClassType weaponClass = WeaponIDToWeaponClass(pPrimary->m_iId);
@ -459,7 +459,7 @@ void CCSBot::EquipBestWeapon(bool mustEquip)
if (TheCSBots()->AllowPistols()) if (TheCSBots()->AllowPistols())
{ {
if (DoEquip(static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]))) if (DoEquip(m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>()))
return; return;
} }
@ -476,7 +476,7 @@ void CCSBot::EquipPistol()
if (TheCSBots()->AllowPistols() && !IsUsingPistol()) if (TheCSBots()->AllowPistols() && !IsUsingPistol())
{ {
CBasePlayerWeapon *pistol = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pistol = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
DoEquip(pistol); DoEquip(pistol);
} }
} }
@ -486,7 +486,7 @@ void CCSBot::EquipKnife()
{ {
if (!IsUsingKnife()) if (!IsUsingKnife())
{ {
CBasePlayerWeapon *pKnife = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[KNIFE_SLOT]); CBasePlayerWeapon *pKnife = m_rghPlayerItems[KNIFE_SLOT].Get<CBasePlayerWeapon>();
if (pKnife) if (pKnife)
{ {
SelectItem(STRING(pKnife->pev->classname)); SelectItem(STRING(pKnife->pev->classname));
@ -497,7 +497,7 @@ void CCSBot::EquipKnife()
// Return true if we have a grenade in our inventory // Return true if we have a grenade in our inventory
bool CCSBot::HasGrenade() const bool CCSBot::HasGrenade() const
{ {
CBasePlayerWeapon *pGrenade = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[GRENADE_SLOT]); CBasePlayerWeapon *pGrenade = m_rghPlayerItems[GRENADE_SLOT].Get<CBasePlayerWeapon>();
return pGrenade != nullptr; return pGrenade != nullptr;
} }
@ -513,7 +513,7 @@ bool CCSBot::EquipGrenade(bool noSmoke)
if (HasGrenade()) if (HasGrenade())
{ {
CBasePlayerWeapon *pGrenade = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[GRENADE_SLOT]); CBasePlayerWeapon *pGrenade = m_rghPlayerItems[GRENADE_SLOT].Get<CBasePlayerWeapon>();
if (pGrenade) if (pGrenade)
{ {
if (noSmoke && pGrenade->m_iId == WEAPON_SMOKEGRENADE) if (noSmoke && pGrenade->m_iId == WEAPON_SMOKEGRENADE)
@ -808,7 +808,7 @@ void CCSBot::OnTouchingWeapon(CWeaponBox *box)
// right now we only care about primary weapons on the ground // right now we only care about primary weapons on the ground
if (pDroppedWeapon) if (pDroppedWeapon)
{ {
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pWeapon = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
// if the gun on the ground is the same one we have, dont bother // if the gun on the ground is the same one we have, dont bother
if (pWeapon && pWeapon->IsWeapon() && pDroppedWeapon->m_iId != pWeapon->m_iId) if (pWeapon && pWeapon->IsWeapon() && pDroppedWeapon->m_iId != pWeapon->m_iId)

View File

@ -30,7 +30,7 @@
bool HasDefaultPistol(CCSBot *me) bool HasDefaultPistol(CCSBot *me)
{ {
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(me->m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = me->m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
if (!pSecondary) if (!pSecondary)
return false; return false;
@ -101,7 +101,7 @@ void BuyState::OnEnter(CCSBot *me)
if (TheCSBots()->AllowPistols()) if (TheCSBots()->AllowPistols())
{ {
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(me->m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = me->m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
// check if we have a pistol // check if we have a pistol
if (pSecondary) if (pSecondary)

View File

@ -1061,10 +1061,10 @@ bool CanBuyThis(CBasePlayer *pPlayer, int iWeapon)
if (pPlayer->HasShield() && iWeapon == WEAPON_SHIELDGUN) if (pPlayer->HasShield() && iWeapon == WEAPON_SHIELDGUN)
return false; return false;
if (pPlayer->m_rgpPlayerItems[PISTOL_SLOT] && pPlayer->m_rgpPlayerItems[PISTOL_SLOT]->m_iId == WEAPON_ELITE && iWeapon == WEAPON_SHIELDGUN) if (pPlayer->m_rghPlayerItems[PISTOL_SLOT] && pPlayer->m_rghPlayerItems[PISTOL_SLOT]->m_iId == WEAPON_ELITE && iWeapon == WEAPON_SHIELDGUN)
return false; return false;
if (pPlayer->m_rgpPlayerItems[PRIMARY_WEAPON_SLOT] && pPlayer->m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]->m_iId == iWeapon) if (pPlayer->m_rghPlayerItems[PRIMARY_WEAPON_SLOT] && pPlayer->m_rghPlayerItems[PRIMARY_WEAPON_SLOT]->m_iId == iWeapon)
{ {
if (g_bClientPrintEnable) if (g_bClientPrintEnable)
{ {
@ -1074,7 +1074,7 @@ bool CanBuyThis(CBasePlayer *pPlayer, int iWeapon)
return false; return false;
} }
if (pPlayer->m_rgpPlayerItems[PISTOL_SLOT] && pPlayer->m_rgpPlayerItems[PISTOL_SLOT]->m_iId == iWeapon) if (pPlayer->m_rghPlayerItems[PISTOL_SLOT] && pPlayer->m_rghPlayerItems[PISTOL_SLOT]->m_iId == iWeapon)
{ {
if (g_bClientPrintEnable) if (g_bClientPrintEnable)
{ {
@ -2317,19 +2317,19 @@ bool BuyAmmo(CBasePlayer *pPlayer, int nSlot, bool bBlinkMoney)
// nSlot == 1 : Primary weapons // nSlot == 1 : Primary weapons
// nSlot == 2 : Secondary weapons // nSlot == 2 : Secondary weapons
CBasePlayerItem *pItem = pPlayer->m_rgpPlayerItems[nSlot]; CBasePlayerItem *pItem = pPlayer->m_rghPlayerItems[nSlot].GetPtr();
if (pPlayer->HasShield()) if (pPlayer->HasShield())
{ {
if (pPlayer->m_rgpPlayerItems[PISTOL_SLOT]) if (pPlayer->m_rghPlayerItems[PISTOL_SLOT])
pItem = pPlayer->m_rgpPlayerItems[PISTOL_SLOT]; pItem = pPlayer->m_rghPlayerItems[PISTOL_SLOT];
} }
if (pItem) if (pItem)
{ {
while (BuyGunAmmo(pPlayer, pItem, bBlinkMoney)) while (BuyGunAmmo(pPlayer, pItem, bBlinkMoney))
{ {
pItem = pItem->m_pNext; pItem = pItem->m_hNext.GetPtr();
if (!pItem) if (!pItem)
{ {
@ -3409,7 +3409,7 @@ void EXT_FUNC InternalCommand(edict_t *pEntity, const char *pcmd, const char *pa
// player is dropping an item. // player is dropping an item.
if (pPlayer->HasShield()) if (pPlayer->HasShield())
{ {
if (pPlayer->m_pActiveItem && pPlayer->m_pActiveItem->m_iId == WEAPON_C4) if (pPlayer->m_hActiveItem && pPlayer->m_hActiveItem->m_iId == WEAPON_C4)
{ {
pPlayer->DropPlayerItem("weapon_c4"); pPlayer->DropPlayerItem("weapon_c4");
} }
@ -4797,11 +4797,11 @@ int EXT_FUNC GetWeaponData(edict_t *pEdict, struct weapon_data_s *info)
// go through all of the weapons and make a list of the ones to pack // go through all of the weapons and make a list of the ones to pack
for (int i = 0; i < MAX_ITEM_TYPES; i++) for (int i = 0; i < MAX_ITEM_TYPES; i++)
{ {
auto pPlayerItem = pPlayer->m_rgpPlayerItems[i]; CBasePlayerItem *pPlayerItem = pPlayer->m_rghPlayerItems[i].GetPtr();
while (pPlayerItem) while (pPlayerItem)
{ {
// there's a weapon here. Should I pack it? // there's a weapon here. Should I pack it?
auto weapon = (CBasePlayerWeapon *)pPlayerItem->GetWeaponPtr(); CBasePlayerWeapon *weapon = static_cast<CBasePlayerWeapon *>(pPlayerItem->GetWeaponPtr());
if (weapon && weapon->UseDecrement()) if (weapon && weapon->UseDecrement())
{ {
// Get The ID // Get The ID
@ -4835,7 +4835,7 @@ int EXT_FUNC GetWeaponData(edict_t *pEdict, struct weapon_data_s *info)
} }
} }
pPlayerItem = pPlayerItem->m_pNext; pPlayerItem = pPlayerItem->m_hNext.GetPtr();
} }
} }
#else #else
@ -4944,12 +4944,12 @@ void EXT_FUNC UpdateClientData(const edict_t *ent, int sendweapons, struct clien
cd->iuser3 = iUser3; cd->iuser3 = iUser3;
} }
if (pPlayer->m_pActiveItem) if (pPlayer->m_hActiveItem)
{ {
ItemInfo II; ItemInfo II;
Q_memset(&II, 0, sizeof(II)); Q_memset(&II, 0, sizeof(II));
CBasePlayerWeapon *weapon = (CBasePlayerWeapon *)pPlayer->m_pActiveItem->GetWeaponPtr(); CBasePlayerWeapon *weapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (weapon && weapon->UseDecrement() && if (weapon && weapon->UseDecrement() &&
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
weapon->CSPlayerItem()->GetItemInfo(&II) weapon->CSPlayerItem()->GetItemInfo(&II)

View File

@ -42,6 +42,7 @@ public:
// NOTE: this is a unsafe method // NOTE: this is a unsafe method
template <typename R> template <typename R>
R *Get() const; R *Get() const;
T *GetPtr() const;
edict_t *Get() const; edict_t *Get() const;
edict_t *Set(edict_t *pEdict); edict_t *Set(edict_t *pEdict);
@ -104,6 +105,12 @@ EntityHandle<T>::EntityHandle(const edict_t *pEdict)
Set(const_cast<edict_t *>(pEdict)); Set(const_cast<edict_t *>(pEdict));
} }
template <typename T>
inline T *EntityHandle<T>::GetPtr() const
{
return GET_PRIVATE<T>(Get());
}
template <typename T> template <typename T>
template <typename R> template <typename R>
inline R *EntityHandle<T>::Get() const inline R *EntityHandle<T>::Get() const

View File

@ -235,9 +235,9 @@ BOOL CFuncTank::StartControl(CBasePlayer *pController)
m_pController = pController; m_pController = pController;
if (m_pController->m_pActiveItem) if (m_pController->m_hActiveItem)
{ {
m_pController->m_pActiveItem->Holster(); m_pController->m_hActiveItem->Holster();
m_pController->pev->weaponmodel = 0; m_pController->pev->weaponmodel = 0;
#ifdef BUILD_LATEST_FIXES #ifdef BUILD_LATEST_FIXES
@ -267,9 +267,9 @@ void CFuncTank::StopControl()
if (!m_pController) if (!m_pController)
return; return;
if (m_pController->m_pActiveItem) if (m_pController->m_hActiveItem)
{ {
m_pController->m_pActiveItem->Deploy(); m_pController->m_hActiveItem->Deploy();
if (m_pController->IsPlayer()) if (m_pController->IsPlayer())
{ {
@ -280,7 +280,7 @@ void CFuncTank::StopControl()
ALERT(at_console, "stopped using TANK\n"); ALERT(at_console, "stopped using TANK\n");
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
if (m_pController->m_pActiveItem) if (m_pController->m_hActiveItem)
#endif #endif
{ {
m_pController->m_iHideHUD &= ~HIDEHUD_WEAPONS; m_pController->m_iHideHUD &= ~HIDEHUD_WEAPONS;

View File

@ -250,8 +250,8 @@ void CWeaponCycler::Spawn()
BOOL CWeaponCycler::Deploy() BOOL CWeaponCycler::Deploy()
{ {
m_pPlayer->pev->viewmodel = m_iszModel; m_hPlayer->pev->viewmodel = m_iszModel;
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0f;
SendWeaponAnim(0); SendWeaponAnim(0);
m_iClip = 0; m_iClip = 0;
@ -261,7 +261,7 @@ BOOL CWeaponCycler::Deploy()
void CWeaponCycler::Holster(int skiplocal) void CWeaponCycler::Holster(int skiplocal)
{ {
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f;
} }
void CWeaponCycler::PrimaryAttack() void CWeaponCycler::PrimaryAttack()

View File

@ -3242,7 +3242,7 @@ BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(FShouldSwitchWeapon)(CBasePlayer *p
return FALSE; return FALSE;
} }
if (!pPlayer->m_pActiveItem) if (!pPlayer->m_hActiveItem)
{ {
// player doesn't have an active item! // player doesn't have an active item!
return TRUE; return TRUE;
@ -3256,7 +3256,7 @@ BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(FShouldSwitchWeapon)(CBasePlayer *p
return FALSE; return FALSE;
#endif #endif
if (!pPlayer->m_pActiveItem->CanHolster()) if (!pPlayer->m_hActiveItem->CanHolster())
{ {
// can't put away the active item. // can't put away the active item.
return FALSE; return FALSE;
@ -3268,12 +3268,12 @@ BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(FShouldSwitchWeapon)(CBasePlayer *p
if (pWeapon->iFlags() & ITEM_FLAG_NOFIREUNDERWATER) if (pWeapon->iFlags() & ITEM_FLAG_NOFIREUNDERWATER)
return FALSE; return FALSE;
if (pPlayer->m_pActiveItem->iFlags() & ITEM_FLAG_NOFIREUNDERWATER) if (pPlayer->m_hActiveItem->iFlags() & ITEM_FLAG_NOFIREUNDERWATER)
return TRUE; return TRUE;
} }
#endif #endif
if (pWeapon->iWeight() > pPlayer->m_pActiveItem->iWeight()) if (pWeapon->iWeight() > pPlayer->m_hActiveItem->iWeight())
return TRUE; return TRUE;
return FALSE; return FALSE;
@ -3300,7 +3300,7 @@ BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(GetNextBestWeapon)(CBasePlayer *pPl
for (i = 0; i < MAX_ITEM_TYPES; i++) for (i = 0; i < MAX_ITEM_TYPES; i++)
{ {
pCheck = pPlayer->m_rgpPlayerItems[i]; pCheck = pPlayer->m_rghPlayerItems[i];
while (pCheck) while (pCheck)
{ {
@ -3323,7 +3323,7 @@ BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(GetNextBestWeapon)(CBasePlayer *pPl
} }
} }
pCheck = pCheck->m_pNext; pCheck = pCheck->m_hNext.GetPtr();
} }
} }
@ -3709,10 +3709,10 @@ void CHalfLifeMultiplay::PlayerThink(CBasePlayer *pPlayer)
pPlayer->m_bCanShoot = true; pPlayer->m_bCanShoot = true;
} }
if (pPlayer->m_pActiveItem && pPlayer->m_pActiveItem->IsWeapon()) if (pPlayer->m_hActiveItem && pPlayer->m_hActiveItem->IsWeapon())
{ {
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(pPlayer->m_pActiveItem->GetWeaponPtr()); CBasePlayerWeapon *pWeapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon->m_iWeaponState & WPNSTATE_SHIELD_DRAWN if (pWeapon && pWeapon->m_iWeaponState & WPNSTATE_SHIELD_DRAWN
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
|| ((pWeapon->iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && pPlayer->pev->waterlevel == 3) || ((pWeapon->iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && pPlayer->pev->waterlevel == 3)
#endif #endif
@ -4078,9 +4078,9 @@ void EXT_FUNC CHalfLifeMultiplay::__API_HOOK(DeathNotice)(CBasePlayer *pVictim,
CBasePlayer *pAttacker = CBasePlayer::Instance(pKiller); CBasePlayer *pAttacker = CBasePlayer::Instance(pKiller);
if (pAttacker && pAttacker->IsPlayer()) if (pAttacker && pAttacker->IsPlayer())
{ {
if (pAttacker->m_pActiveItem) if (pAttacker->m_hActiveItem)
{ {
killer_weapon_name = pAttacker->m_pActiveItem->pszName(); killer_weapon_name = pAttacker->m_hActiveItem->pszName();
} }
} }
} }

View File

@ -330,7 +330,7 @@ void CBasePlayer::Observer_CheckProperties()
if (!target) if (!target)
return; return;
int weapon = target->m_pActiveItem ? target->m_pActiveItem->m_iId : 0; int weapon = target->m_hActiveItem ? target->m_hActiveItem->m_iId : 0;
int targetBombState = STATUSICON_HIDE; int targetBombState = STATUSICON_HIDE;
// use fov of tracked client // use fov of tracked client

View File

@ -569,7 +569,7 @@ Vector CBasePlayer::GetGunPosition()
bool CBasePlayer::IsHittingShield(Vector &vecDirection, TraceResult *ptr) bool CBasePlayer::IsHittingShield(Vector &vecDirection, TraceResult *ptr)
{ {
if ((m_pActiveItem && m_pActiveItem->m_iId == WEAPON_C4) || !HasShield()) if ((m_hActiveItem && m_hActiveItem->m_iId == WEAPON_C4) || !HasShield())
return false; return false;
if (ptr->iHitgroup == HITGROUP_SHIELD) if (ptr->iHitgroup == HITGROUP_SHIELD)
@ -761,8 +761,8 @@ const char *GetWeaponName(entvars_t *pevInflictor, entvars_t *pKiller)
CBasePlayer *pAttacker = CBasePlayer::Instance(pKiller); CBasePlayer *pAttacker = CBasePlayer::Instance(pKiller);
if (pAttacker && pAttacker->IsPlayer()) if (pAttacker && pAttacker->IsPlayer())
{ {
if (pAttacker->m_pActiveItem) if (pAttacker->m_hActiveItem)
killer_weapon_name = pAttacker->m_pActiveItem->pszName(); killer_weapon_name = pAttacker->m_hActiveItem->pszName();
} }
} }
else else
@ -1087,9 +1087,9 @@ BOOL EXT_FUNC CBasePlayer::__API_HOOK(TakeDamage)(entvars_t *pevInflictor, entva
#endif // #ifdef REGAMEDLL_ADD #endif // #ifdef REGAMEDLL_ADD
} }
if (pAttack->m_pActiveItem) if (pAttack->m_hActiveItem)
{ {
iGunType = pAttack->m_pActiveItem->m_iId; iGunType = pAttack->m_hActiveItem->m_iId;
flRatio += flShieldRatio; flRatio += flShieldRatio;
switch (iGunType) switch (iGunType)
@ -1401,7 +1401,7 @@ void CBasePlayer::PackDeadPlayerItems()
for (int n = 0; n < MAX_ITEM_TYPES; n++) for (int n = 0; n < MAX_ITEM_TYPES; n++)
{ {
// there's a weapon here. Should I pack it? // there's a weapon here. Should I pack it?
CBasePlayerItem *pPlayerItem = m_rgpPlayerItems[n]; CBasePlayerItem *pPlayerItem = m_rghPlayerItems[n];
while (pPlayerItem) while (pPlayerItem)
{ {
@ -1444,7 +1444,7 @@ void CBasePlayer::PackDeadPlayerItems()
break; break;
case 2: case 2:
{ {
CBasePlayerItem *pNext = pPlayerItem->m_pNext; CBasePlayerItem *pNext = pPlayerItem->m_hNext;
PackPlayerNade(this, pPlayerItem, true); PackPlayerNade(this, pPlayerItem, true);
pPlayerItem = pNext; pPlayerItem = pNext;
continue; continue;
@ -1454,7 +1454,7 @@ void CBasePlayer::PackDeadPlayerItems()
#endif #endif
} }
pPlayerItem = pPlayerItem->m_pNext; pPlayerItem = pPlayerItem->m_hNext;
} }
} }
@ -1654,32 +1654,32 @@ void CBasePlayer::RemoveAllItems(BOOL removeSuit)
if (bKillProgBar) if (bKillProgBar)
SetProgressBarTime(0); SetProgressBarTime(0);
if (m_pActiveItem) if (m_hActiveItem)
{ {
ResetAutoaim(); ResetAutoaim();
m_pActiveItem->Holster(); m_hActiveItem->Holster();
m_pActiveItem = nullptr; m_hActiveItem = m_pActiveItem = nullptr;
} }
m_pLastItem = nullptr; m_hLastItem = m_pLastItem = nullptr;
for (i = 0; i < MAX_ITEM_TYPES; i++) for (i = 0; i < MAX_ITEM_TYPES; i++)
{ {
m_pActiveItem = m_rgpPlayerItems[i]; m_hActiveItem = m_pActiveItem = m_rghPlayerItems[i];
while (m_pActiveItem) while (m_hActiveItem)
{ {
CBasePlayerItem *pPendingItem = m_pActiveItem->m_pNext; CBasePlayerItem *pPendingItem = m_hActiveItem->m_hNext;
m_pActiveItem->Drop(); m_hActiveItem->Drop();
m_pActiveItem = pPendingItem; m_hActiveItem = m_pActiveItem = pPendingItem;
} }
m_rgpPlayerItems[i] = nullptr; m_rghPlayerItems[i] = m_rgpPlayerItems[i] = nullptr;
} }
m_pActiveItem = nullptr; m_hActiveItem = m_pActiveItem = nullptr;
m_bHasPrimary = false; m_bHasPrimary = false;
pev->viewmodel = 0; pev->viewmodel = 0;
@ -2125,19 +2125,19 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Killed)(entvars_t *pevAttacker, int iGib)
#endif #endif
SetAnimation(PLAYER_DIE); SetAnimation(PLAYER_DIE);
if (m_pActiveItem && m_pActiveItem->m_pPlayer) if (m_hActiveItem && m_hActiveItem->m_hPlayer)
{ {
switch (m_pActiveItem->m_iId) switch (m_hActiveItem->m_iId)
{ {
case WEAPON_HEGRENADE: case WEAPON_HEGRENADE:
{ {
CHEGrenade *pHEGrenade = static_cast<CHEGrenade *>(m_pActiveItem); CHEGrenade *pHEGrenade = m_hActiveItem.Get<CHEGrenade>();
if ((pev->button & IN_ATTACK) && m_rgAmmo[pHEGrenade->m_iPrimaryAmmoType]) if (pHEGrenade && (pev->button & IN_ATTACK) && m_rgAmmo[pHEGrenade->m_iPrimaryAmmoType])
{ {
ThrowGrenade(pHEGrenade, (pev->origin + pev->view_ofs), pev->angles, 1.5, pHEGrenade->m_usCreateExplosion); ThrowGrenade(pHEGrenade, (pev->origin + pev->view_ofs), pev->angles, 1.5, pHEGrenade->m_usCreateExplosion);
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_rgAmmo[m_pActiveItem->PrimaryAmmoIndex()]--; m_rgAmmo[m_hActiveItem->PrimaryAmmoIndex()]--;
pHEGrenade->m_flStartThrow = 0; pHEGrenade->m_flStartThrow = 0;
#endif #endif
} }
@ -2145,13 +2145,13 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Killed)(entvars_t *pevAttacker, int iGib)
} }
case WEAPON_FLASHBANG: case WEAPON_FLASHBANG:
{ {
CFlashbang *pFlashbang = static_cast<CFlashbang *>(m_pActiveItem); CFlashbang *pFlashbang = m_hActiveItem.Get<CFlashbang>();
if ((pev->button & IN_ATTACK) && m_rgAmmo[pFlashbang->m_iPrimaryAmmoType]) if (pFlashbang && (pev->button & IN_ATTACK) && m_rgAmmo[pFlashbang->m_iPrimaryAmmoType])
{ {
ThrowGrenade(pFlashbang, (pev->origin + pev->view_ofs), pev->angles, 1.5); ThrowGrenade(pFlashbang, (pev->origin + pev->view_ofs), pev->angles, 1.5);
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_rgAmmo[m_pActiveItem->PrimaryAmmoIndex()]--; m_rgAmmo[m_hActiveItem->PrimaryAmmoIndex()]--;
pFlashbang->m_flStartThrow = 0; pFlashbang->m_flStartThrow = 0;
#endif #endif
} }
@ -2159,13 +2159,13 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Killed)(entvars_t *pevAttacker, int iGib)
} }
case WEAPON_SMOKEGRENADE: case WEAPON_SMOKEGRENADE:
{ {
CSmokeGrenade *pSmoke = static_cast<CSmokeGrenade *>(m_pActiveItem); CSmokeGrenade *pSmoke = m_hActiveItem.Get<CSmokeGrenade>();
if ((pev->button & IN_ATTACK) && m_rgAmmo[pSmoke->m_iPrimaryAmmoType]) if (pSmoke && (pev->button & IN_ATTACK) && m_rgAmmo[pSmoke->m_iPrimaryAmmoType])
{ {
ThrowGrenade(pSmoke, (pev->origin + pev->view_ofs), pev->angles, 1.5, pSmoke->m_usCreateSmoke); ThrowGrenade(pSmoke, (pev->origin + pev->view_ofs), pev->angles, 1.5, pSmoke->m_usCreateSmoke);
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_rgAmmo[m_pActiveItem->PrimaryAmmoIndex()]--; m_rgAmmo[m_hActiveItem->PrimaryAmmoIndex()]--;
pSmoke->m_flStartThrow = 0; pSmoke->m_flStartThrow = 0;
#endif #endif
} }
@ -3128,7 +3128,7 @@ NOXREF void CBasePlayer::ThrowWeapon(char *pszItemName)
{ {
for (int i = 0; i < MAX_WEAPON_SLOTS; i++) for (int i = 0; i < MAX_WEAPON_SLOTS; i++)
{ {
CBasePlayerItem *pWeapon = m_rgpPlayerItems[i]; CBasePlayerItem *pWeapon = m_rghPlayerItems[i];
while (pWeapon) while (pWeapon)
{ {
@ -3138,7 +3138,7 @@ NOXREF void CBasePlayer::ThrowWeapon(char *pszItemName)
return; return;
} }
pWeapon = pWeapon->m_pNext; pWeapon = pWeapon->m_hNext;
} }
} }
} }
@ -3174,12 +3174,12 @@ void CWShield::Touch(CBaseEntity *pOther)
if (!pPlayer->m_bHasPrimary) if (!pPlayer->m_bHasPrimary)
{ {
if (pPlayer->m_rgpPlayerItems[PISTOL_SLOT] && pPlayer->m_rgpPlayerItems[PISTOL_SLOT]->m_iId == WEAPON_ELITE) if (pPlayer->m_rghPlayerItems[PISTOL_SLOT] && pPlayer->m_rghPlayerItems[PISTOL_SLOT]->m_iId == WEAPON_ELITE)
return; return;
if (pPlayer->m_pActiveItem) if (pPlayer->m_hActiveItem)
{ {
if (!pPlayer->m_pActiveItem->CanHolster()) if (!pPlayer->m_hActiveItem->CanHolster())
return; return;
} }
@ -3210,11 +3210,11 @@ void EXT_FUNC CBasePlayer::__API_HOOK(GiveShield)(bool bDeploy)
pev->gamestate = HITGROUP_SHIELD_ENABLED; pev->gamestate = HITGROUP_SHIELD_ENABLED;
#endif #endif
if (m_pActiveItem) if (m_hActiveItem)
{ {
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(m_pActiveItem); CBasePlayerWeapon *pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
if (bDeploy) if (bDeploy && pWeapon)
{ {
if (m_rgAmmo[pWeapon->m_iPrimaryAmmoType] > 0) if (m_rgAmmo[pWeapon->m_iPrimaryAmmoType] > 0)
pWeapon->Holster(); pWeapon->Holster();
@ -3250,10 +3250,10 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropShield)(bool bDeploy)
if (!HasShield()) if (!HasShield())
return nullptr; return nullptr;
if (m_pActiveItem && !m_pActiveItem->CanHolster()) if (m_hActiveItem && !m_hActiveItem->CanHolster())
return nullptr; return nullptr;
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(m_pActiveItem); CBasePlayerWeapon *pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon) if (pWeapon)
{ {
@ -3264,10 +3264,10 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropShield)(bool bDeploy)
} }
} }
if (m_pActiveItem) if (m_hActiveItem)
{ {
if (m_pActiveItem->m_flStartThrow != 0.0f) if (m_hActiveItem->m_flStartThrow != 0.0f)
m_pActiveItem->Holster(); m_hActiveItem->Holster();
} }
if (IsReloading()) if (IsReloading())
@ -3276,15 +3276,16 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropShield)(bool bDeploy)
m_flNextAttack = 0; m_flNextAttack = 0;
} }
if (m_pActiveItem && IsProtectedByShield()) pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
((CBasePlayerWeapon *)m_pActiveItem)->SecondaryAttack(); if (pWeapon && IsProtectedByShield())
pWeapon->SecondaryAttack();
m_bShieldDrawn = false; m_bShieldDrawn = false;
RemoveShield(); RemoveShield();
if (m_pActiveItem && bDeploy) if (m_hActiveItem && bDeploy)
m_pActiveItem->Deploy(); m_hActiveItem->Deploy();
UTIL_MakeVectors(pev->angles); UTIL_MakeVectors(pev->angles);
@ -3855,8 +3856,8 @@ void EXT_FUNC CBasePlayer::__API_HOOK(RoundRespawn)()
pev->nextthink = -1; pev->nextthink = -1;
} }
if (m_pActiveItem && m_pActiveItem->iItemSlot() == GRENADE_SLOT) if (m_hActiveItem && m_hActiveItem->iItemSlot() == GRENADE_SLOT)
SwitchWeapon(m_pActiveItem); SwitchWeapon(m_hActiveItem);
m_lastLocation[0] = '\0'; m_lastLocation[0] = '\0';
@ -3905,8 +3906,8 @@ void EXT_FUNC CBasePlayer::__API_HOOK(StartObserver)(Vector &vecPosition, Vector
MESSAGE_END(); MESSAGE_END();
// Holster weapon immediately, to allow it to cleanup // Holster weapon immediately, to allow it to cleanup
if (m_pActiveItem) if (m_hActiveItem)
m_pActiveItem->Holster(); m_hActiveItem->Holster();
if (m_pTank) if (m_pTank)
{ {
@ -5135,27 +5136,23 @@ pt_end:
// go through all of the weapons and make a list of the ones to pack // go through all of the weapons and make a list of the ones to pack
for (int i = 0; i < MAX_ITEM_TYPES; i++) for (int i = 0; i < MAX_ITEM_TYPES; i++)
{ {
if (m_rgpPlayerItems[i]) CBasePlayerItem *pPlayerItem = m_rghPlayerItems[i];
while (pPlayerItem)
{ {
CBasePlayerItem *pPlayerItem = m_rgpPlayerItems[i]; CBasePlayerWeapon *gun = (CBasePlayerWeapon *)pPlayerItem->GetWeaponPtr();
while (pPlayerItem) if (gun && gun->UseDecrement())
{ {
CBasePlayerWeapon *gun = (CBasePlayerWeapon *)pPlayerItem->GetWeaponPtr(); gun->m_flNextPrimaryAttack = Q_max(gun->m_flNextPrimaryAttack - gpGlobals->frametime, -1.0f);
gun->m_flNextSecondaryAttack = Q_max(gun->m_flNextSecondaryAttack - gpGlobals->frametime, -0.001f);
if (gun && gun->UseDecrement()) if (gun->m_flTimeWeaponIdle != 1000.0f)
{ {
gun->m_flNextPrimaryAttack = Q_max(gun->m_flNextPrimaryAttack - gpGlobals->frametime, -1.0f); gun->m_flTimeWeaponIdle = Q_max(gun->m_flTimeWeaponIdle - gpGlobals->frametime, -0.001f);
gun->m_flNextSecondaryAttack = Q_max(gun->m_flNextSecondaryAttack - gpGlobals->frametime, -0.001f);
if (gun->m_flTimeWeaponIdle != 1000.0f)
{
gun->m_flTimeWeaponIdle = Q_max(gun->m_flTimeWeaponIdle - gpGlobals->frametime, -0.001f);
}
} }
pPlayerItem = pPlayerItem->m_pNext;
} }
pPlayerItem = pPlayerItem->m_hNext;
} }
} }
@ -5554,9 +5551,9 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Spawn)()
for (i = 0; i < MAX_RECENT_PATH; i++) for (i = 0; i < MAX_RECENT_PATH; i++)
m_vRecentPath[i] = Vector(0, 0, 0); m_vRecentPath[i] = Vector(0, 0, 0);
if (m_pActiveItem && !pev->viewmodel) if (m_hActiveItem && !pev->viewmodel)
{ {
switch (m_pActiveItem->m_iId) switch (m_hActiveItem->m_iId)
{ {
case WEAPON_AWP: case WEAPON_AWP:
pev->viewmodel = MAKE_STRING("models/v_awp.mdl"); pev->viewmodel = MAKE_STRING("models/v_awp.mdl");
@ -5636,7 +5633,7 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Spawn)()
m_iHideHUD &= ~(HIDEHUD_WEAPONS | HIDEHUD_HEALTH | HIDEHUD_TIMER | HIDEHUD_MONEY | HIDEHUD_CROSSHAIR); m_iHideHUD &= ~(HIDEHUD_WEAPONS | HIDEHUD_HEALTH | HIDEHUD_TIMER | HIDEHUD_MONEY | HIDEHUD_CROSSHAIR);
m_fNoPlayerSound = FALSE; m_fNoPlayerSound = FALSE;
m_pLastItem = nullptr; m_hLastItem = m_pLastItem = nullptr;
m_fWeapon = FALSE; m_fWeapon = FALSE;
m_pClientActiveItem = nullptr; m_pClientActiveItem = nullptr;
m_iClientBattery = -1; m_iClientBattery = -1;
@ -5911,7 +5908,7 @@ void CBasePlayer::Reset()
NOXREF void CBasePlayer::SelectNextItem(int iItem) NOXREF void CBasePlayer::SelectNextItem(int iItem)
{ {
CBasePlayerItem *pItem = m_rgpPlayerItems[iItem]; CBasePlayerItem *pItem = m_rghPlayerItems[iItem];
if (!pItem) if (!pItem)
{ {
@ -5919,13 +5916,13 @@ NOXREF void CBasePlayer::SelectNextItem(int iItem)
} }
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
if (m_pActiveItem && !m_pActiveItem->CanHolster()) if (m_hActiveItem && !m_hActiveItem->CanHolster())
return; return;
#endif #endif
if (pItem == m_pActiveItem) if (pItem == m_hActiveItem)
{ {
pItem = m_pActiveItem->m_pNext; pItem = m_hActiveItem->m_hNext;
if (!pItem) if (!pItem)
{ {
@ -5934,35 +5931,39 @@ NOXREF void CBasePlayer::SelectNextItem(int iItem)
CBasePlayerItem *pLast = pItem; CBasePlayerItem *pLast = pItem;
while (pLast->m_pNext) while (pLast && pLast->m_hNext)
pLast = pLast->m_pNext; pLast = pLast->m_hNext;
pLast->m_pNext = m_pActiveItem; if (pLast)
m_pActiveItem->m_pNext = nullptr; pLast->m_hNext = pLast->m_pNext = m_hActiveItem;
m_rgpPlayerItems[iItem] = pItem;
m_hActiveItem->m_hNext = m_hActiveItem->m_pNext = nullptr;
m_rghPlayerItems[iItem] = m_rgpPlayerItems[iItem] = pItem;
} }
ResetAutoaim(); ResetAutoaim();
if (m_pActiveItem) if (m_hActiveItem)
{ {
m_pActiveItem->Holster(); m_hActiveItem->Holster();
} }
if (HasShield()) if (HasShield())
{ {
CBasePlayerWeapon *pWeapon = (CBasePlayerWeapon *)m_pActiveItem; CBasePlayerWeapon *pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
pWeapon->m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; if (pWeapon)
pWeapon->m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_bShieldDrawn = false; m_bShieldDrawn = false;
} }
m_pLastItem = m_pActiveItem; m_hLastItem = m_pLastItem = m_hActiveItem;
m_pActiveItem = pItem; m_hActiveItem = m_pActiveItem = pItem;
UpdateShieldCrosshair(true); UpdateShieldCrosshair(true);
m_pActiveItem->Deploy(); m_hActiveItem->Deploy();
m_pActiveItem->UpdateItemInfo(); m_hActiveItem->UpdateItemInfo();
ResetMaxSpeed(); ResetMaxSpeed();
} }
@ -5975,12 +5976,12 @@ void CBasePlayer::SelectItem(const char *pstr)
} }
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
if (m_pActiveItem && !m_pActiveItem->CanHolster()) if (m_hActiveItem && !m_hActiveItem->CanHolster())
return; return;
#endif #endif
auto pItem = GetItemByName(pstr); auto pItem = GetItemByName(pstr);
if (!pItem || pItem == m_pActiveItem) if (!pItem || pItem == m_hActiveItem)
return; return;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
@ -5991,72 +5992,75 @@ void CBasePlayer::SelectItem(const char *pstr)
ResetAutoaim(); ResetAutoaim();
// FIX, this needs to queue them up and delay // FIX, this needs to queue them up and delay
if (m_pActiveItem) if (m_hActiveItem)
{ {
m_pActiveItem->Holster(); m_hActiveItem->Holster();
} }
m_pLastItem = m_pActiveItem; m_hLastItem = m_pLastItem = m_hActiveItem;
m_pActiveItem = pItem; m_hActiveItem = m_pActiveItem = pItem;
CBasePlayerWeapon *pWeapon = (CBasePlayerWeapon *)m_pActiveItem; CBasePlayerWeapon *pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
pWeapon->m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; if (pWeapon)
pWeapon->m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_bShieldDrawn = false; m_bShieldDrawn = false;
UpdateShieldCrosshair(true); UpdateShieldCrosshair(true);
m_pActiveItem->Deploy(); m_hActiveItem->Deploy();
m_pActiveItem->UpdateItemInfo(); m_hActiveItem->UpdateItemInfo();
ResetMaxSpeed(); ResetMaxSpeed();
} }
void CBasePlayer::SelectLastItem() void CBasePlayer::SelectLastItem()
{ {
if (m_pActiveItem && !m_pActiveItem->CanHolster()) if (m_hActiveItem && !m_hActiveItem->CanHolster())
return; return;
if (!m_pLastItem || m_pLastItem == m_pActiveItem) if (!m_hLastItem || m_hLastItem == m_hActiveItem)
{ {
for (int i = PRIMARY_WEAPON_SLOT; i <= KNIFE_SLOT; i++) for (int i = PRIMARY_WEAPON_SLOT; i <= KNIFE_SLOT; i++)
{ {
CBasePlayerItem *pItem = m_rgpPlayerItems[i]; CBasePlayerItem *pItem = m_rghPlayerItems[i];
if (pItem && pItem != m_pActiveItem) if (pItem && pItem != m_hActiveItem)
{ {
m_pLastItem = pItem; m_hLastItem = m_pLastItem = pItem;
break; break;
} }
} }
} }
if (!m_pLastItem || m_pLastItem == m_pActiveItem) if (!m_hLastItem || m_hLastItem == m_hActiveItem)
return; return;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
if (!m_pLastItem->CanDeploy()) if (!m_hLastItem->CanDeploy())
return; return;
#endif #endif
ResetAutoaim(); ResetAutoaim();
if (m_pActiveItem) if (m_hActiveItem)
{ {
m_pActiveItem->Holster(); m_hActiveItem->Holster();
} }
if (HasShield()) if (HasShield())
{ {
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(m_pActiveItem); CBasePlayerWeapon *pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon) if (pWeapon)
pWeapon->m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; pWeapon->m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_bShieldDrawn = false; m_bShieldDrawn = false;
} }
SWAP(m_pActiveItem, m_pLastItem); CBasePlayerItem *pTemp = m_hActiveItem;
m_hActiveItem = m_pActiveItem = m_hLastItem;
m_hLastItem = m_pLastItem = pTemp;
m_pActiveItem->Deploy(); m_hActiveItem->Deploy();
m_pActiveItem->UpdateItemInfo(); m_hActiveItem->UpdateItemInfo();
UpdateShieldCrosshair(true); UpdateShieldCrosshair(true);
@ -6066,7 +6070,7 @@ void CBasePlayer::SelectLastItem()
// HasWeapons - do I have any weapons at all? // HasWeapons - do I have any weapons at all?
bool CBasePlayer::HasWeapons() bool CBasePlayer::HasWeapons()
{ {
for (auto item : m_rgpPlayerItems) for (CBasePlayerItem *item : m_rghPlayerItems)
{ {
if (item) if (item)
return true; return true;
@ -6723,7 +6727,7 @@ LINK_HOOK_CLASS_CHAIN(BOOL, CBasePlayer, AddPlayerItem, (CBasePlayerItem *pItem)
// Add a weapon to the player (Item == Weapon == Selectable Object) // Add a weapon to the player (Item == Weapon == Selectable Object)
BOOL EXT_FUNC CBasePlayer::__API_HOOK(AddPlayerItem)(CBasePlayerItem *pItem) BOOL EXT_FUNC CBasePlayer::__API_HOOK(AddPlayerItem)(CBasePlayerItem *pItem)
{ {
CBasePlayerItem *pInsert = m_rgpPlayerItems[pItem->iItemSlot()]; CBasePlayerItem *pInsert = m_rghPlayerItems[pItem->iItemSlot()];
while (pInsert) while (pInsert)
{ {
if (FClassnameIs(pInsert->pev, STRING(pItem->pev->classname))) if (FClassnameIs(pInsert->pev, STRING(pItem->pev->classname)))
@ -6736,8 +6740,8 @@ BOOL EXT_FUNC CBasePlayer::__API_HOOK(AddPlayerItem)(CBasePlayerItem *pItem)
// ugly hack to update clip w/o an update clip message // ugly hack to update clip w/o an update clip message
pItem->UpdateItemInfo(); pItem->UpdateItemInfo();
if (m_pActiveItem) if (m_hActiveItem)
m_pActiveItem->UpdateItemInfo(); m_hActiveItem->UpdateItemInfo();
pItem->Kill(); pItem->Kill();
} }
@ -6745,7 +6749,7 @@ BOOL EXT_FUNC CBasePlayer::__API_HOOK(AddPlayerItem)(CBasePlayerItem *pItem)
return FALSE; return FALSE;
} }
pInsert = pInsert->m_pNext; pInsert = pInsert->m_hNext;
} }
if (pItem->AddToPlayer(this)) if (pItem->AddToPlayer(this))
@ -6756,8 +6760,8 @@ BOOL EXT_FUNC CBasePlayer::__API_HOOK(AddPlayerItem)(CBasePlayerItem *pItem)
m_bHasPrimary = true; m_bHasPrimary = true;
pItem->CheckRespawn(); pItem->CheckRespawn();
pItem->m_pNext = m_rgpPlayerItems[pItem->iItemSlot()]; pItem->m_hNext = pItem->m_pNext = m_rghPlayerItems[pItem->iItemSlot()];
m_rgpPlayerItems[pItem->iItemSlot()] = pItem; m_rghPlayerItems[pItem->iItemSlot()] = m_rgpPlayerItems[pItem->iItemSlot()] = pItem;
if (HasShield()) if (HasShield())
pev->gamestate = HITGROUP_SHIELD_ENABLED; pev->gamestate = HITGROUP_SHIELD_ENABLED;
@ -6784,7 +6788,7 @@ LINK_HOOK_CLASS_CHAIN(BOOL, CBasePlayer, RemovePlayerItem, (CBasePlayerItem *pIt
BOOL EXT_FUNC CBasePlayer::__API_HOOK(RemovePlayerItem)(CBasePlayerItem *pItem) BOOL EXT_FUNC CBasePlayer::__API_HOOK(RemovePlayerItem)(CBasePlayerItem *pItem)
{ {
if (m_pActiveItem == pItem) if (m_hActiveItem == pItem)
{ {
ResetAutoaim(); ResetAutoaim();
@ -6801,7 +6805,7 @@ BOOL EXT_FUNC CBasePlayer::__API_HOOK(RemovePlayerItem)(CBasePlayerItem *pItem)
pItem->pev->nextthink = 0; pItem->pev->nextthink = 0;
pItem->SetThink(nullptr); pItem->SetThink(nullptr);
m_pActiveItem = nullptr; m_hActiveItem = m_pActiveItem = nullptr;
pev->viewmodel = 0; pev->viewmodel = 0;
pev->weaponmodel = 0; pev->weaponmodel = 0;
@ -6809,22 +6813,22 @@ BOOL EXT_FUNC CBasePlayer::__API_HOOK(RemovePlayerItem)(CBasePlayerItem *pItem)
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
else else
#endif #endif
if (m_pLastItem == pItem) if (m_hLastItem == pItem)
m_pLastItem = nullptr; m_hLastItem = m_pLastItem = nullptr;
CBasePlayerItem *pPrev = m_rgpPlayerItems[pItem->iItemSlot()]; CBasePlayerItem *pPrev = m_rghPlayerItems[pItem->iItemSlot()];
if (pPrev == pItem) if (pPrev == pItem)
{ {
m_rgpPlayerItems[pItem->iItemSlot()] = pItem->m_pNext; m_rghPlayerItems[pItem->iItemSlot()] = m_rgpPlayerItems[pItem->iItemSlot()] = pItem->m_hNext;
return TRUE; return TRUE;
} }
while (pPrev && pPrev->m_pNext != pItem) while (pPrev && pPrev->m_hNext != pItem)
pPrev = pPrev->m_pNext; pPrev = pPrev->m_hNext;
if (pPrev) if (pPrev)
{ {
pPrev->m_pNext = pItem->m_pNext; pPrev->m_hNext = pPrev->m_pNext = pItem->m_hNext;
return TRUE; return TRUE;
} }
@ -6889,10 +6893,10 @@ void CBasePlayer::ItemPreFrame()
return; return;
#endif #endif
if (!m_pActiveItem) if (!m_hActiveItem)
return; return;
m_pActiveItem->ItemPreFrame(); m_hActiveItem->ItemPreFrame();
} }
// Called every frame by the player PostThink // Called every frame by the player PostThink
@ -6904,7 +6908,7 @@ void CBasePlayer::ItemPostFrame()
if (m_pTank) if (m_pTank)
return; return;
if (m_pActiveItem) if (m_hActiveItem)
{ {
if (HasShield() && IsReloading()) if (HasShield() && IsReloading())
{ {
@ -6922,8 +6926,8 @@ void CBasePlayer::ItemPostFrame()
ImpulseCommands(); ImpulseCommands();
if (m_pActiveItem) if (m_hActiveItem)
m_pActiveItem->ItemPostFrame(); m_hActiveItem->ItemPostFrame();
} }
int CBasePlayer::AmmoInventory(int iAmmoIndex) int CBasePlayer::AmmoInventory(int iAmmoIndex)
@ -7338,15 +7342,15 @@ void EXT_FUNC CBasePlayer::__API_HOOK(UpdateClientData)()
// Update all the items // Update all the items
for (int i = 0; i < MAX_ITEM_TYPES; i++) for (int i = 0; i < MAX_ITEM_TYPES; i++)
{ {
if (m_rgpPlayerItems[i]) if (m_rghPlayerItems[i])
{ {
// each item updates it's successors // each item updates it's successors
m_rgpPlayerItems[i]->UpdateClientData(this); m_rghPlayerItems[i]->UpdateClientData(this);
} }
} }
// Cache and client weapon change // Cache and client weapon change
m_pClientActiveItem = m_pActiveItem; m_pClientActiveItem = m_hActiveItem;
m_iClientFOV = m_iFOV; m_iClientFOV = m_iFOV;
// Update Status Bar // Update Status Bar
@ -7358,11 +7362,11 @@ void EXT_FUNC CBasePlayer::__API_HOOK(UpdateClientData)()
if (!(m_flDisplayHistory & DHF_AMMO_EXHAUSTED)) if (!(m_flDisplayHistory & DHF_AMMO_EXHAUSTED))
{ {
if (m_pActiveItem && m_pActiveItem->IsWeapon()) if (m_hActiveItem && m_hActiveItem->IsWeapon())
{ {
CBasePlayerWeapon *weapon = static_cast<CBasePlayerWeapon *>(m_pActiveItem); CBasePlayerWeapon *weapon = m_hActiveItem.Get<CBasePlayerWeapon>();
if (!(weapon->iFlags() & ITEM_FLAG_EXHAUSTIBLE)) if (weapon && !(weapon->iFlags() & ITEM_FLAG_EXHAUSTIBLE))
{ {
if (AmmoInventory(weapon->m_iPrimaryAmmoType) < 1 && weapon->m_iClip == 0) if (AmmoInventory(weapon->m_iPrimaryAmmoType) < 1 && weapon->m_iClip == 0)
{ {
@ -7596,10 +7600,10 @@ void EXT_FUNC CBasePlayer::__API_HOOK(ResetMaxSpeed)()
{ {
speed = 227; speed = 227;
} }
else if (m_pActiveItem) else if (m_hActiveItem)
{ {
// Get player speed from selected weapon // Get player speed from selected weapon
speed = m_pActiveItem->GetMaxSpeed(); speed = m_hActiveItem->GetMaxSpeed();
} }
else else
{ {
@ -7648,7 +7652,7 @@ Vector CBasePlayer::GetAutoaimVector(float flDelta)
if (g_pGameRules->AllowAutoTargetCrosshair()) if (g_pGameRules->AllowAutoTargetCrosshair())
{ {
if (m_fOldTargeting != m_fOnTarget) if (m_fOldTargeting != m_fOnTarget)
m_pActiveItem->UpdateItemInfo(); m_hActiveItem->UpdateItemInfo();
} }
else else
m_fOnTarget = FALSE; m_fOnTarget = FALSE;
@ -7903,7 +7907,7 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropPlayerItem)(const char *pszIte
CBasePlayerItem *pWeapon = nullptr; CBasePlayerItem *pWeapon = nullptr;
for (int i = 0; i < MAX_ITEM_TYPES; i++) for (int i = 0; i < MAX_ITEM_TYPES; i++)
{ {
pWeapon = m_rgpPlayerItems[i]; pWeapon = m_rghPlayerItems[i];
while (pWeapon) while (pWeapon)
{ {
if (pszItemName) if (pszItemName)
@ -7913,18 +7917,18 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropPlayerItem)(const char *pszIte
} }
else else
{ {
if (pWeapon == m_pActiveItem) if (pWeapon == m_hActiveItem)
break; break;
} }
pWeapon = pWeapon->m_pNext; pWeapon = pWeapon->m_hNext;
} }
if (pWeapon) if (pWeapon)
break; break;
} }
#else #else
auto pWeapon = pszItemName ? GetItemByName(pszItemName) : m_pActiveItem; auto pWeapon = pszItemName ? GetItemByName(pszItemName) : m_hActiveItem;
#endif #endif
if (pWeapon) if (pWeapon)
{ {
@ -7955,7 +7959,7 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropPlayerItem)(const char *pszIte
m_bHasC4 = false; m_bHasC4 = false;
pev->body = 0; pev->body = 0;
SetBombIcon(FALSE); SetBombIcon(FALSE);
pWeapon->m_pPlayer->SetProgressBarTime(0); pWeapon->m_hPlayer->SetProgressBarTime(0);
if (!CSGameRules()->m_flRestartRoundTime) if (!CSGameRules()->m_flRestartRoundTime)
{ {
@ -8033,13 +8037,13 @@ CBaseEntity *EXT_FUNC CBasePlayer::__API_HOOK(DropPlayerItem)(const char *pszIte
// Does the player already have this item? // Does the player already have this item?
bool CBasePlayer::HasPlayerItem(CBasePlayerItem *pCheckItem) bool CBasePlayer::HasPlayerItem(CBasePlayerItem *pCheckItem)
{ {
auto item = m_rgpPlayerItems[pCheckItem->iItemSlot()]; CBasePlayerItem *item = m_rghPlayerItems[pCheckItem->iItemSlot()];
while (item) while (item)
{ {
if (FClassnameIs(item->pev, STRING(pCheckItem->pev->classname))) if (FClassnameIs(item->pev, STRING(pCheckItem->pev->classname)))
return true; return true;
item = item->m_pNext; item = item->m_hNext;
} }
return false; return false;
@ -8048,14 +8052,14 @@ bool CBasePlayer::HasPlayerItem(CBasePlayerItem *pCheckItem)
// Does the player already have this item? // Does the player already have this item?
bool CBasePlayer::HasNamedPlayerItem(const char *pszItemName) bool CBasePlayer::HasNamedPlayerItem(const char *pszItemName)
{ {
for (auto item : m_rgpPlayerItems) for (CBasePlayerItem *item: m_rghPlayerItems)
{ {
while (item) while (item)
{ {
if (FClassnameIs(item->pev, pszItemName)) if (FClassnameIs(item->pev, pszItemName))
return true; return true;
item = item->m_pNext; item = item->m_hNext;
} }
} }
@ -8193,12 +8197,12 @@ void CBasePlayer::__API_HOOK(SwitchTeam)()
// NOTE: unreachable code - Vaqtincha // NOTE: unreachable code - Vaqtincha
for (int i = 0; i < MAX_ITEM_TYPES; i++) for (int i = 0; i < MAX_ITEM_TYPES; i++)
{ {
m_pActiveItem = m_rgpPlayerItems[i]; m_hActiveItem = m_pActiveItem = m_rghPlayerItems[i];
if (m_pActiveItem && FClassnameIs(m_pActiveItem->pev, "item_thighpack")) if (m_hActiveItem && FClassnameIs(m_hActiveItem->pev, "item_thighpack"))
{ {
m_pActiveItem->Drop(); m_hActiveItem->Drop();
m_rgpPlayerItems[i] = nullptr; m_rghPlayerItems[i] = m_rgpPlayerItems[i] = nullptr;
} }
} }
#endif #endif
@ -8257,20 +8261,20 @@ BOOL CBasePlayer::SwitchWeapon(CBasePlayerItem *pWeapon)
ResetAutoaim(); ResetAutoaim();
if (m_pActiveItem) if (m_hActiveItem)
{ {
m_pActiveItem->Holster(); m_hActiveItem->Holster();
} }
CBasePlayerItem *pTemp = m_pActiveItem; CBasePlayerItem *pTemp = m_hActiveItem;
m_pActiveItem = pWeapon; m_hActiveItem = m_pActiveItem = pWeapon;
m_pLastItem = pTemp; m_hLastItem = m_pLastItem = pTemp;
pWeapon->Deploy(); pWeapon->Deploy();
if (pWeapon->m_pPlayer) if (pWeapon->m_hPlayer)
{ {
pWeapon->m_pPlayer->ResetMaxSpeed(); pWeapon->m_hPlayer->ResetMaxSpeed();
} }
if (HasShield()) if (HasShield())
@ -8860,7 +8864,7 @@ bool CBasePlayer::CanAffordPrimary()
bool CBasePlayer::CanAffordPrimaryAmmo() bool CBasePlayer::CanAffordPrimaryAmmo()
{ {
CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>());
for (auto& weapon : g_weaponStruct) { for (auto& weapon : g_weaponStruct) {
if (weapon.m_type == pPrimary->m_iId && m_iAccount >= weapon.m_ammoPrice) if (weapon.m_type == pPrimary->m_iId && m_iAccount >= weapon.m_ammoPrice)
return true; return true;
@ -8871,7 +8875,7 @@ bool CBasePlayer::CanAffordPrimaryAmmo()
bool CBasePlayer::CanAffordSecondaryAmmo() bool CBasePlayer::CanAffordSecondaryAmmo()
{ {
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>());
for (auto& weapon : g_weaponStruct) { for (auto& weapon : g_weaponStruct) {
if (weapon.m_type == pSecondary->m_iId && m_iAccount >= weapon.m_ammoPrice) if (weapon.m_type == pSecondary->m_iId && m_iAccount >= weapon.m_ammoPrice)
return true; return true;
@ -8900,7 +8904,7 @@ bool CBasePlayer::CanAffordGrenade()
bool CBasePlayer::NeedsPrimaryAmmo() bool CBasePlayer::NeedsPrimaryAmmo()
{ {
CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimary = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
if (!pPrimary || pPrimary->m_iId == WEAPON_SHIELDGUN) { if (!pPrimary || pPrimary->m_iId == WEAPON_SHIELDGUN) {
return false; return false;
} }
@ -8910,7 +8914,7 @@ bool CBasePlayer::NeedsPrimaryAmmo()
bool CBasePlayer::NeedsSecondaryAmmo() bool CBasePlayer::NeedsSecondaryAmmo()
{ {
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
if (!pSecondary) { if (!pSecondary) {
return false; return false;
} }
@ -9163,7 +9167,7 @@ const char *CBasePlayer::PickPrimaryCareerTaskWeapon()
} }
buf[0] = '\0'; buf[0] = '\0';
pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); pPrimary = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
for (auto pTask : *TheCareerTasks->GetTasks()) for (auto pTask : *TheCareerTasks->GetTasks())
{ {
@ -9236,7 +9240,7 @@ const char *CBasePlayer::PickSecondaryCareerTaskWeapon()
return nullptr; return nullptr;
} }
pSecondary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); pSecondary = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
for (auto pTask : *TheCareerTasks->GetTasks()) for (auto pTask : *TheCareerTasks->GetTasks())
{ {
@ -9520,8 +9524,8 @@ void CBasePlayer::PostAutoBuyCommandProcessing(AutoBuyInfoStruct *commandInfo, b
return; return;
} }
CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimary = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
if (pPrimary && FClassnameIs(pPrimary->pev, commandInfo->m_classname)) if (pPrimary && FClassnameIs(pPrimary->pev, commandInfo->m_classname))
{ {
@ -9548,8 +9552,8 @@ void CBasePlayer::BuildRebuyStruct()
return; return;
} }
CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimary = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
// do the primary weapon/ammo stuff. // do the primary weapon/ammo stuff.
if (!pPrimary) if (!pPrimary)
@ -9662,7 +9666,7 @@ void CBasePlayer::Rebuy()
void CBasePlayer::RebuyPrimaryWeapon() void CBasePlayer::RebuyPrimaryWeapon()
{ {
if (!m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]) if (!m_rghPlayerItems[PRIMARY_WEAPON_SLOT])
{ {
if (m_rebuyStruct.m_primaryWeapon) if (m_rebuyStruct.m_primaryWeapon)
{ {
@ -9675,7 +9679,7 @@ void CBasePlayer::RebuyPrimaryWeapon()
void CBasePlayer::RebuyPrimaryAmmo() void CBasePlayer::RebuyPrimaryAmmo()
{ {
CBasePlayerWeapon *pPrimary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimary = m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
if (pPrimary) if (pPrimary)
{ {
// if we had more ammo before than we have now, buy more. // if we had more ammo before than we have now, buy more.
@ -9698,7 +9702,7 @@ void CBasePlayer::RebuySecondaryWeapon()
void CBasePlayer::RebuySecondaryAmmo() void CBasePlayer::RebuySecondaryAmmo()
{ {
CBasePlayerWeapon *pSecondary = static_cast<CBasePlayerWeapon *>(m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondary = m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
if (pSecondary) if (pSecondary)
{ {
if (m_rebuyStruct.m_secondaryAmmo > m_rgAmmo[pSecondary->m_iPrimaryAmmoType]) { if (m_rebuyStruct.m_secondaryAmmo > m_rgAmmo[pSecondary->m_iPrimaryAmmoType]) {
@ -9857,7 +9861,7 @@ void CBasePlayer::ReloadWeapons(CBasePlayerItem *pWeapon, bool bForceReload, boo
for (int i = PRIMARY_WEAPON_SLOT; i <= PISTOL_SLOT; i++) for (int i = PRIMARY_WEAPON_SLOT; i <= PISTOL_SLOT; i++)
{ {
auto item = m_rgpPlayerItems[i]; CBasePlayerItem *item = m_rghPlayerItems[i];
while (item) while (item)
{ {
if (pWeapon == nullptr || pWeapon == item) if (pWeapon == nullptr || pWeapon == item)
@ -9873,7 +9877,7 @@ void CBasePlayer::ReloadWeapons(CBasePlayerItem *pWeapon, bool bForceReload, boo
if (pWeapon == item) if (pWeapon == item)
break; break;
item = item->m_pNext; item = item->m_hNext;
} }
if (pWeapon && pWeapon == item) if (pWeapon && pWeapon == item)
@ -9905,8 +9909,11 @@ void CBasePlayer::DropSecondary()
{ {
if (HasShield()) if (HasShield())
{ {
if (IsProtectedByShield() && m_pActiveItem) { if (IsProtectedByShield())
((CBasePlayerWeapon *)m_pActiveItem)->SecondaryAttack(); {
CBasePlayerWeapon *pWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon)
pWeapon->SecondaryAttack();
} }
m_bShieldDrawn = false; m_bShieldDrawn = false;
@ -9918,7 +9925,7 @@ void CBasePlayer::DropSecondary()
return false; return false;
}); });
#else #else
auto item = m_rgpPlayerItems[PISTOL_SLOT]; CBasePlayerItem *item = m_rghPlayerItems[PISTOL_SLOT];
if (item) if (item)
{ {
DropPlayerItem(STRING(item->pev->classname)); DropPlayerItem(STRING(item->pev->classname));
@ -9940,7 +9947,7 @@ void CBasePlayer::DropPrimary()
return false; return false;
}); });
#else #else
auto item = m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]; CBasePlayerItem *item = m_rghPlayerItems[PRIMARY_WEAPON_SLOT];
if (item) if (item)
{ {
DropPlayerItem(STRING(item->pev->classname)); DropPlayerItem(STRING(item->pev->classname));
@ -9972,7 +9979,7 @@ void CBasePlayer::RemoveBomb()
SetBombIcon(FALSE); SetBombIcon(FALSE);
SetProgressBarTime(0); SetProgressBarTime(0);
if (m_pActiveItem == pBomb) { if (m_hActiveItem == pBomb) {
((CBasePlayerWeapon *)pBomb)->RetireWeapon(); ((CBasePlayerWeapon *)pBomb)->RetireWeapon();
} }

View File

@ -647,10 +647,10 @@ public:
template<typename T = CBasePlayerItem, typename Functor> template<typename T = CBasePlayerItem, typename Functor>
T *ForEachItem(int slot, const Functor &func) const T *ForEachItem(int slot, const Functor &func) const
{ {
auto item = m_rgpPlayerItems[slot]; CBasePlayerItem *item = m_rghPlayerItems[slot];
while (item) while (item)
{ {
auto next = item->m_pNext; CBasePlayerItem *next = item->m_hNext;
if (func(static_cast<T *>(item))) if (func(static_cast<T *>(item)))
return static_cast<T *>(item); return static_cast<T *>(item);
@ -663,11 +663,11 @@ public:
template<typename T = CBasePlayerItem, typename Functor> template<typename T = CBasePlayerItem, typename Functor>
T *ForEachItem(const Functor &func) const T *ForEachItem(const Functor &func) const
{ {
for (auto item : m_rgpPlayerItems) for (CBasePlayerItem *item : m_rghPlayerItems)
{ {
while (item) while (item)
{ {
auto next = item->m_pNext; CBasePlayerItem *next = item->m_hNext;
if (func(static_cast<T *>(item))) if (func(static_cast<T *>(item)))
return static_cast<T *>(item); return static_cast<T *>(item);
@ -685,7 +685,7 @@ public:
return nullptr; return nullptr;
} }
for (auto item : m_rgpPlayerItems) for (CBasePlayerItem *item : m_rghPlayerItems)
{ {
while (item) while (item)
{ {
@ -693,7 +693,7 @@ public:
return static_cast<T *>(item); return static_cast<T *>(item);
} }
item = item->m_pNext; item = item->m_hNext;
} }
} }
@ -835,10 +835,18 @@ public:
int m_iClientFOV; int m_iClientFOV;
int m_iNumSpawns; int m_iNumSpawns;
CBaseEntity *m_pObserver; CBaseEntity *m_pObserver;
////
// DEPRECATED: Use safe pointers instead it
////
CBasePlayerItem *m_rgpPlayerItems[MAX_ITEM_TYPES]; CBasePlayerItem *m_rgpPlayerItems[MAX_ITEM_TYPES];
CBasePlayerItem *m_pActiveItem; CBasePlayerItem *m_pActiveItem;
CBasePlayerItem *m_pClientActiveItem; CBasePlayerItem *m_pClientActiveItem;
CBasePlayerItem *m_pLastItem; CBasePlayerItem *m_pLastItem;
////
// DEPRECATED: Use safe pointers instead it
////
int m_rgAmmo[MAX_AMMO_SLOTS]; int m_rgAmmo[MAX_AMMO_SLOTS];
int m_rgAmmoLast[MAX_AMMO_SLOTS]; int m_rgAmmoLast[MAX_AMMO_SLOTS];
Vector m_vecAutoAim; Vector m_vecAutoAim;
@ -902,6 +910,10 @@ public:
int m_iLastClientHealth; int m_iLastClientHealth;
float m_tmNextAccountHealthUpdate; float m_tmNextAccountHealthUpdate;
#endif #endif
EntityHandle<CBasePlayerItem> m_rghPlayerItems[MAX_ITEM_TYPES];
EntityHandle<CBasePlayerItem> m_hActiveItem;
EntityHandle<CBasePlayerItem> m_hLastItem;
}; };
CWeaponBox *CreateWeaponBox(CBasePlayerItem *pItem, CBasePlayer *pPlayerOwner, const char *modelName, Vector &origin, Vector &angles, Vector &velocity, float lifeTime, bool packAmmo); CWeaponBox *CreateWeaponBox(CBasePlayerItem *pItem, CBasePlayer *pPlayerOwner, const char *modelName, Vector &origin, Vector &angles, Vector &velocity, float lifeTime, bool packAmmo);
@ -927,7 +939,7 @@ public:
inline bool CBasePlayer::IsReloading() const inline bool CBasePlayer::IsReloading() const
{ {
CBasePlayerWeapon *pCurrentWeapon = static_cast<CBasePlayerWeapon *>(m_pActiveItem); CBasePlayerWeapon *pCurrentWeapon = m_hActiveItem.Get<CBasePlayerWeapon>();
if (pCurrentWeapon && pCurrentWeapon->m_fInReload) if (pCurrentWeapon && pCurrentWeapon->m_fInReload)
{ {
return true; return true;

View File

@ -28,13 +28,13 @@ BOOL CHalfLifeRules::IsCoOp()
BOOL CHalfLifeRules::FShouldSwitchWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon) BOOL CHalfLifeRules::FShouldSwitchWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{ {
if (!pPlayer->m_pActiveItem) if (!pPlayer->m_hActiveItem)
{ {
// player doesn't have an active item! // player doesn't have an active item!
return TRUE; return TRUE;
} }
if (!pPlayer->m_pActiveItem->CanHolster()) if (!pPlayer->m_hActiveItem->CanHolster())
{ {
return FALSE; return FALSE;
} }

View File

@ -75,7 +75,7 @@ void CHalfLifeTraining::PlayerThink(CBasePlayer *pPlayer)
pPlayer->m_bCanShoot = true; pPlayer->m_bCanShoot = true;
pPlayer->m_fLastMovement = gpGlobals->time; pPlayer->m_fLastMovement = gpGlobals->time;
if (pPlayer->m_pActiveItem) if (pPlayer->m_hActiveItem)
pPlayer->m_iHideHUD &= ~HIDEHUD_WEAPONS; pPlayer->m_iHideHUD &= ~HIDEHUD_WEAPONS;
else else
pPlayer->m_iHideHUD |= HIDEHUD_WEAPONS; pPlayer->m_iHideHUD |= HIDEHUD_WEAPONS;
@ -86,9 +86,8 @@ void CHalfLifeTraining::PlayerThink(CBasePlayer *pPlayer)
{ {
pPlayer->m_bHasC4 = false; pPlayer->m_bHasC4 = false;
CBasePlayerWeapon *pWeapon = (CBasePlayerWeapon *)pPlayer->m_pActiveItem; CBasePlayerWeapon *pWeapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon && FClassnameIs(pWeapon->pev, "weapon_c4"))
if (FClassnameIs(pWeapon->pev, "weapon_c4"))
{ {
pPlayer->pev->weapons &= ~(1 << pWeapon->m_iId); pPlayer->pev->weapons &= ~(1 << pWeapon->m_iId);
pPlayer->RemovePlayerItem(pWeapon); pPlayer->RemovePlayerItem(pWeapon);

View File

@ -1286,7 +1286,7 @@ void CCSTutor::HandleWeaponFiredOnEmpty(CBaseEntity *pEntity, CBaseEntity *pOthe
CBasePlayer *pPlayer = static_cast<CBasePlayer *>(pEntity); CBasePlayer *pPlayer = static_cast<CBasePlayer *>(pEntity);
if (pPlayer && pPlayer->IsPlayer() && pPlayer == pLocalPlayer) if (pPlayer && pPlayer->IsPlayer() && pPlayer == pLocalPlayer)
{ {
CBasePlayerWeapon *pCurrentWeapon = static_cast<CBasePlayerWeapon *>(pPlayer->m_pActiveItem); CBasePlayerWeapon *pCurrentWeapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (pCurrentWeapon && pPlayer->m_rgAmmo[pCurrentWeapon->m_iPrimaryAmmoType] <= 0) if (pCurrentWeapon && pPlayer->m_rgAmmo[pCurrentWeapon->m_iPrimaryAmmoType] <= 0)
{ {
TutorMessage *message = GetTutorMessageDefinition(YOU_ARE_OUT_OF_AMMO); TutorMessage *message = GetTutorMessageDefinition(YOU_ARE_OUT_OF_AMMO);
@ -2581,7 +2581,7 @@ void CCSTutor::CheckForNeedToReload(bool isPassiveCheck)
if (!pLocalPlayer || !pLocalPlayer->IsPlayer()) if (!pLocalPlayer || !pLocalPlayer->IsPlayer())
return; return;
CBasePlayerWeapon *pCurrentWeapon = static_cast<CBasePlayerWeapon *>(pLocalPlayer->m_pActiveItem); CBasePlayerWeapon *pCurrentWeapon = pLocalPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (!pCurrentWeapon || !pCurrentWeapon->IsWeapon()) if (!pCurrentWeapon || !pCurrentWeapon->IsWeapon())
return; return;
@ -2747,8 +2747,8 @@ void CCSTutor::CheckBuyZoneMessages()
if (!pLocalPlayer || m_currentlyShownMessageID == BUY_TIME_BEGIN) if (!pLocalPlayer || m_currentlyShownMessageID == BUY_TIME_BEGIN)
return; return;
CBasePlayerWeapon *pPrimaryWeapon = static_cast<CBasePlayerWeapon *>(pLocalPlayer->m_rgpPlayerItems[PRIMARY_WEAPON_SLOT]); CBasePlayerWeapon *pPrimaryWeapon = pLocalPlayer->m_rghPlayerItems[PRIMARY_WEAPON_SLOT].Get<CBasePlayerWeapon>();
CBasePlayerWeapon *pSecondaryWeapon = static_cast<CBasePlayerWeapon *>(pLocalPlayer->m_rgpPlayerItems[PISTOL_SLOT]); CBasePlayerWeapon *pSecondaryWeapon = pLocalPlayer->m_rghPlayerItems[PISTOL_SLOT].Get<CBasePlayerWeapon>();
if (pPrimaryWeapon) if (pPrimaryWeapon)
{ {

View File

@ -616,26 +616,26 @@ void CBasePlayerItem::DefaultTouch(CBaseEntity *pOther)
void CBasePlayerWeapon::SetPlayerShieldAnim() void CBasePlayerWeapon::SetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shield");
} }
else else
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgun"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgun");
} }
} }
void CBasePlayerWeapon::ResetPlayerShieldAnim() void CBasePlayerWeapon::ResetPlayerShieldAnim()
{ {
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgun"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgun");
} }
} }
} }
@ -645,42 +645,42 @@ void CBasePlayerWeapon::EjectBrassLate()
int soundType; int soundType;
Vector vecUp, vecRight, vecShellVelocity; Vector vecUp, vecRight, vecShellVelocity;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecUp = RANDOM_FLOAT(100, 150) * gpGlobals->v_up; vecUp = RANDOM_FLOAT(100, 150) * gpGlobals->v_up;
vecRight = RANDOM_FLOAT(50, 70) * gpGlobals->v_right; vecRight = RANDOM_FLOAT(50, 70) * gpGlobals->v_right;
vecShellVelocity = (m_pPlayer->pev->velocity + vecRight + vecUp) + gpGlobals->v_forward * 25; vecShellVelocity = (m_hPlayer->pev->velocity + vecRight + vecUp) + gpGlobals->v_forward * 25;
soundType = (m_iId == WEAPON_XM1014 || m_iId == WEAPON_M3) ? 2 : 1; soundType = (m_iId == WEAPON_XM1014 || m_iId == WEAPON_M3) ? 2 : 1;
EjectBrass(pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_up * -9 + gpGlobals->v_forward * 16, gpGlobals->v_right * -9, EjectBrass(pev->origin + m_hPlayer->pev->view_ofs + gpGlobals->v_up * -9 + gpGlobals->v_forward * 16, gpGlobals->v_right * -9,
vecShellVelocity, pev->angles.y, m_iShellId, soundType, m_pPlayer->entindex()); vecShellVelocity, pev->angles.y, m_iShellId, soundType, m_hPlayer->entindex());
} }
bool CBasePlayerWeapon::ShieldSecondaryFire(int iUpAnim, int iDownAnim) bool CBasePlayerWeapon::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return false; return false;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE); SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgun"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgun");
m_fMaxSpeed = 250.0f; m_fMaxSpeed = 250.0f;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
} }
else else
{ {
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN; m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE); SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = 180.0f; m_fMaxSpeed = 180.0f;
m_pPlayer->m_bShieldDrawn = true; m_hPlayer->m_bShieldDrawn = true;
} }
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN); m_hPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = 0.4f; m_flNextSecondaryAttack = 0.4f;
m_flNextPrimaryAttack = 0.4f; m_flNextPrimaryAttack = 0.4f;
@ -705,26 +705,26 @@ void CBasePlayerWeapon::KickBack(float up_base, float lateral_base, float up_mod
flKickLateral = m_iShotsFired * lateral_modifier + lateral_base; flKickLateral = m_iShotsFired * lateral_modifier + lateral_base;
} }
m_pPlayer->pev->punchangle.x -= flKickUp; m_hPlayer->pev->punchangle.x -= flKickUp;
if (m_pPlayer->pev->punchangle.x < -up_max) if (m_hPlayer->pev->punchangle.x < -up_max)
{ {
m_pPlayer->pev->punchangle.x = -up_max; m_hPlayer->pev->punchangle.x = -up_max;
} }
if (m_iDirection == 1) if (m_iDirection == 1)
{ {
m_pPlayer->pev->punchangle.y += flKickLateral; m_hPlayer->pev->punchangle.y += flKickLateral;
if (m_pPlayer->pev->punchangle.y > lateral_max) if (m_hPlayer->pev->punchangle.y > lateral_max)
m_pPlayer->pev->punchangle.y = lateral_max; m_hPlayer->pev->punchangle.y = lateral_max;
} }
else else
{ {
m_pPlayer->pev->punchangle.y -= flKickLateral; m_hPlayer->pev->punchangle.y -= flKickLateral;
if (m_pPlayer->pev->punchangle.y < -lateral_max) if (m_hPlayer->pev->punchangle.y < -lateral_max)
m_pPlayer->pev->punchangle.y = -lateral_max; m_hPlayer->pev->punchangle.y = -lateral_max;
} }
if (!RANDOM_LONG(0, direction_change)) if (!RANDOM_LONG(0, direction_change))
@ -744,9 +744,9 @@ void CBasePlayerWeapon::FireRemaining(int &shotsFired, float &shootTime, BOOL bI
return; return;
} }
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
Vector vecSrc = m_pPlayer->GetGunPosition(); Vector vecSrc = m_hPlayer->GetGunPosition();
Vector vecDir; Vector vecDir;
int flag; int flag;
@ -758,30 +758,30 @@ void CBasePlayerWeapon::FireRemaining(int &shotsFired, float &shootTime, BOOL bI
if (bIsGlock) if (bIsGlock)
{ {
vecDir = m_pPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, 0.05, 8192, 1, BULLET_PLAYER_9MM, 18, 0.9, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, 0.05, 8192, 1, BULLET_PLAYER_9MM, 18, 0.9, m_hPlayer->pev, true, m_hPlayer->random_seed);
--m_pPlayer->ammo_9mm; --m_hPlayer->ammo_9mm;
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireGlock18, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireGlock18, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 10000), int(m_pPlayer->pev->punchangle.y * 10000), m_iClip == 0, FALSE); int(m_hPlayer->pev->punchangle.x * 10000), int(m_hPlayer->pev->punchangle.y * 10000), m_iClip == 0, FALSE);
} }
else else
{ {
vecDir = m_pPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, m_fBurstSpread, 8192, 2, BULLET_PLAYER_556MM, 30, 0.96, m_pPlayer->pev, false, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, m_fBurstSpread, 8192, 2, BULLET_PLAYER_556MM, 30, 0.96, m_hPlayer->pev, false, m_hPlayer->random_seed);
--m_pPlayer->ammo_556nato; --m_hPlayer->ammo_556nato;
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
// HACKHACK: client-side weapon prediction fix // HACKHACK: client-side weapon prediction fix
if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_pPlayer->pev->waterlevel == 3) if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_hPlayer->pev->waterlevel == 3)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireFamas, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireFamas, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 10000000), int(m_pPlayer->pev->punchangle.y * 10000000), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 10000000), int(m_hPlayer->pev->punchangle.y * 10000000), FALSE, FALSE);
} }
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
if (++shotsFired != 3) if (++shotsFired != 3)
{ {
@ -809,7 +809,7 @@ BOOL CanAttack(float attack_time, float curtime, BOOL isPredicted)
bool CBasePlayerWeapon::HasSecondaryAttack() bool CBasePlayerWeapon::HasSecondaryAttack()
{ {
if (m_pPlayer && m_pPlayer->HasShield()) if (m_hPlayer && m_hPlayer->HasShield())
{ {
return true; return true;
} }
@ -853,7 +853,7 @@ void CBasePlayerWeapon::HandleInfiniteAmmo()
int nInfiniteAmmo = 0; int nInfiniteAmmo = 0;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
nInfiniteAmmo = m_pPlayer->CSPlayer()->m_iWeaponInfiniteAmmo; nInfiniteAmmo = m_hPlayer->CSPlayer()->m_iWeaponInfiniteAmmo;
#endif #endif
if (!nInfiniteAmmo) if (!nInfiniteAmmo)
@ -866,26 +866,26 @@ void CBasePlayerWeapon::HandleInfiniteAmmo()
else if ((nInfiniteAmmo == WPNMODE_INFINITE_BPAMMO else if ((nInfiniteAmmo == WPNMODE_INFINITE_BPAMMO
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
&& &&
((m_pPlayer->CSPlayer()->m_iWeaponInfiniteIds & (1 << m_iId)) || (m_pPlayer->CSPlayer()->m_iWeaponInfiniteIds <= 0 && !IsGrenadeWeapon(m_iId))) ((m_hPlayer->CSPlayer()->m_iWeaponInfiniteIds & (1 << m_iId)) || (m_hPlayer->CSPlayer()->m_iWeaponInfiniteIds <= 0 && !IsGrenadeWeapon(m_iId)))
#endif #endif
) )
|| (IsGrenadeWeapon(m_iId) && infiniteGrenades.value == 1.0f)) || (IsGrenadeWeapon(m_iId) && infiniteGrenades.value == 1.0f))
{ {
if (pszAmmo1()) if (pszAmmo1())
{ {
m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()] = iMaxAmmo1(); m_hPlayer->m_rgAmmo[PrimaryAmmoIndex()] = iMaxAmmo1();
} }
if (pszAmmo2()) if (pszAmmo2())
{ {
m_pPlayer->m_rgAmmo[SecondaryAmmoIndex()] = iMaxAmmo2(); m_hPlayer->m_rgAmmo[SecondaryAmmoIndex()] = iMaxAmmo2();
} }
} }
} }
void CBasePlayerWeapon::ItemPostFrame() void CBasePlayerWeapon::ItemPostFrame()
{ {
int usableButtons = m_pPlayer->pev->button; int usableButtons = m_hPlayer->pev->button;
if (!HasSecondaryAttack()) if (!HasSecondaryAttack())
{ {
@ -905,45 +905,45 @@ void CBasePlayerWeapon::ItemPostFrame()
// This is used only for the AWP and Scout // This is used only for the AWP and Scout
if (m_flNextPrimaryAttack <= UTIL_WeaponTimeBase()) if (m_flNextPrimaryAttack <= UTIL_WeaponTimeBase())
{ {
if (m_pPlayer->m_bResumeZoom) if (m_hPlayer->m_bResumeZoom)
{ {
m_pPlayer->m_iFOV = m_pPlayer->m_iLastZoom; m_hPlayer->m_iFOV = m_hPlayer->m_iLastZoom;
m_pPlayer->pev->fov = m_pPlayer->m_iFOV; m_hPlayer->pev->fov = m_hPlayer->m_iFOV;
if (m_pPlayer->m_iFOV == m_pPlayer->m_iLastZoom) if (m_hPlayer->m_iFOV == m_hPlayer->m_iLastZoom)
{ {
// return the fade level in zoom. // return the fade level in zoom.
m_pPlayer->m_bResumeZoom = false; m_hPlayer->m_bResumeZoom = false;
} }
} }
} }
if (m_pPlayer->m_flEjectBrass != 0 && m_pPlayer->m_flEjectBrass <= gpGlobals->time) if (m_hPlayer->m_flEjectBrass != 0 && m_hPlayer->m_flEjectBrass <= gpGlobals->time)
{ {
m_pPlayer->m_flEjectBrass = 0; m_hPlayer->m_flEjectBrass = 0;
EjectBrassLate(); EjectBrassLate();
} }
if (!(m_pPlayer->pev->button & IN_ATTACK)) if (!(m_hPlayer->pev->button & IN_ATTACK))
{ {
m_flLastFireTime = 0; m_flLastFireTime = 0;
} }
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
if (m_fInReload && (m_pPlayer->pev->button & IN_ATTACK2)) if (m_fInReload && (m_hPlayer->pev->button & IN_ATTACK2))
{ {
SecondaryAttack(); SecondaryAttack();
m_pPlayer->pev->button &= ~IN_ATTACK2; m_hPlayer->pev->button &= ~IN_ATTACK2;
m_fInReload = FALSE; m_fInReload = FALSE;
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase(); m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase();
} }
} }
if (m_fInReload && m_pPlayer->m_flNextAttack <= UTIL_WeaponTimeBase()) if (m_fInReload && m_hPlayer->m_flNextAttack <= UTIL_WeaponTimeBase())
{ {
// complete the reload. // complete the reload.
int j = Q_min(iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]); int j = Q_min(iMaxClip() - m_iClip, m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
// Add them to the clip // Add them to the clip
m_iClip += j; m_iClip += j;
@ -954,46 +954,46 @@ void CBasePlayerWeapon::ItemPostFrame()
if (refill_bpammo_weapons.value < 3.0f) if (refill_bpammo_weapons.value < 3.0f)
#endif #endif
{ {
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j; m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j;
} }
m_pPlayer->TabulateAmmo(); m_hPlayer->TabulateAmmo();
m_fInReload = FALSE; m_fInReload = FALSE;
} }
if ((usableButtons & IN_ATTACK2) && CanAttack(m_flNextSecondaryAttack, UTIL_WeaponTimeBase(), UseDecrement()) if ((usableButtons & IN_ATTACK2) && CanAttack(m_flNextSecondaryAttack, UTIL_WeaponTimeBase(), UseDecrement())
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
&& !m_pPlayer->m_bIsDefusing // In-line: I think it's fine to block secondary attack, when defusing. It's better then blocking speed resets in weapons. && !m_hPlayer->m_bIsDefusing // In-line: I think it's fine to block secondary attack, when defusing. It's better then blocking speed resets in weapons.
#endif #endif
) )
{ {
if (pszAmmo2() && !m_pPlayer->m_rgAmmo[SecondaryAmmoIndex()]) if (pszAmmo2() && !m_hPlayer->m_rgAmmo[SecondaryAmmoIndex()])
{ {
m_fFireOnEmpty = TRUE; m_fFireOnEmpty = TRUE;
} }
SecondaryAttack(); SecondaryAttack();
m_pPlayer->pev->button &= ~IN_ATTACK2; m_hPlayer->pev->button &= ~IN_ATTACK2;
} }
else if ((m_pPlayer->pev->button & IN_ATTACK) && CanAttack(m_flNextPrimaryAttack, UTIL_WeaponTimeBase(), UseDecrement())) else if ((m_hPlayer->pev->button & IN_ATTACK) && CanAttack(m_flNextPrimaryAttack, UTIL_WeaponTimeBase(), UseDecrement()))
{ {
if ((m_iClip == 0 && pszAmmo1()) || (iMaxClip() == WEAPON_NOCLIP && !m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()])) if ((m_iClip == 0 && pszAmmo1()) || (iMaxClip() == WEAPON_NOCLIP && !m_hPlayer->m_rgAmmo[PrimaryAmmoIndex()]))
{ {
m_fFireOnEmpty = TRUE; m_fFireOnEmpty = TRUE;
} }
m_pPlayer->TabulateAmmo(); m_hPlayer->TabulateAmmo();
// Can't shoot during the freeze period // Can't shoot during the freeze period
// Always allow firing in single player // Always allow firing in single player
if ( if (
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
m_pPlayer->CSPlayer()->m_bCanShootOverride || m_hPlayer->CSPlayer()->m_bCanShootOverride ||
#endif #endif
(m_pPlayer->m_bCanShoot && g_pGameRules->IsMultiplayer() && !g_pGameRules->IsFreezePeriod() && !m_pPlayer->m_bIsDefusing) || !g_pGameRules->IsMultiplayer()) (m_hPlayer->m_bCanShoot && g_pGameRules->IsMultiplayer() && !g_pGameRules->IsFreezePeriod() && !m_hPlayer->m_bIsDefusing) || !g_pGameRules->IsMultiplayer())
{ {
// don't fire underwater // don't fire underwater
if (m_pPlayer->pev->waterlevel == 3 && (iFlags() & ITEM_FLAG_NOFIREUNDERWATER)) if (m_hPlayer->pev->waterlevel == 3 && (iFlags() & ITEM_FLAG_NOFIREUNDERWATER))
{ {
PlayEmptySound(); PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15); m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
@ -1004,7 +1004,7 @@ void CBasePlayerWeapon::ItemPostFrame()
} }
} }
} }
else if ((m_pPlayer->pev->button & IN_RELOAD) && iMaxClip() != WEAPON_NOCLIP && !m_fInReload && m_flNextPrimaryAttack < UTIL_WeaponTimeBase()) else if ((m_hPlayer->pev->button & IN_RELOAD) && iMaxClip() != WEAPON_NOCLIP && !m_fInReload && m_flNextPrimaryAttack < UTIL_WeaponTimeBase())
{ {
// reload when reload is pressed, or if no buttons are down and weapon is empty. // reload when reload is pressed, or if no buttons are down and weapon is empty.
if (m_flFamasShoot == 0 && m_flGlock18Shoot == 0) if (m_flFamasShoot == 0 && m_flGlock18Shoot == 0)
@ -1062,7 +1062,7 @@ void CBasePlayerWeapon::ItemPostFrame()
{ {
#if 0 #if 0
// weapon isn't useable, switch. // weapon isn't useable, switch.
if (!(iFlags() & ITEM_FLAG_NOAUTOSWITCHEMPTY) && g_pGameRules->GetNextBestWeapon(m_pPlayer, this)) if (!(iFlags() & ITEM_FLAG_NOAUTOSWITCHEMPTY) && g_pGameRules->GetNextBestWeapon(m_hPlayer, this))
{ {
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.3f; m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.3f;
return; return;
@ -1106,18 +1106,18 @@ void CBasePlayerWeapon::ItemPostFrame()
void CBasePlayerItem::DestroyItem() void CBasePlayerItem::DestroyItem()
{ {
if (m_pPlayer) if (m_hPlayer)
{ {
// if attached to a player, remove. // if attached to a player, remove.
if (m_pPlayer->RemovePlayerItem(this)) if (m_hPlayer->RemovePlayerItem(this))
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_pPlayer->pev->weapons &= ~(1 << m_iId); m_hPlayer->pev->weapons &= ~(1 << m_iId);
// No more weapon // No more weapon
if ((m_pPlayer->pev->weapons & ~(1 << WEAPON_SUIT)) == 0) { if ((m_hPlayer->pev->weapons & ~(1 << WEAPON_SUIT)) == 0) {
m_pPlayer->m_iHideHUD |= HIDEHUD_WEAPONS; m_hPlayer->m_iHideHUD |= HIDEHUD_WEAPONS;
} }
#endif #endif
@ -1129,7 +1129,7 @@ void CBasePlayerItem::DestroyItem()
int CBasePlayerItem::AddToPlayer(CBasePlayer *pPlayer) int CBasePlayerItem::AddToPlayer(CBasePlayer *pPlayer)
{ {
m_pPlayer = pPlayer; m_hPlayer = m_pPlayer = pPlayer;
MESSAGE_BEGIN(MSG_ONE, gmsgWeapPickup, nullptr, pPlayer->pev); MESSAGE_BEGIN(MSG_ONE, gmsgWeapPickup, nullptr, pPlayer->pev);
WRITE_BYTE(m_iId); WRITE_BYTE(m_iId);
@ -1154,8 +1154,8 @@ void CBasePlayerItem::Kill()
void CBasePlayerItem::Holster(int skiplocal) void CBasePlayerItem::Holster(int skiplocal)
{ {
m_pPlayer->pev->viewmodel = 0; m_hPlayer->pev->viewmodel = 0;
m_pPlayer->pev->weaponmodel = 0; m_hPlayer->pev->weaponmodel = 0;
} }
void CBasePlayerItem::AttachToPlayer(CBasePlayer *pPlayer) void CBasePlayerItem::AttachToPlayer(CBasePlayer *pPlayer)
@ -1211,7 +1211,7 @@ int CBasePlayerWeapon::AddDuplicate(CBasePlayerItem *pOriginal)
int CBasePlayerWeapon::AddToPlayer(CBasePlayer *pPlayer) int CBasePlayerWeapon::AddToPlayer(CBasePlayer *pPlayer)
{ {
m_pPlayer = pPlayer; m_hPlayer = m_pPlayer = pPlayer;
pPlayer->pev->weapons |= (1 << m_iId); pPlayer->pev->weapons |= (1 << m_iId);
if (!m_iPrimaryAmmoType) if (!m_iPrimaryAmmoType)
@ -1233,7 +1233,7 @@ int CBasePlayerWeapon::UpdateClientData(CBasePlayer *pPlayer)
bool bSend = false; bool bSend = false;
int state = 0; int state = 0;
if (pPlayer->m_pActiveItem == this) if (pPlayer->m_hActiveItem == this)
{ {
if (pPlayer->m_fOnTarget) if (pPlayer->m_fOnTarget)
state = WEAPON_IS_ONTARGET; state = WEAPON_IS_ONTARGET;
@ -1244,9 +1244,9 @@ int CBasePlayerWeapon::UpdateClientData(CBasePlayer *pPlayer)
if (!pPlayer->m_fWeapon) if (!pPlayer->m_fWeapon)
bSend = true; bSend = true;
if (this == pPlayer->m_pActiveItem || this == pPlayer->m_pClientActiveItem) if (this == pPlayer->m_hActiveItem || this == pPlayer->m_pClientActiveItem)
{ {
if (pPlayer->m_pActiveItem != pPlayer->m_pClientActiveItem) if (pPlayer->m_hActiveItem != pPlayer->m_pClientActiveItem)
bSend = true; bSend = true;
} }
@ -1266,9 +1266,9 @@ int CBasePlayerWeapon::UpdateClientData(CBasePlayer *pPlayer)
pPlayer->m_fWeapon = TRUE; pPlayer->m_fWeapon = TRUE;
} }
if (m_pNext) if (m_hNext)
{ {
m_pNext->UpdateClientData(pPlayer); m_hNext->UpdateClientData(pPlayer);
} }
return 1; return 1;
@ -1276,14 +1276,14 @@ int CBasePlayerWeapon::UpdateClientData(CBasePlayer *pPlayer)
void CBasePlayerWeapon::SendWeaponAnim(int iAnim, int skiplocal) void CBasePlayerWeapon::SendWeaponAnim(int iAnim, int skiplocal)
{ {
m_pPlayer->pev->weaponanim = iAnim; m_hPlayer->pev->weaponanim = iAnim;
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
if (skiplocal && ENGINE_CANSKIP(m_pPlayer->edict())) if (skiplocal && ENGINE_CANSKIP(m_hPlayer->edict()))
return; return;
#endif #endif
MESSAGE_BEGIN(MSG_ONE, SVC_WEAPONANIM, nullptr, m_pPlayer->pev); MESSAGE_BEGIN(MSG_ONE, SVC_WEAPONANIM, nullptr, m_hPlayer->pev);
WRITE_BYTE(iAnim); // sequence number WRITE_BYTE(iAnim); // sequence number
WRITE_BYTE(pev->body); // weaponmodel bodygroup. WRITE_BYTE(pev->body); // weaponmodel bodygroup.
MESSAGE_END(); MESSAGE_END();
@ -1296,7 +1296,7 @@ BOOL CBasePlayerWeapon::AddPrimaryAmmo(int iCount, char *szName, int iMaxClip, i
if (iMaxClip < 1) if (iMaxClip < 1)
{ {
m_iClip = WEAPON_NOCLIP; m_iClip = WEAPON_NOCLIP;
iIdAmmo = m_pPlayer->GiveAmmo(iCount, szName, iMaxCarry); iIdAmmo = m_hPlayer->GiveAmmo(iCount, szName, iMaxCarry);
} }
else if (m_iClip == 0) else if (m_iClip == 0)
{ {
@ -1304,17 +1304,17 @@ BOOL CBasePlayerWeapon::AddPrimaryAmmo(int iCount, char *szName, int iMaxClip, i
i = Q_min(m_iClip + iCount, iMaxClip); i = Q_min(m_iClip + iCount, iMaxClip);
m_iClip += i; m_iClip += i;
iIdAmmo = m_pPlayer->GiveAmmo(iCount - i, szName, iMaxCarry); iIdAmmo = m_hPlayer->GiveAmmo(iCount - i, szName, iMaxCarry);
} }
else else
{ {
iIdAmmo = m_pPlayer->GiveAmmo(iCount, szName, iMaxCarry); iIdAmmo = m_hPlayer->GiveAmmo(iCount, szName, iMaxCarry);
} }
if (iIdAmmo > 0) if (iIdAmmo > 0)
{ {
m_iPrimaryAmmoType = iIdAmmo; m_iPrimaryAmmoType = iIdAmmo;
if (m_pPlayer->HasPlayerItem(this)) if (m_hPlayer->HasPlayerItem(this))
{ {
// play the "got ammo" sound only if we gave some ammo to a player that already had this gun. // play the "got ammo" sound only if we gave some ammo to a player that already had this gun.
// if the player is just getting this gun for the first time, DefaultTouch will play the "picked up gun" sound for us. // if the player is just getting this gun for the first time, DefaultTouch will play the "picked up gun" sound for us.
@ -1327,7 +1327,7 @@ BOOL CBasePlayerWeapon::AddPrimaryAmmo(int iCount, char *szName, int iMaxClip, i
BOOL CBasePlayerWeapon::AddSecondaryAmmo(int iCount, char *szName, int iMax) BOOL CBasePlayerWeapon::AddSecondaryAmmo(int iCount, char *szName, int iMax)
{ {
int iIdAmmo = m_pPlayer->GiveAmmo(iCount, szName, iMax); int iIdAmmo = m_hPlayer->GiveAmmo(iCount, szName, iMax);
if (iIdAmmo > 0) if (iIdAmmo > 0)
{ {
@ -1346,7 +1346,7 @@ BOOL CBasePlayerWeapon::IsUseable()
{ {
if (m_iClip <= 0) if (m_iClip <= 0)
{ {
if (m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()] <= 0 && iMaxAmmo1() != -1) if (m_hPlayer->m_rgAmmo[PrimaryAmmoIndex()] <= 0 && iMaxAmmo1() != -1)
{ {
// clip is empty (or nonexistant) and the player has no more ammo of this type. // clip is empty (or nonexistant) and the player has no more ammo of this type.
return FALSE; return FALSE;
@ -1370,27 +1370,27 @@ BOOL EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultDeploy)(char *szViewModel, ch
if (!CanDeploy()) if (!CanDeploy())
return FALSE; return FALSE;
m_pPlayer->TabulateAmmo(); m_hPlayer->TabulateAmmo();
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
m_pPlayer->pev->viewmodel = ALLOC_STRING(szViewModel); m_hPlayer->pev->viewmodel = ALLOC_STRING(szViewModel);
m_pPlayer->pev->weaponmodel = ALLOC_STRING(szWeaponModel); m_hPlayer->pev->weaponmodel = ALLOC_STRING(szWeaponModel);
#else #else
m_pPlayer->pev->viewmodel = MAKE_STRING(szViewModel); m_hPlayer->pev->viewmodel = MAKE_STRING(szViewModel);
m_pPlayer->pev->weaponmodel = MAKE_STRING(szWeaponModel); m_hPlayer->pev->weaponmodel = MAKE_STRING(szWeaponModel);
#endif #endif
model_name = m_pPlayer->pev->viewmodel; model_name = m_hPlayer->pev->viewmodel;
Q_strcpy(m_pPlayer->m_szAnimExtention, szAnimExt); Q_strcpy(m_hPlayer->m_szAnimExtention, szAnimExt);
SendWeaponAnim(iAnim, skiplocal); SendWeaponAnim(iAnim, skiplocal);
m_pPlayer->m_flNextAttack = 0.75f; m_hPlayer->m_flNextAttack = 0.75f;
m_flTimeWeaponIdle = 1.5f; m_flTimeWeaponIdle = 1.5f;
m_flLastFireTime = 0.0f; m_flLastFireTime = 0.0f;
m_flDecreaseShotsFired = gpGlobals->time; m_flDecreaseShotsFired = gpGlobals->time;
m_pPlayer->m_iFOV = DEFAULT_FOV; m_hPlayer->m_iFOV = DEFAULT_FOV;
m_pPlayer->pev->fov = DEFAULT_FOV; m_hPlayer->pev->fov = DEFAULT_FOV;
m_pPlayer->m_iLastZoom = DEFAULT_FOV; m_hPlayer->m_iLastZoom = DEFAULT_FOV;
m_pPlayer->m_bResumeZoom = false; m_hPlayer->m_bResumeZoom = false;
return TRUE; return TRUE;
} }
@ -1403,10 +1403,10 @@ void CBasePlayerWeapon::ReloadSound()
if (pPlayer->IsDormant()) if (pPlayer->IsDormant())
break; break;
if (pPlayer == m_pPlayer) if (pPlayer == m_hPlayer)
continue; continue;
float distance = (m_pPlayer->pev->origin - pPlayer->pev->origin).Length(); float distance = (m_hPlayer->pev->origin - pPlayer->pev->origin).Length();
if (distance <= MAX_DIST_RELOAD_SOUND) if (distance <= MAX_DIST_RELOAD_SOUND)
{ {
MESSAGE_BEGIN(MSG_ONE, gmsgReloadSound, nullptr, pPlayer->pev); MESSAGE_BEGIN(MSG_ONE, gmsgReloadSound, nullptr, pPlayer->pev);
@ -1424,16 +1424,16 @@ LINK_HOOK_CLASS_CHAIN(int, CBasePlayerWeapon, DefaultReload, (int iClipSize, int
int EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultReload)(int iClipSize, int iAnim, float fDelay) int EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultReload)(int iClipSize, int iAnim, float fDelay)
{ {
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
return FALSE; return FALSE;
int j = Q_min(iClipSize - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]); int j = Q_min(iClipSize - m_iClip, m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
if (!j) if (!j)
{ {
return FALSE; return FALSE;
} }
m_pPlayer->m_flNextAttack = fDelay; m_hPlayer->m_flNextAttack = fDelay;
ReloadSound(); ReloadSound();
SendWeaponAnim(iAnim, UseDecrement() ? 1 : 0); SendWeaponAnim(iAnim, UseDecrement() ? 1 : 0);
@ -1448,7 +1448,7 @@ LINK_HOOK_CLASS_CHAIN(bool, CBasePlayerWeapon, DefaultShotgunReload, (int iAnim,
bool EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultShotgunReload)(int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1, const char *pszReloadSound2) bool EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultShotgunReload)(int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1, const char *pszReloadSound2)
{ {
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == iMaxClip()) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == iMaxClip())
return false; return false;
// don't reload until recoil is done // don't reload until recoil is done
@ -1458,11 +1458,11 @@ bool EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultShotgunReload)(int iAnim, int
// check to see if we're ready to reload // check to see if we're ready to reload
if (m_fInSpecialReload == 0) if (m_fInSpecialReload == 0)
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
SendWeaponAnim(iStartAnim, UseDecrement() != FALSE); SendWeaponAnim(iStartAnim, UseDecrement() != FALSE);
m_fInSpecialReload = 1; m_fInSpecialReload = 1;
m_flNextSecondaryAttack = m_flTimeWeaponIdle = m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + fStartDelay; m_flNextSecondaryAttack = m_flTimeWeaponIdle = m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + fStartDelay;
m_flNextPrimaryAttack = GetNextAttackDelay(fStartDelay); m_flNextPrimaryAttack = GetNextAttackDelay(fStartDelay);
} }
else if (m_fInSpecialReload == 1) else if (m_fInSpecialReload == 1)
@ -1480,7 +1480,7 @@ bool EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultShotgunReload)(int iAnim, int
if (pszReloadSound && pszReloadSound[0] != '\0') if (pszReloadSound && pszReloadSound[0] != '\0')
{ {
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_ITEM, pszReloadSound, VOL_NORM, ATTN_NORM, 0, 85 + RANDOM_LONG(0, 31)); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_ITEM, pszReloadSound, VOL_NORM, ATTN_NORM, 0, 85 + RANDOM_LONG(0, 31));
} }
SendWeaponAnim(iAnim, UseDecrement()); SendWeaponAnim(iAnim, UseDecrement());
@ -1498,8 +1498,8 @@ bool EXT_FUNC CBasePlayerWeapon::__API_HOOK(DefaultShotgunReload)(int iAnim, int
if (refill_bpammo_weapons.value < 3.0f) if (refill_bpammo_weapons.value < 3.0f)
#endif #endif
{ {
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--; m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
m_pPlayer->ammo_buckshot--; m_hPlayer->ammo_buckshot--;
} }
m_fInSpecialReload = 1; m_fInSpecialReload = 1;
@ -1520,10 +1520,10 @@ BOOL CBasePlayerWeapon::PlayEmptySound()
case WEAPON_DEAGLE: case WEAPON_DEAGLE:
case WEAPON_ELITE: case WEAPON_ELITE:
case WEAPON_FIVESEVEN: case WEAPON_FIVESEVEN:
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/dryfire_pistol.wav", 0.8, ATTN_NORM); EMIT_SOUND(ENT(m_hPlayer->pev), CHAN_WEAPON, "weapons/dryfire_pistol.wav", 0.8, ATTN_NORM);
break; break;
default: default:
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/dryfire_rifle.wav", 0.8, ATTN_NORM); EMIT_SOUND(ENT(m_hPlayer->pev), CHAN_WEAPON, "weapons/dryfire_rifle.wav", 0.8, ATTN_NORM);
break; break;
} }
} }
@ -1550,8 +1550,8 @@ void CBasePlayerWeapon::Holster(int skiplocal)
{ {
// cancel any reload in progress. // cancel any reload in progress.
m_fInReload = FALSE; m_fInReload = FALSE;
m_pPlayer->pev->viewmodel = 0; m_hPlayer->pev->viewmodel = 0;
m_pPlayer->pev->weaponmodel = 0; m_hPlayer->pev->weaponmodel = 0;
} }
// called by the new item with the existing item as parameter // called by the new item with the existing item as parameter
@ -1593,17 +1593,17 @@ int CBasePlayerWeapon::ExtractClipAmmo(CBasePlayerWeapon *pWeapon)
iAmmo = m_iClip; iAmmo = m_iClip;
} }
return pWeapon->m_pPlayer->GiveAmmo(iAmmo, pszAmmo1(), iMaxAmmo1()); return pWeapon->m_hPlayer->GiveAmmo(iAmmo, pszAmmo1(), iMaxAmmo1());
} }
// RetireWeapon - no more ammo for this gun, put it away. // RetireWeapon - no more ammo for this gun, put it away.
void CBasePlayerWeapon::RetireWeapon() void CBasePlayerWeapon::RetireWeapon()
{ {
// first, no viewmodel at all. // first, no viewmodel at all.
m_pPlayer->pev->viewmodel = iStringNull; m_hPlayer->pev->viewmodel = iStringNull;
m_pPlayer->pev->weaponmodel = iStringNull; m_hPlayer->pev->weaponmodel = iStringNull;
g_pGameRules->GetNextBestWeapon(m_pPlayer, this); g_pGameRules->GetNextBestWeapon(m_hPlayer, this);
} }
// GetNextAttackDelay - An accurate way of calcualting the next attack time. // GetNextAttackDelay - An accurate way of calcualting the next attack time.
@ -1657,14 +1657,14 @@ void CBasePlayerWeapon::InstantReload(bool bCanRefillBPAmmo)
//if (m_fInReload) //if (m_fInReload)
// return; // return;
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
return; return;
m_fInReload = FALSE; m_fInReload = FALSE;
m_pPlayer->m_flNextAttack = 0; m_hPlayer->m_flNextAttack = 0;
// complete the reload. // complete the reload.
int j = Q_min(iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]); int j = Q_min(iMaxClip() - m_iClip, m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
if (j == 0) if (j == 0)
return; return;
@ -1672,10 +1672,10 @@ void CBasePlayerWeapon::InstantReload(bool bCanRefillBPAmmo)
m_iClip += j; m_iClip += j;
if (!bCanRefillBPAmmo) { if (!bCanRefillBPAmmo) {
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j; m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] -= j;
} }
m_pPlayer->TabulateAmmo(); m_hPlayer->TabulateAmmo();
} }
TYPEDESCRIPTION CWeaponBox::m_SaveData[] = TYPEDESCRIPTION CWeaponBox::m_SaveData[] =
@ -1770,7 +1770,7 @@ void CWeaponBox::Kill()
{ {
pWeapon->SetThink(&CBaseEntity::SUB_Remove); pWeapon->SetThink(&CBaseEntity::SUB_Remove);
pWeapon->pev->nextthink = gpGlobals->time + 0.1f; pWeapon->pev->nextthink = gpGlobals->time + 0.1f;
pWeapon = pWeapon->m_pNext; pWeapon = pWeapon->m_hNext;
} }
} }
@ -1906,7 +1906,7 @@ void CWeaponBox::Touch(CBaseEntity *pOther)
} }
} }
if (i >= PRIMARY_WEAPON_SLOT && i <= PISTOL_SLOT && pPlayer->m_rgpPlayerItems[i]) if (i >= PRIMARY_WEAPON_SLOT && i <= PISTOL_SLOT && pPlayer->m_rghPlayerItems[i])
{ {
// ... // ...
} }
@ -1921,7 +1921,7 @@ void CWeaponBox::Touch(CBaseEntity *pOther)
auto info = GetWeaponInfo(pGrenade->m_iId); auto info = GetWeaponInfo(pGrenade->m_iId);
if (info && playerGrenades < info->maxRounds) if (info && playerGrenades < info->maxRounds)
{ {
auto pNext = m_rgpPlayerItems[i]->m_pNext; auto pNext = m_rgpPlayerItems[i]->m_hNext.GetPtr();
if (pPlayer->AddPlayerItem(pItem)) if (pPlayer->AddPlayerItem(pItem))
{ {
pItem->AttachToPlayer(pPlayer); pItem->AttachToPlayer(pPlayer);
@ -1965,7 +1965,7 @@ void CWeaponBox::Touch(CBaseEntity *pOther)
pPlayer->GiveNamedItem(grenadeName); pPlayer->GiveNamedItem(grenadeName);
// unlink this weapon from the box // unlink this weapon from the box
pItem = m_rgpPlayerItems[i]->m_pNext; pItem = m_rgpPlayerItems[i]->m_hNext.GetPtr();
m_rgpPlayerItems[i] = pItem; m_rgpPlayerItems[i] = pItem;
continue; continue;
} }
@ -1979,7 +1979,7 @@ void CWeaponBox::Touch(CBaseEntity *pOther)
} }
else else
{ {
auto pNext = m_rgpPlayerItems[i]->m_pNext; auto pNext = m_rgpPlayerItems[i]->m_hNext.GetPtr();
if (pPlayer->AddPlayerItem(pItem)) if (pPlayer->AddPlayerItem(pItem))
{ {
pItem->AttachToPlayer(pPlayer); pItem->AttachToPlayer(pPlayer);
@ -1992,7 +1992,7 @@ void CWeaponBox::Touch(CBaseEntity *pOther)
} }
bRemove = false; bRemove = false;
pItem = m_rgpPlayerItems[i]->m_pNext; pItem = m_rgpPlayerItems[i]->m_hNext.GetPtr();
} }
} }
@ -2035,14 +2035,14 @@ BOOL CWeaponBox::PackWeapon(CBasePlayerItem *pWeapon)
return FALSE; return FALSE;
} }
if (pWeapon->m_pPlayer) if (pWeapon->m_hPlayer)
{ {
if (pWeapon->m_pPlayer->m_pActiveItem == pWeapon) if (pWeapon->m_hPlayer->m_hActiveItem == pWeapon)
{ {
pWeapon->Holster(); pWeapon->Holster();
} }
if (!pWeapon->m_pPlayer->RemovePlayerItem(pWeapon)) if (!pWeapon->m_hPlayer->RemovePlayerItem(pWeapon))
{ {
// failed to unhook the weapon from the player! // failed to unhook the weapon from the player!
return FALSE; return FALSE;
@ -2053,14 +2053,14 @@ BOOL CWeaponBox::PackWeapon(CBasePlayerItem *pWeapon)
if (m_rgpPlayerItems[iWeaponSlot]) if (m_rgpPlayerItems[iWeaponSlot])
{ {
// there's already one weapon in this slot, so link this into the slot's column // there's already one weapon in this slot, so link this into the slot's column
pWeapon->m_pNext = m_rgpPlayerItems[iWeaponSlot]; pWeapon->m_hNext = pWeapon->m_pNext = m_rgpPlayerItems[iWeaponSlot];
m_rgpPlayerItems[iWeaponSlot] = pWeapon; m_rgpPlayerItems[iWeaponSlot] = pWeapon;
} }
else else
{ {
// first weapon we have for this slot // first weapon we have for this slot
m_rgpPlayerItems[iWeaponSlot] = pWeapon; m_rgpPlayerItems[iWeaponSlot] = pWeapon;
pWeapon->m_pNext = nullptr; pWeapon->m_hNext = pWeapon->m_pNext = nullptr;
} }
// never respawn // never respawn
@ -2073,7 +2073,7 @@ BOOL CWeaponBox::PackWeapon(CBasePlayerItem *pWeapon)
pWeapon->pev->owner = ENT(pev); pWeapon->pev->owner = ENT(pev);
pWeapon->SetThink(nullptr); pWeapon->SetThink(nullptr);
pWeapon->SetTouch(nullptr); pWeapon->SetTouch(nullptr);
pWeapon->m_pPlayer = nullptr; pWeapon->m_hPlayer = pWeapon->m_pPlayer = nullptr;
return TRUE; return TRUE;
} }
@ -2143,7 +2143,7 @@ BOOL CWeaponBox::HasWeapon(CBasePlayerItem *pCheckItem)
return TRUE; return TRUE;
} }
pItem = pItem->m_pNext; pItem = pItem->m_hNext.GetPtr();
} }
return FALSE; return FALSE;
@ -2436,7 +2436,7 @@ void CArmoury::ArmouryTouch(CBaseEntity *pOther)
// secondary weapons (pistols) // secondary weapons (pistols)
else if (m_iCount > 0 && m_iItem >= ARMOURY_GLOCK18) else if (m_iCount > 0 && m_iItem >= ARMOURY_GLOCK18)
{ {
if (pToucher->m_rgpPlayerItems[PISTOL_SLOT]) if (pToucher->m_rghPlayerItems[PISTOL_SLOT])
return; return;
if (pToucher->HasShield() && m_iItem == ARMOURY_ELITE) if (pToucher->HasShield() && m_iItem == ARMOURY_ELITE)
@ -2515,7 +2515,7 @@ void CArmoury::ArmouryTouch(CBaseEntity *pOther)
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
case ARMOURY_SHIELD: case ARMOURY_SHIELD:
{ {
if (pToucher->m_bHasPrimary || (pToucher->m_rgpPlayerItems[PISTOL_SLOT] && pToucher->GetItemById(WEAPON_ELITE))) if (pToucher->m_bHasPrimary || (pToucher->m_rghPlayerItems[PISTOL_SLOT] && pToucher->GetItemById(WEAPON_ELITE)))
return; return;
pToucher->GiveNamedItemEx("weapon_shield"); pToucher->GiveNamedItemEx("weapon_shield");

View File

@ -324,9 +324,19 @@ public:
static ItemInfo m_ItemInfoArray[MAX_WEAPONS]; static ItemInfo m_ItemInfoArray[MAX_WEAPONS];
static AmmoInfo m_AmmoInfoArray[MAX_AMMO_SLOTS]; static AmmoInfo m_AmmoInfoArray[MAX_AMMO_SLOTS];
////
// DEPRECATED: Use safe pointers instead it
////
CBasePlayer *m_pPlayer; CBasePlayer *m_pPlayer;
CBasePlayerItem *m_pNext; CBasePlayerItem *m_pNext;
////
// DEPRECATED: Use safe pointers instead it
////
int m_iId; // WEAPON_??? int m_iId; // WEAPON_???
EntityHandle<CBasePlayer> m_hPlayer;
EntityHandle<CBasePlayerItem> m_hNext;
}; };
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API

View File

@ -72,11 +72,11 @@ void CAK47::SecondaryAttack()
void CAK47::PrimaryAttack() void CAK47::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
AK47Fire(0.04 + (0.4 * m_flAccuracy), 0.0955, FALSE); AK47Fire(0.04 + (0.4 * m_flAccuracy), 0.0955, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
AK47Fire(0.04 + (0.07 * m_flAccuracy), 0.0955, FALSE); AK47Fire(0.04 + (0.07 * m_flAccuracy), 0.0955, FALSE);
} }
@ -109,19 +109,19 @@ void CAK47::AK47Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -129,8 +129,8 @@ void CAK47::AK47Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = AK47_DAMAGE; float flBaseDamage = AK47_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_762MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_762MM,
flBaseDamage, AK47_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, AK47_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -138,30 +138,30 @@ void CAK47::AK47Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAK47, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireAK47, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9f;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.5, 0.45, 0.225, 0.05, 6.5, 2.5, 7); KickBack(1.5, 0.45, 0.225, 0.05, 6.5, 2.5, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(2.0, 1.0, 0.5, 0.35, 9.0, 6.0, 5); KickBack(2.0, 1.0, 0.5, 0.35, 9.0, 6.0, 5);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.9, 0.35, 0.15, 0.025, 5.5, 1.5, 9); KickBack(0.9, 0.35, 0.15, 0.025, 5.5, 1.5, 9);
} }
@ -175,13 +175,13 @@ void CAK47::Reload()
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo // to prevent reload if not enough ammo
if (m_pPlayer->ammo_762nato <= 0) if (m_hPlayer->ammo_762nato <= 0)
return; return;
#endif #endif
if (DefaultReload(iMaxClip(), AK47_RELOAD, AK47_RELOAD_TIME)) if (DefaultReload(iMaxClip(), AK47_RELOAD, AK47_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -192,7 +192,7 @@ void CAK47::Reload()
void CAK47::WeaponIdle() void CAK47::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {

View File

@ -68,25 +68,25 @@ BOOL CAUG::Deploy()
void CAUG::SecondaryAttack() void CAUG::SecondaryAttack()
{ {
if (m_pPlayer->m_iFOV == DEFAULT_FOV) if (m_hPlayer->m_iFOV == DEFAULT_FOV)
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 55; m_hPlayer->pev->fov = m_hPlayer->m_iFOV = 55;
else else
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 90; m_hPlayer->pev->fov = m_hPlayer->m_iFOV = 90;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f;
} }
void CAUG::PrimaryAttack() void CAUG::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
AUGFire(0.035 + (0.4 * m_flAccuracy), 0.0825, FALSE); AUGFire(0.035 + (0.4 * m_flAccuracy), 0.0825, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
AUGFire(0.035 + (0.07 * m_flAccuracy), 0.0825, FALSE); AUGFire(0.035 + (0.07 * m_flAccuracy), 0.0825, FALSE);
} }
else if (m_pPlayer->pev->fov == DEFAULT_FOV) else if (m_hPlayer->pev->fov == DEFAULT_FOV)
{ {
AUGFire(0.02 * m_flAccuracy, 0.0825, FALSE); AUGFire(0.02 * m_flAccuracy, 0.0825, FALSE);
} }
@ -119,22 +119,22 @@ void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -142,8 +142,8 @@ void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = AUG_DAMAGE; float flBaseDamage = AUG_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, AUG_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, AUG_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -151,27 +151,27 @@ void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAug, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireAug, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9f;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7); KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5); KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8); KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
} }
@ -183,14 +183,14 @@ void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CAUG::Reload() void CAUG::Reload()
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_hPlayer->ammo_556nato <= 0)
return; return;
if (DefaultReload(iMaxClip(), AUG_RELOAD, AUG_RELOAD_TIME)) if (DefaultReload(iMaxClip(), AUG_RELOAD, AUG_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV) if (m_hPlayer->m_iFOV != DEFAULT_FOV)
{ {
SecondaryAttack(); SecondaryAttack();
} }
@ -204,7 +204,7 @@ void CAUG::Reload()
void CAUG::WeaponIdle() void CAUG::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -62,8 +62,8 @@ BOOL CAWP::Deploy()
{ {
if (DefaultDeploy("models/v_awp.mdl", "models/p_awp.mdl", AWP_DRAW, "rifle", UseDecrement() != FALSE)) if (DefaultDeploy("models/v_awp.mdl", "models/p_awp.mdl", AWP_DRAW, "rifle", UseDecrement() != FALSE))
{ {
m_pPlayer->m_flNextAttack = GetNextAttackDelay(1.45); m_hPlayer->m_flNextAttack = GetNextAttackDelay(1.45);
m_flNextPrimaryAttack = m_pPlayer->m_flNextAttack; m_flNextPrimaryAttack = m_hPlayer->m_flNextAttack;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0f;
return TRUE; return TRUE;
@ -74,39 +74,39 @@ BOOL CAWP::Deploy()
void CAWP::SecondaryAttack() void CAWP::SecondaryAttack()
{ {
switch (m_pPlayer->m_iFOV) switch (m_hPlayer->m_iFOV)
{ {
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break; case 90: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 10; break; case 40: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 10; break;
default: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break; default: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 90; break;
} }
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_hPlayer);
} }
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4); EMIT_SOUND(m_hPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
} }
void CAWP::PrimaryAttack() void CAWP::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
AWPFire(0.85, 1.45, FALSE); AWPFire(0.85, 1.45, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
AWPFire(0.25, 1.45, FALSE); AWPFire(0.25, 1.45, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 10) else if (m_hPlayer->pev->velocity.Length2D() > 10)
{ {
AWPFire(0.1, 1.45, FALSE); AWPFire(0.1, 1.45, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
AWPFire(0.0, 1.45, FALSE); AWPFire(0.0, 1.45, FALSE);
} }
@ -121,14 +121,14 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
Vector vecAiming, vecSrc, vecDir; Vector vecAiming, vecSrc, vecDir;
int flag; int flag;
if (m_pPlayer->pev->fov != DEFAULT_FOV) if (m_hPlayer->pev->fov != DEFAULT_FOV)
{ {
m_pPlayer->m_bResumeZoom = true; m_hPlayer->m_bResumeZoom = true;
m_pPlayer->m_iLastZoom = m_pPlayer->m_iFOV; m_hPlayer->m_iLastZoom = m_hPlayer->m_iFOV;
// reset a fov // reset a fov
m_pPlayer->m_iFOV = DEFAULT_FOV; m_hPlayer->m_iFOV = DEFAULT_FOV;
m_pPlayer->pev->fov = DEFAULT_FOV; m_hPlayer->pev->fov = DEFAULT_FOV;
} }
// If we are not zoomed in, the bullet diverts more. // If we are not zoomed in, the bullet diverts more.
else else
@ -146,23 +146,23 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_flEjectBrass = gpGlobals->time + 0.55f; m_hPlayer->m_flEjectBrass = gpGlobals->time + 0.55f;
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_hPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -170,7 +170,7 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = AWP_DAMAGE; float flBaseDamage = AWP_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 3, BULLET_PLAYER_338MAG, flBaseDamage, AWP_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 3, BULLET_PLAYER_338MAG, flBaseDamage, AWP_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -178,33 +178,33 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAWP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireAWP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.x * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.x * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
m_pPlayer->pev->punchangle.x -= 2.0f; m_hPlayer->pev->punchangle.x -= 2.0f;
} }
void CAWP::Reload() void CAWP::Reload()
{ {
if (m_pPlayer->ammo_338mag <= 0) if (m_hPlayer->ammo_338mag <= 0)
return; return;
if (DefaultReload(iMaxClip(), AWP_RELOAD, AWP_RELOAD_TIME)) if (DefaultReload(iMaxClip(), AWP_RELOAD, AWP_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->pev->fov != DEFAULT_FOV) if (m_hPlayer->pev->fov != DEFAULT_FOV)
{ {
m_pPlayer->m_iFOV = 10; m_hPlayer->m_iFOV = 10;
m_pPlayer->pev->fov = 10; m_hPlayer->pev->fov = 10;
SecondaryAttack(); SecondaryAttack();
} }
@ -214,7 +214,7 @@ void CAWP::Reload()
void CAWP::WeaponIdle() void CAWP::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase() && m_iClip) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase() && m_iClip)
{ {
@ -225,7 +225,7 @@ void CAWP::WeaponIdle()
float CAWP::GetMaxSpeed() float CAWP::GetMaxSpeed()
{ {
if (m_pPlayer->m_iFOV == DEFAULT_FOV) if (m_hPlayer->m_iFOV == DEFAULT_FOV)
return AWP_MAX_SPEED; return AWP_MAX_SPEED;
// Slower speed when zoomed in. // Slower speed when zoomed in.

View File

@ -64,10 +64,10 @@ BOOL CC4::Deploy()
m_bStartedArming = false; m_bStartedArming = false;
m_fArmedTime = 0; m_fArmedTime = 0;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_bHasShield = true; m_bHasShield = true;
m_pPlayer->pev->gamestate = HITGROUP_SHIELD_DISABLED; m_hPlayer->pev->gamestate = HITGROUP_SHIELD_DISABLED;
} }
return DefaultDeploy("models/v_c4.mdl", "models/p_c4.mdl", C4_DRAW, "c4", UseDecrement() != FALSE); return DefaultDeploy("models/v_c4.mdl", "models/p_c4.mdl", C4_DRAW, "c4", UseDecrement() != FALSE);
@ -75,22 +75,22 @@ BOOL CC4::Deploy()
void CC4::Holster(int skiplocal) void CC4::Holster(int skiplocal)
{ {
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
if(m_bStartedArming) if(m_bStartedArming)
{ {
m_pPlayer->SetProgressBarTime(0); m_hPlayer->SetProgressBarTime(0);
} }
#endif #endif
m_bStartedArming = false; // stop arming sequence m_bStartedArming = false; // stop arming sequence
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (!m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
// Moved to DestroyItem() // Moved to DestroyItem()
m_pPlayer->pev->weapons &= ~(1 << WEAPON_C4); m_hPlayer->pev->weapons &= ~(1 << WEAPON_C4);
#endif #endif
DestroyItem(); DestroyItem();
@ -98,25 +98,25 @@ void CC4::Holster(int skiplocal)
if (m_bHasShield) if (m_bHasShield)
{ {
m_pPlayer->pev->gamestate = HITGROUP_SHIELD_ENABLED; m_hPlayer->pev->gamestate = HITGROUP_SHIELD_ENABLED;
m_bHasShield = false; m_bHasShield = false;
} }
} }
void CC4::PrimaryAttack() void CC4::PrimaryAttack()
{ {
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
return; return;
int inBombZone = (m_pPlayer->m_signals.GetState() & SIGNAL_BOMB) == SIGNAL_BOMB; int inBombZone = (m_hPlayer->m_signals.GetState() & SIGNAL_BOMB) == SIGNAL_BOMB;
int onGround = (m_pPlayer->pev->flags & FL_ONGROUND) == FL_ONGROUND; int onGround = (m_hPlayer->pev->flags & FL_ONGROUND) == FL_ONGROUND;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
if (!onGround) if (!onGround)
{ {
TraceResult tr; TraceResult tr;
UTIL_TraceLine(m_pPlayer->pev->origin, m_pPlayer->pev->origin + Vector(0, 0, -8192), ignore_monsters, m_pPlayer->edict(), &tr); UTIL_TraceLine(m_hPlayer->pev->origin, m_hPlayer->pev->origin + Vector(0, 0, -8192), ignore_monsters, m_hPlayer->edict(), &tr);
onGround = (tr.flFraction != 1.0 && m_pPlayer->pev->velocity.z == 0.0f); onGround = (tr.flFraction != 1.0 && m_hPlayer->pev->velocity.z == 0.0f);
} }
#endif #endif
@ -126,14 +126,14 @@ void CC4::PrimaryAttack()
{ {
if (!inBombZone) if (!inBombZone)
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_At_Bomb_Spot"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_At_Bomb_Spot");
m_flNextPrimaryAttack = GetNextAttackDelay(1.0); m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
return; return;
} }
if (!onGround) if (!onGround)
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground");
m_flNextPrimaryAttack = GetNextAttackDelay(1.0); m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
return; return;
} }
@ -147,13 +147,13 @@ void CC4::PrimaryAttack()
// freeze the player in place while planting // freeze the player in place while planting
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
#else #else
SET_CLIENT_MAXSPEED(m_pPlayer->edict(), 1.0); SET_CLIENT_MAXSPEED(m_hPlayer->edict(), 1.0);
#endif #endif
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_pPlayer->SetProgressBarTime(C4_ARMING_ON_TIME); m_hPlayer->SetProgressBarTime(C4_ARMING_ON_TIME);
} }
else else
{ {
@ -168,7 +168,7 @@ void CC4::PrimaryAttack()
m_fArmedTime = 0; m_fArmedTime = 0;
Broadcast("BOMBPL"); Broadcast("BOMBPL");
m_pPlayer->m_bHasC4 = false; m_hPlayer->m_bHasC4 = false;
if (pev->speed != 0 && CSGameRules()) if (pev->speed != 0 && CSGameRules())
{ {
@ -176,16 +176,16 @@ void CC4::PrimaryAttack()
} }
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
Vector vBombAngles = Vector(0, m_pPlayer->pev->angles[1] - 90.0, 0); Vector vBombAngles = Vector(0, m_hPlayer->pev->angles[1] - 90.0, 0);
#else #else
Vector vBombAngles = Vector(0, 0, 0); Vector vBombAngles = Vector(0, 0, 0);
#endif #endif
CGrenade *pBomb = CGrenade::ShootSatchelCharge(m_pPlayer->pev, m_pPlayer->pev->origin, vBombAngles); CGrenade *pBomb = CGrenade::ShootSatchelCharge(m_hPlayer->pev, m_hPlayer->pev->origin, vBombAngles);
MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR); MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR);
WRITE_BYTE(9); WRITE_BYTE(9);
WRITE_BYTE(DRC_CMD_EVENT); WRITE_BYTE(DRC_CMD_EVENT);
WRITE_SHORT(m_pPlayer->entindex()); WRITE_SHORT(m_hPlayer->entindex());
WRITE_SHORT(0); WRITE_SHORT(0);
WRITE_LONG(DRC_FLAG_FACEPLAYER | 11); WRITE_LONG(DRC_FLAG_FACEPLAYER | 11);
MESSAGE_END(); MESSAGE_END();
@ -200,18 +200,18 @@ void CC4::PrimaryAttack()
UTIL_ClientPrintAll(HUD_PRINTCENTER, "#Bomb_Planted"); UTIL_ClientPrintAll(HUD_PRINTCENTER, "#Bomb_Planted");
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_BOMB_PLANTED, m_pPlayer, pBomb); TheBots->OnEvent(EVENT_BOMB_PLANTED, m_hPlayer, pBomb);
} }
if (TheCareerTasks && CSGameRules()->IsCareer() && !m_pPlayer->IsBot()) if (TheCareerTasks && CSGameRules()->IsCareer() && !m_hPlayer->IsBot())
{ {
TheCareerTasks->HandleEvent(EVENT_BOMB_PLANTED, m_pPlayer); TheCareerTasks->HandleEvent(EVENT_BOMB_PLANTED, m_hPlayer);
} }
UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Planted_The_Bomb\"\n", UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Planted_The_Bomb\"\n",
STRING(m_pPlayer->pev->netname), STRING(m_hPlayer->pev->netname),
GETPLAYERUSERID(m_pPlayer->edict()), GETPLAYERUSERID(m_hPlayer->edict()),
GETPLAYERAUTHID(m_pPlayer->edict())); GETPLAYERAUTHID(m_hPlayer->edict()));
g_pGameRules->m_bBombDropped = FALSE; g_pGameRules->m_bBombDropped = FALSE;
@ -219,15 +219,15 @@ void CC4::PrimaryAttack()
EMIT_SOUND(edict(), CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM); EMIT_SOUND(edict(), CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM);
// hide the backpack in Terrorist's models. // hide the backpack in Terrorist's models.
m_pPlayer->pev->body = 0; m_hPlayer->pev->body = 0;
// release the player from being frozen // release the player from being frozen
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
// No more c4! // No more c4!
m_pPlayer->SetBombIcon(FALSE); m_hPlayer->SetBombIcon(FALSE);
if (--m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (--m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
RetireWeapon(); RetireWeapon();
return; return;
@ -242,24 +242,24 @@ void CC4::PrimaryAttack()
SendWeaponAnim(C4_DROP, UseDecrement() != FALSE); SendWeaponAnim(C4_DROP, UseDecrement() != FALSE);
// player "place" animation // player "place" animation
m_pPlayer->SetAnimation(PLAYER_HOLDBOMB); m_hPlayer->SetAnimation(PLAYER_HOLDBOMB);
} }
} }
} }
else else
{ {
if (inBombZone) if (inBombZone)
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground");
else else
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Arming_Cancelled"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#C4_Arming_Cancelled");
m_bStartedArming = false; m_bStartedArming = false;
m_flNextPrimaryAttack = GetNextAttackDelay(1.5); m_flNextPrimaryAttack = GetNextAttackDelay(1.5);
// release the player from being frozen, we've somehow left the bomb zone // release the player from being frozen, we've somehow left the bomb zone
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_pPlayer->SetProgressBarTime(0); m_hPlayer->SetProgressBarTime(0);
m_pPlayer->SetAnimation(PLAYER_HOLDBOMB); m_hPlayer->SetAnimation(PLAYER_HOLDBOMB);
// this means the placement animation is canceled // this means the placement animation is canceled
if (m_bBombPlacedAnimation) if (m_bBombPlacedAnimation)
@ -283,10 +283,10 @@ void CC4::WeaponIdle()
m_bStartedArming = false; m_bStartedArming = false;
// release the player from being frozen // release the player from being frozen
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_flNextPrimaryAttack = GetNextAttackDelay(1.0); m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
m_pPlayer->SetProgressBarTime(0); m_hPlayer->SetProgressBarTime(0);
// this means the placement animation is canceled // this means the placement animation is canceled
if (m_bBombPlacedAnimation) if (m_bBombPlacedAnimation)
@ -297,7 +297,7 @@ void CC4::WeaponIdle()
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
RetireWeapon(); RetireWeapon();
return; return;
@ -338,7 +338,7 @@ void CC4::KeyValue(KeyValueData *pkvd)
void CC4::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value) void CC4::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
{ {
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
if (m_pPlayer) if (m_hPlayer)
return; return;
CBasePlayer *pPlayer = UTIL_PlayerByIndex(1); CBasePlayer *pPlayer = UTIL_PlayerByIndex(1);

View File

@ -63,9 +63,9 @@ BOOL CDEAGLE::Deploy()
m_flAccuracy = 0.9f; m_flAccuracy = 0.9f;
m_fMaxSpeed = DEAGLE_MAX_SPEED; m_fMaxSpeed = DEAGLE_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_deagle.mdl", "models/shield/p_shield_deagle.mdl", DEAGLE_DRAW, "shieldgun", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_deagle.mdl", "models/shield/p_shield_deagle.mdl", DEAGLE_DRAW, "shieldgun", UseDecrement() != FALSE);
else else
return DefaultDeploy("models/v_deagle.mdl", "models/p_deagle.mdl", DEAGLE_DRAW, "onehanded", UseDecrement() != FALSE); return DefaultDeploy("models/v_deagle.mdl", "models/p_deagle.mdl", DEAGLE_DRAW, "onehanded", UseDecrement() != FALSE);
@ -73,15 +73,15 @@ BOOL CDEAGLE::Deploy()
void CDEAGLE::PrimaryAttack() void CDEAGLE::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
DEAGLEFire(1.5 * (1 - m_flAccuracy), 0.3, FALSE); DEAGLEFire(1.5 * (1 - m_flAccuracy), 0.3, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
DEAGLEFire(0.25 * (1 - m_flAccuracy), 0.3, FALSE); DEAGLEFire(0.25 * (1 - m_flAccuracy), 0.3, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
DEAGLEFire(0.115 * (1 - m_flAccuracy), 0.3, FALSE); DEAGLEFire(0.115 * (1 - m_flAccuracy), 0.3, FALSE);
} }
@ -134,23 +134,23 @@ void CDEAGLE::DEAGLEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
SetPlayerShieldAnim(); SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_hPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -158,7 +158,7 @@ void CDEAGLE::DEAGLEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
#else #else
float flBaseDamage = DEAGLE_DAMAGE; float flBaseDamage = DEAGLE_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 2, BULLET_PLAYER_50AE, flBaseDamage, DEAGLE_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 2, BULLET_PLAYER_50AE, flBaseDamage, DEAGLE_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -166,29 +166,29 @@ void CDEAGLE::DEAGLEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireDeagle, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireDeagle, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f;
m_pPlayer->pev->punchangle.x -= 2; m_hPlayer->pev->punchangle.x -= 2;
ResetPlayerShieldAnim(); ResetPlayerShieldAnim();
} }
void CDEAGLE::Reload() void CDEAGLE::Reload()
{ {
if (m_pPlayer->ammo_50ae <= 0) if (m_hPlayer->ammo_50ae <= 0)
return; return;
if (DefaultReload(iMaxClip(), DEAGLE_RELOAD, DEAGLE_RELOAD_TIME)) if (DefaultReload(iMaxClip(), DEAGLE_RELOAD, DEAGLE_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.9f; m_flAccuracy = 0.9f;
} }
} }
@ -196,7 +196,7 @@ void CDEAGLE::Reload()
void CDEAGLE::WeaponIdle() void CDEAGLE::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {

View File

@ -73,15 +73,15 @@ BOOL CELITE::Deploy()
void CELITE::PrimaryAttack() void CELITE::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
ELITEFire(1.3 * (1 - m_flAccuracy), 0.2, FALSE); ELITEFire(1.3 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
ELITEFire(0.175 * (1 - m_flAccuracy), 0.2, FALSE); ELITEFire(0.175 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
ELITEFire(0.08 * (1 - m_flAccuracy), 0.2, FALSE); ELITEFire(0.08 * (1 - m_flAccuracy), 0.2, FALSE);
} }
@ -138,7 +138,7 @@ void CELITE::ELITEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
@ -147,14 +147,14 @@ void CELITE::ELITEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
m_iClip--; m_iClip--;
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
@ -171,46 +171,46 @@ void CELITE::ELITEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
if (m_iWeaponState & WPNSTATE_ELITE_LEFT) if (m_iWeaponState & WPNSTATE_ELITE_LEFT)
{ {
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_iWeaponState &= ~WPNSTATE_ELITE_LEFT; m_iWeaponState &= ~WPNSTATE_ELITE_LEFT;
vecSrc -= gpGlobals->v_right * 5; vecSrc -= gpGlobals->v_right * 5;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread,
8192, BULLET_PLAYER_9MM, 1, flBaseDamage, ELITE_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); 8192, BULLET_PLAYER_9MM, 1, flBaseDamage, ELITE_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireELITE_LEFT, 0, (float *)&g_vecZero, (float *)&g_vecZero, flTimeDiff, vecDir.x, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireELITE_LEFT, 0, (float *)&g_vecZero, (float *)&g_vecZero, flTimeDiff, vecDir.x,
int(vecDir.y * 100), m_iClip, FALSE, FALSE); int(vecDir.y * 100), m_iClip, FALSE, FALSE);
} }
else else
{ {
m_pPlayer->SetAnimation(PLAYER_ATTACK2); m_hPlayer->SetAnimation(PLAYER_ATTACK2);
m_iWeaponState |= WPNSTATE_ELITE_LEFT; m_iWeaponState |= WPNSTATE_ELITE_LEFT;
vecSrc += gpGlobals->v_right * 5; vecSrc += gpGlobals->v_right * 5;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread,
8192, BULLET_PLAYER_9MM, 1, flBaseDamage, ELITE_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); 8192, BULLET_PLAYER_9MM, 1, flBaseDamage, ELITE_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireELITE_RIGHT, 0, (float *)&g_vecZero, (float *)&g_vecZero, flTimeDiff, vecDir.x, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireELITE_RIGHT, 0, (float *)&g_vecZero, (float *)&g_vecZero, flTimeDiff, vecDir.x,
int(vecDir.y * 100), m_iClip, FALSE, FALSE); int(vecDir.y * 100), m_iClip, FALSE, FALSE);
} }
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
m_pPlayer->pev->punchangle.x -= 2.0f; m_hPlayer->pev->punchangle.x -= 2.0f;
} }
void CELITE::Reload() void CELITE::Reload()
{ {
if (m_pPlayer->ammo_9mm <= 0) if (m_hPlayer->ammo_9mm <= 0)
return; return;
if (DefaultReload(iMaxClip(), ELITE_RELOAD, ELITE_RELOAD_TIME)) if (DefaultReload(iMaxClip(), ELITE_RELOAD, ELITE_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.88f; m_flAccuracy = 0.88f;
} }
} }
@ -218,7 +218,7 @@ void CELITE::Reload()
void CELITE::WeaponIdle() void CELITE::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {

View File

@ -76,12 +76,12 @@ void CFamas::SecondaryAttack()
{ {
if (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) if (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE)
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_FullAuto"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#Switch_To_FullAuto");
m_iWeaponState &= ~WPNSTATE_FAMAS_BURST_MODE; m_iWeaponState &= ~WPNSTATE_FAMAS_BURST_MODE;
} }
else else
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire");
m_iWeaponState |= WPNSTATE_FAMAS_BURST_MODE; m_iWeaponState |= WPNSTATE_FAMAS_BURST_MODE;
} }
@ -92,11 +92,11 @@ void CFamas::PrimaryAttack()
{ {
bool bFireBurst = (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) == WPNSTATE_FAMAS_BURST_MODE; bool bFireBurst = (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) == WPNSTATE_FAMAS_BURST_MODE;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
FamasFire(0.030 + 0.3 * m_flAccuracy, 0.0825, FALSE, bFireBurst); FamasFire(0.030 + 0.3 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
FamasFire(0.030 + 0.07 * m_flAccuracy, 0.0825, FALSE, bFireBurst); FamasFire(0.030 + 0.07 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
} }
@ -139,22 +139,22 @@ void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -162,8 +162,8 @@ void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL
#else #else
float flBaseDamage = bFireBurst ? FAMAS_DAMAGE_BURST : FAMAS_DAMAGE; float flBaseDamage = bFireBurst ? FAMAS_DAMAGE_BURST : FAMAS_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, FAMAS_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, FAMAS_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -173,31 +173,31 @@ void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
// HACKHACK: client-side weapon prediction fix // HACKHACK: client-side weapon prediction fix
if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_pPlayer->pev->waterlevel == 3) if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_hPlayer->pev->waterlevel == 3)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireFamas, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireFamas, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 10000000), int(m_pPlayer->pev->punchangle.y * 10000000), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 10000000), int(m_hPlayer->pev->punchangle.y * 10000000), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.1f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.1f;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7); KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5); KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8); KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
} }
@ -216,14 +216,14 @@ void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL
void CFamas::Reload() void CFamas::Reload()
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_hPlayer->ammo_556nato <= 0)
return; return;
if (DefaultReload(iMaxClip(), FAMAS_RELOAD, FAMAS_RELOAD_TIME)) if (DefaultReload(iMaxClip(), FAMAS_RELOAD, FAMAS_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV) if (m_hPlayer->m_iFOV != DEFAULT_FOV)
{ {
SecondaryAttack(); SecondaryAttack();
} }
@ -237,7 +237,7 @@ void CFamas::Reload()
void CFamas::WeaponIdle() void CFamas::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {

View File

@ -62,9 +62,9 @@ BOOL CFiveSeven::Deploy()
m_flAccuracy = 0.92f; m_flAccuracy = 0.92f;
m_fMaxSpeed = FIVESEVEN_MAX_SPEED; m_fMaxSpeed = FIVESEVEN_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_fiveseven.mdl", "models/shield/p_shield_fiveseven.mdl", FIVESEVEN_DRAW, "shieldgun", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_fiveseven.mdl", "models/shield/p_shield_fiveseven.mdl", FIVESEVEN_DRAW, "shieldgun", UseDecrement() != FALSE);
else else
return DefaultDeploy("models/v_fiveseven.mdl", "models/p_fiveseven.mdl", FIVESEVEN_DRAW, "onehanded", UseDecrement() != FALSE); return DefaultDeploy("models/v_fiveseven.mdl", "models/p_fiveseven.mdl", FIVESEVEN_DRAW, "onehanded", UseDecrement() != FALSE);
@ -72,15 +72,15 @@ BOOL CFiveSeven::Deploy()
void CFiveSeven::PrimaryAttack() void CFiveSeven::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
FiveSevenFire(1.5 * (1 - m_flAccuracy), 0.2, FALSE); FiveSevenFire(1.5 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
FiveSevenFire(0.255 * (1 - m_flAccuracy), 0.2, FALSE); FiveSevenFire(0.255 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
FiveSevenFire(0.075 * (1 - m_flAccuracy), 0.2, FALSE); FiveSevenFire(0.075 * (1 - m_flAccuracy), 0.2, FALSE);
} }
@ -133,23 +133,23 @@ void CFiveSeven::FiveSevenFire(float flSpread, float flCycleTime, BOOL fUseSemi)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
SetPlayerShieldAnim(); SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -157,7 +157,7 @@ void CFiveSeven::FiveSevenFire(float flSpread, float flCycleTime, BOOL fUseSemi)
#else #else
float flBaseDamage = FIVESEVEN_DAMAGE; float flBaseDamage = FIVESEVEN_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_57MM, flBaseDamage, FIVESEVEN_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_57MM, flBaseDamage, FIVESEVEN_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -165,29 +165,29 @@ void CFiveSeven::FiveSevenFire(float flSpread, float flCycleTime, BOOL fUseSemi)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireFiveSeven, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireFiveSeven, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
m_pPlayer->pev->punchangle.x -= 2.0f; m_hPlayer->pev->punchangle.x -= 2.0f;
ResetPlayerShieldAnim(); ResetPlayerShieldAnim();
} }
void CFiveSeven::Reload() void CFiveSeven::Reload()
{ {
if (m_pPlayer->ammo_57mm <= 0) if (m_hPlayer->ammo_57mm <= 0)
return; return;
if (DefaultReload(iMaxClip(), FIVESEVEN_RELOAD, FIVESEVEN_RELOAD_TIME)) if (DefaultReload(iMaxClip(), FIVESEVEN_RELOAD, FIVESEVEN_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.92f; m_flAccuracy = 0.92f;
} }
} }
@ -195,14 +195,14 @@ void CFiveSeven::Reload()
void CFiveSeven::WeaponIdle() void CFiveSeven::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
return; return;
} }
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;

View File

@ -60,9 +60,9 @@ BOOL CFlashbang::Deploy()
m_fMaxSpeed = FLASHBANG_MAX_SPEED; m_fMaxSpeed = FLASHBANG_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_flashbang.mdl", "models/shield/p_shield_flashbang.mdl", FLASHBANG_DRAW, "shieldgren", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_flashbang.mdl", "models/shield/p_shield_flashbang.mdl", FLASHBANG_DRAW, "shieldgren", UseDecrement() != FALSE);
else else
return DefaultDeploy("models/v_flashbang.mdl", "models/p_flashbang.mdl", FLASHBANG_DRAW, "grenade", UseDecrement() != FALSE); return DefaultDeploy("models/v_flashbang.mdl", "models/p_flashbang.mdl", FLASHBANG_DRAW, "grenade", UseDecrement() != FALSE);
@ -70,13 +70,13 @@ BOOL CFlashbang::Deploy()
void CFlashbang::Holster(int skiplocal) void CFlashbang::Holster(int skiplocal)
{ {
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (!m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
// Moved to DestroyItem() // Moved to DestroyItem()
m_pPlayer->pev->weapons &= ~(1 << WEAPON_FLASHBANG); m_hPlayer->pev->weapons &= ~(1 << WEAPON_FLASHBANG);
#endif #endif
DestroyItem(); DestroyItem();
} }
@ -92,7 +92,7 @@ void CFlashbang::PrimaryAttack()
return; return;
} }
if (!m_flStartThrow && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0) if (!m_flStartThrow && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0)
{ {
m_flReleaseThrow = 0; m_flReleaseThrow = 0;
m_flStartThrow = gpGlobals->time; m_flStartThrow = gpGlobals->time;
@ -104,7 +104,7 @@ void CFlashbang::PrimaryAttack()
bool CFlashbang::ShieldSecondaryFire(int iUpAnim, int iDownAnim) bool CFlashbang::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{ {
if (!m_pPlayer->HasShield() || m_flStartThrow > 0) if (!m_hPlayer->HasShield() || m_flStartThrow > 0)
{ {
return false; return false;
} }
@ -114,24 +114,24 @@ bool CFlashbang::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE); SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
m_fMaxSpeed = FLASHBANG_MAX_SPEED; m_fMaxSpeed = FLASHBANG_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
} }
else else
{ {
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN; m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE); SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = FLASHBANG_MAX_SPEED_SHIELD; m_fMaxSpeed = FLASHBANG_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true; m_hPlayer->m_bShieldDrawn = true;
} }
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN); m_hPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f;
m_flNextPrimaryAttack = GetNextAttackDelay(0.4); m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
@ -147,23 +147,23 @@ void CFlashbang::SecondaryAttack()
void CFlashbang::SetPlayerShieldAnim() void CFlashbang::SetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shield");
else else
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
} }
void CFlashbang::ResetPlayerShieldAnim() void CFlashbang::ResetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
} }
} }
@ -177,9 +177,9 @@ void CFlashbang::WeaponIdle()
if (m_flStartThrow) if (m_flStartThrow)
{ {
m_pPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole"); m_hPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole");
Vector angThrow = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle; Vector angThrow = m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle;
if (angThrow.x < 0) if (angThrow.x < 0)
angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0); angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0);
@ -193,22 +193,22 @@ void CFlashbang::WeaponIdle()
UTIL_MakeVectors(angThrow); UTIL_MakeVectors(angThrow);
Vector vecSrc = m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16; Vector vecSrc = m_hPlayer->pev->origin + m_hPlayer->pev->view_ofs + gpGlobals->v_forward * 16;
Vector vecThrow = gpGlobals->v_forward * flVel + m_pPlayer->pev->velocity; Vector vecThrow = gpGlobals->v_forward * flVel + m_hPlayer->pev->velocity;
m_pPlayer->ThrowGrenade(this, vecSrc, vecThrow, 1.5); m_hPlayer->ThrowGrenade(this, vecSrc, vecThrow, 1.5);
SendWeaponAnim(FLASHBANG_THROW, UseDecrement() != FALSE); SendWeaponAnim(FLASHBANG_THROW, UseDecrement() != FALSE);
SetPlayerShieldAnim(); SetPlayerShieldAnim();
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_flStartThrow = 0; m_flStartThrow = 0;
m_flNextPrimaryAttack = GetNextAttackDelay(0.5); m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75f;
if (--m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (--m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
// just threw last grenade // just threw last grenade
// set attack times in the future, and weapon idle in the future so we can see the whole throw // set attack times in the future, and weapon idle in the future so we can see the whole throw
@ -225,12 +225,12 @@ void CFlashbang::WeaponIdle()
m_flStartThrow = 0; m_flStartThrow = 0;
RetireWeapon(); RetireWeapon();
} }
else if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) else if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
int iAnim; int iAnim;
float flRand = RANDOM_FLOAT(0, 1); float flRand = RANDOM_FLOAT(0, 1);
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;
@ -268,5 +268,5 @@ LINK_HOOK_CLASS_CHAIN3(BOOL, CBasePlayerWeapon, CFlashbang, CanDeploy)
BOOL EXT_FUNC CFlashbang::__API_HOOK(CanDeploy)() BOOL EXT_FUNC CFlashbang::__API_HOOK(CanDeploy)()
{ {
return m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0; return m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0;
} }

View File

@ -63,40 +63,40 @@ BOOL CG3SG1::Deploy()
void CG3SG1::SecondaryAttack() void CG3SG1::SecondaryAttack()
{ {
switch (m_pPlayer->m_iFOV) switch (m_hPlayer->m_iFOV)
{ {
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break; case 90: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; break; case 40: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 15; break;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
default: default:
#else #else
case 15: case 15:
#endif #endif
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break; m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 90; break;
} }
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_hPlayer);
} }
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4); EMIT_SOUND(m_hPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f;
} }
void CG3SG1::PrimaryAttack() void CG3SG1::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
G3SG1Fire(0.45, 0.25, FALSE); G3SG1Fire(0.45, 0.25, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
G3SG1Fire(0.15, 0.25, FALSE); G3SG1Fire(0.15, 0.25, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
G3SG1Fire(0.035, 0.25, FALSE); G3SG1Fire(0.035, 0.25, FALSE);
} }
@ -111,7 +111,7 @@ void CG3SG1::G3SG1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
Vector vecAiming, vecSrc, vecDir; Vector vecAiming, vecSrc, vecDir;
int flag; int flag;
if (m_pPlayer->pev->fov == DEFAULT_FOV) if (m_hPlayer->pev->fov == DEFAULT_FOV)
{ {
flSpread += 0.025f; flSpread += 0.025f;
} }
@ -142,22 +142,22 @@ void CG3SG1::G3SG1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_hPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -165,7 +165,7 @@ void CG3SG1::G3SG1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = G3SG1_DAMAGE; float flBaseDamage = G3SG1_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, (1 - m_flAccuracy) * flSpread, 8192, 3, BULLET_PLAYER_762MM, flBaseDamage, G3SG1_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, (1 - m_flAccuracy) * flSpread, 8192, 3, BULLET_PLAYER_762MM, flBaseDamage, G3SG1_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -173,35 +173,35 @@ void CG3SG1::G3SG1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireG3SG1, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireG3SG1, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.x * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.x * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f;
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_pPlayer->random_seed + 4, 0.75, 1.75) + m_pPlayer->pev->punchangle.x * 0.25f; m_hPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_hPlayer->random_seed + 4, 0.75, 1.75) + m_hPlayer->pev->punchangle.x * 0.25f;
m_pPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_pPlayer->random_seed + 5, -0.75, 0.75); m_hPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_hPlayer->random_seed + 5, -0.75, 0.75);
} }
void CG3SG1::Reload() void CG3SG1::Reload()
{ {
if (m_pPlayer->ammo_762nato <= 0) if (m_hPlayer->ammo_762nato <= 0)
return; return;
if (DefaultReload(iMaxClip(), G3SG1_RELOAD, G3SG1_RELOAD_TIME)) if (DefaultReload(iMaxClip(), G3SG1_RELOAD, G3SG1_RELOAD_TIME))
{ {
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->pev->fov != DEFAULT_FOV) if (m_hPlayer->pev->fov != DEFAULT_FOV)
{ {
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 15;
SecondaryAttack(); SecondaryAttack();
} }
@ -216,7 +216,7 @@ void CG3SG1::Reload()
void CG3SG1::WeaponIdle() void CG3SG1::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {
@ -230,5 +230,5 @@ void CG3SG1::WeaponIdle()
float CG3SG1::GetMaxSpeed() float CG3SG1::GetMaxSpeed()
{ {
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? G3SG1_MAX_SPEED : G3SG1_MAX_SPEED_ZOOM; return (m_hPlayer->m_iFOV == DEFAULT_FOV) ? G3SG1_MAX_SPEED : G3SG1_MAX_SPEED_ZOOM;
} }

View File

@ -70,11 +70,11 @@ void CGalil::SecondaryAttack()
void CGalil::PrimaryAttack() void CGalil::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
GalilFire(0.04 + (0.3 * m_flAccuracy), 0.0875, FALSE); GalilFire(0.04 + (0.3 * m_flAccuracy), 0.0875, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
GalilFire(0.04 + (0.07 * m_flAccuracy), 0.0875, FALSE); GalilFire(0.04 + (0.07 * m_flAccuracy), 0.0875, FALSE);
} }
@ -107,19 +107,19 @@ void CGalil::GalilFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -127,8 +127,8 @@ void CGalil::GalilFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = GALIL_DAMAGE; float flBaseDamage = GALIL_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, GALIL_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, GALIL_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -138,33 +138,33 @@ void CGalil::GalilFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
// HACKHACK: client-side weapon prediction fix // HACKHACK: client-side weapon prediction fix
if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_pPlayer->pev->waterlevel == 3) if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_hPlayer->pev->waterlevel == 3)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireGalil, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireGalil, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 10000000), int(m_pPlayer->pev->punchangle.y * 10000000), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 10000000), int(m_hPlayer->pev->punchangle.y * 10000000), FALSE, FALSE);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.28f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.28f;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.28, 0.045, 3.75, 3.0, 7); KickBack(1.0, 0.45, 0.28, 0.045, 3.75, 3.0, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6); KickBack(1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.6, 0.3, 0.2, 0.0125, 3.25, 2.0, 7); KickBack(0.6, 0.3, 0.2, 0.0125, 3.25, 2.0, 7);
} }
@ -178,13 +178,13 @@ void CGalil::Reload()
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo // to prevent reload if not enough ammo
if (m_pPlayer->ammo_556nato <= 0) if (m_hPlayer->ammo_556nato <= 0)
return; return;
#endif #endif
if (DefaultReload(iMaxClip(), GALIL_RELOAD, GALIL_RELOAD_TIME)) if (DefaultReload(iMaxClip(), GALIL_RELOAD, GALIL_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -195,7 +195,7 @@ void CGalil::Reload()
void CGalil::WeaponIdle() void CGalil::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {

View File

@ -75,9 +75,9 @@ BOOL CGLOCK18::Deploy()
m_flAccuracy = 0.9f; m_flAccuracy = 0.9f;
m_fMaxSpeed = GLOCK18_MAX_SPEED; m_fMaxSpeed = GLOCK18_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_iWeaponState &= ~WPNSTATE_GLOCK18_BURST_MODE; m_iWeaponState &= ~WPNSTATE_GLOCK18_BURST_MODE;
return DefaultDeploy("models/shield/v_shield_glock18.mdl", "models/shield/p_shield_glock18.mdl", GLOCK18_SHIELD_DRAW, "shieldgun", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_glock18.mdl", "models/shield/p_shield_glock18.mdl", GLOCK18_SHIELD_DRAW, "shieldgun", UseDecrement() != FALSE);
@ -99,12 +99,12 @@ void CGLOCK18::SecondaryAttack()
if (m_iWeaponState & WPNSTATE_GLOCK18_BURST_MODE) if (m_iWeaponState & WPNSTATE_GLOCK18_BURST_MODE)
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_SemiAuto"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#Switch_To_SemiAuto");
m_iWeaponState &= ~WPNSTATE_GLOCK18_BURST_MODE; m_iWeaponState &= ~WPNSTATE_GLOCK18_BURST_MODE;
} }
else else
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire"); ClientPrint(m_hPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire");
m_iWeaponState |= WPNSTATE_GLOCK18_BURST_MODE; m_iWeaponState |= WPNSTATE_GLOCK18_BURST_MODE;
} }
@ -115,15 +115,15 @@ void CGLOCK18::PrimaryAttack()
{ {
if (m_iWeaponState & WPNSTATE_GLOCK18_BURST_MODE) if (m_iWeaponState & WPNSTATE_GLOCK18_BURST_MODE)
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
GLOCK18Fire(1.2 * (1 - m_flAccuracy), 0.5, TRUE); GLOCK18Fire(1.2 * (1 - m_flAccuracy), 0.5, TRUE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
GLOCK18Fire(0.185 * (1 - m_flAccuracy), 0.5, TRUE); GLOCK18Fire(0.185 * (1 - m_flAccuracy), 0.5, TRUE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
GLOCK18Fire(0.095 * (1 - m_flAccuracy), 0.5, TRUE); GLOCK18Fire(0.095 * (1 - m_flAccuracy), 0.5, TRUE);
} }
@ -134,15 +134,15 @@ void CGLOCK18::PrimaryAttack()
} }
else else
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
GLOCK18Fire(1.0 * (1 - m_flAccuracy), 0.2, FALSE); GLOCK18Fire(1.0 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
GLOCK18Fire(0.165 * (1 - m_flAccuracy), 0.2, FALSE); GLOCK18Fire(0.165 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
GLOCK18Fire(0.075 * (1 - m_flAccuracy), 0.2, FALSE); GLOCK18Fire(0.075 * (1 - m_flAccuracy), 0.2, FALSE);
} }
@ -199,25 +199,25 @@ void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
// non-silenced // non-silenced
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_hPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -225,7 +225,7 @@ void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
#else #else
float flBaseDamage = GLOCK18_DAMAGE; float flBaseDamage = GLOCK18_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM, flBaseDamage, GLOCK18_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM, flBaseDamage, GLOCK18_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -233,15 +233,15 @@ void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireGlock18, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireGlock18, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
// HEV suit - indicate out of ammo condition // HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.5f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.5f;
@ -259,10 +259,10 @@ void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
void CGLOCK18::Reload() void CGLOCK18::Reload()
{ {
int iResult; int iResult;
if (m_pPlayer->ammo_9mm <= 0) if (m_hPlayer->ammo_9mm <= 0)
return; return;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
iResult = GLOCK18_SHIELD_RELOAD; iResult = GLOCK18_SHIELD_RELOAD;
else if (RANDOM_LONG(0, 1)) else if (RANDOM_LONG(0, 1))
iResult = GLOCK18_RELOAD; iResult = GLOCK18_RELOAD;
@ -271,7 +271,7 @@ void CGLOCK18::Reload()
if (DefaultReload(iMaxClip(), iResult, GLOCK18_RELOAD_TIME)) if (DefaultReload(iMaxClip(), iResult, GLOCK18_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.9; m_flAccuracy = 0.9;
} }
} }
@ -282,14 +282,14 @@ void CGLOCK18::WeaponIdle()
float flRand; float flRand;
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
return; return;
} }
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;

View File

@ -63,9 +63,9 @@ BOOL CHEGrenade::Deploy()
m_fMaxSpeed = HEGRENADE_MAX_SPEED; m_fMaxSpeed = HEGRENADE_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_hegrenade.mdl", "models/shield/p_shield_hegrenade.mdl", HEGRENADE_DRAW, "shieldgren", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_hegrenade.mdl", "models/shield/p_shield_hegrenade.mdl", HEGRENADE_DRAW, "shieldgren", UseDecrement() != FALSE);
else else
return DefaultDeploy("models/v_hegrenade.mdl", "models/p_hegrenade.mdl", HEGRENADE_DRAW, "grenade", UseDecrement() != FALSE); return DefaultDeploy("models/v_hegrenade.mdl", "models/p_hegrenade.mdl", HEGRENADE_DRAW, "grenade", UseDecrement() != FALSE);
@ -73,13 +73,13 @@ BOOL CHEGrenade::Deploy()
void CHEGrenade::Holster(int skiplocal) void CHEGrenade::Holster(int skiplocal)
{ {
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (!m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
// Moved to DestroyItem() // Moved to DestroyItem()
m_pPlayer->pev->weapons &= ~(1 << WEAPON_HEGRENADE); m_hPlayer->pev->weapons &= ~(1 << WEAPON_HEGRENADE);
#endif #endif
DestroyItem(); DestroyItem();
@ -96,7 +96,7 @@ void CHEGrenade::PrimaryAttack()
return; return;
} }
if (!m_flStartThrow && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0) if (!m_flStartThrow && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0)
{ {
m_flReleaseThrow = 0; m_flReleaseThrow = 0;
m_flStartThrow = gpGlobals->time; m_flStartThrow = gpGlobals->time;
@ -108,7 +108,7 @@ void CHEGrenade::PrimaryAttack()
bool CHEGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim) bool CHEGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{ {
if (!m_pPlayer->HasShield() || m_flStartThrow > 0) if (!m_hPlayer->HasShield() || m_flStartThrow > 0)
{ {
return false; return false;
} }
@ -117,23 +117,23 @@ bool CHEGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{ {
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE); SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
m_fMaxSpeed = HEGRENADE_MAX_SPEED; m_fMaxSpeed = HEGRENADE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
} }
else else
{ {
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN; m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE); SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = HEGRENADE_MAX_SPEED_SHIELD; m_fMaxSpeed = HEGRENADE_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true; m_hPlayer->m_bShieldDrawn = true;
} }
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN); m_hPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f;
m_flNextPrimaryAttack = GetNextAttackDelay(0.4); m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
@ -149,23 +149,23 @@ void CHEGrenade::SecondaryAttack()
void CHEGrenade::SetPlayerShieldAnim() void CHEGrenade::SetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shield");
else else
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
} }
void CHEGrenade::ResetPlayerShieldAnim() void CHEGrenade::ResetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
} }
} }
@ -179,9 +179,9 @@ void CHEGrenade::WeaponIdle()
if (m_flStartThrow) if (m_flStartThrow)
{ {
m_pPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole"); m_hPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole");
Vector angThrow = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle; Vector angThrow = m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle;
if (angThrow.x < 0) if (angThrow.x < 0)
angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0); angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0);
@ -195,22 +195,22 @@ void CHEGrenade::WeaponIdle()
UTIL_MakeVectors(angThrow); UTIL_MakeVectors(angThrow);
Vector vecSrc = m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16; Vector vecSrc = m_hPlayer->pev->origin + m_hPlayer->pev->view_ofs + gpGlobals->v_forward * 16;
Vector vecThrow = gpGlobals->v_forward * flVel + m_pPlayer->pev->velocity; Vector vecThrow = gpGlobals->v_forward * flVel + m_hPlayer->pev->velocity;
m_pPlayer->ThrowGrenade(this, vecSrc, vecThrow, 1.5, m_usCreateExplosion); m_hPlayer->ThrowGrenade(this, vecSrc, vecThrow, 1.5, m_usCreateExplosion);
SendWeaponAnim(HEGRENADE_THROW, UseDecrement() != FALSE); SendWeaponAnim(HEGRENADE_THROW, UseDecrement() != FALSE);
SetPlayerShieldAnim(); SetPlayerShieldAnim();
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_flStartThrow = 0; m_flStartThrow = 0;
m_flNextPrimaryAttack = GetNextAttackDelay(0.5); m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75f;
if (--m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (--m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
// just threw last grenade // just threw last grenade
// set attack times in the future, and weapon idle in the future so we can see the whole throw // set attack times in the future, and weapon idle in the future so we can see the whole throw
@ -226,7 +226,7 @@ void CHEGrenade::WeaponIdle()
// we've finished the throw, restart. // we've finished the throw, restart.
m_flStartThrow = 0; m_flStartThrow = 0;
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
SendWeaponAnim(HEGRENADE_DRAW, UseDecrement() != FALSE); SendWeaponAnim(HEGRENADE_DRAW, UseDecrement() != FALSE);
} }
@ -239,9 +239,9 @@ void CHEGrenade::WeaponIdle()
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
m_flReleaseThrow = -1.0f; m_flReleaseThrow = -1.0f;
} }
else if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) else if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;
@ -264,5 +264,5 @@ LINK_HOOK_CLASS_CHAIN3(BOOL, CBasePlayerWeapon, CHEGrenade, CanDeploy)
BOOL EXT_FUNC CHEGrenade::__API_HOOK(CanDeploy)() BOOL EXT_FUNC CHEGrenade::__API_HOOK(CanDeploy)()
{ {
return m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0; return m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0;
} }

View File

@ -71,15 +71,15 @@ int CKnife::GetItemInfo(ItemInfo *p)
BOOL CKnife::Deploy() BOOL CKnife::Deploy()
{ {
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/knife_deploy1.wav", 0.3, 2.4); EMIT_SOUND(m_hPlayer->edict(), CHAN_ITEM, "weapons/knife_deploy1.wav", 0.3, 2.4);
m_iSwing = 0; m_iSwing = 0;
m_fMaxSpeed = KNIFE_MAX_SPEED; m_fMaxSpeed = KNIFE_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
return DefaultDeploy("models/shield/v_shield_knife.mdl", "models/shield/p_shield_knife.mdl", KNIFE_SHIELD_DRAW, "shieldknife", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_knife.mdl", "models/shield/p_shield_knife.mdl", KNIFE_SHIELD_DRAW, "shieldknife", UseDecrement() != FALSE);
} }
@ -89,7 +89,7 @@ BOOL CKnife::Deploy()
void CKnife::Holster(int skiplocal) void CKnife::Holster(int skiplocal)
{ {
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f;
} }
NOXREF void CKnife::WeaponAnimation(int iAnimation) NOXREF void CKnife::WeaponAnimation(int iAnimation)
@ -102,7 +102,7 @@ NOXREF void CKnife::WeaponAnimation(int iAnimation)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usKnife, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usKnife,
0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, (float *)&g_vecZero, (float *)&g_vecZero,
0.0, 0.0,
0.0, 0.0,
@ -163,33 +163,33 @@ void CKnife::PrimaryAttack()
void CKnife::SetPlayerShieldAnim() void CKnife::SetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shield");
} }
else else
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldknife"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldknife");
} }
} }
void CKnife::ResetPlayerShieldAnim() void CKnife::ResetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldknife"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldknife");
} }
} }
bool CKnife::ShieldSecondaryFire(int iUpAnim, int iDownAnim) bool CKnife::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
{ {
return false; return false;
} }
@ -200,24 +200,24 @@ bool CKnife::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE); SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldknife"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldknife");
m_fMaxSpeed = KNIFE_MAX_SPEED; m_fMaxSpeed = KNIFE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
} }
else else
{ {
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN; m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE); SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = KNIFE_MAX_SPEED_SHIELD; m_fMaxSpeed = KNIFE_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true; m_hPlayer->m_bShieldDrawn = true;
} }
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN); m_hPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_flNextPrimaryAttack = GetNextAttackDelay(0.4); m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f;
@ -237,7 +237,7 @@ void CKnife::SecondaryAttack()
void CKnife::Smack() void CKnife::Smack()
{ {
DecalGunshot(&m_trHit, BULLET_PLAYER_CROWBAR, false, m_pPlayer->pev, false); DecalGunshot(&m_trHit, BULLET_PLAYER_CROWBAR, false, m_hPlayer->pev, false);
} }
void CKnife::SwingAgain() void CKnife::SwingAgain()
@ -248,12 +248,12 @@ void CKnife::SwingAgain()
void CKnife::WeaponIdle() void CKnife::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
return; return;
if (m_pPlayer->m_bShieldDrawn) if (m_hPlayer->m_bShieldDrawn)
return; return;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;
@ -268,16 +268,16 @@ BOOL CKnife::Swing(BOOL fFirst)
TraceResult tr; TraceResult tr;
Vector vecSrc, vecEnd; Vector vecSrc, vecEnd;
UTIL_MakeVectors(m_pPlayer->pev->v_angle); UTIL_MakeVectors(m_hPlayer->pev->v_angle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecEnd = vecSrc + gpGlobals->v_forward * m_flSwingDistance; vecEnd = vecSrc + gpGlobals->v_forward * m_flSwingDistance;
UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, m_pPlayer->edict(), &tr); UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, m_hPlayer->edict(), &tr);
if (tr.flFraction >= 1.0f) if (tr.flFraction >= 1.0f)
{ {
UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, m_pPlayer->edict(), &tr); UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, m_hPlayer->edict(), &tr);
if (tr.flFraction < 1.0f) if (tr.flFraction < 1.0f)
{ {
@ -287,7 +287,7 @@ BOOL CKnife::Swing(BOOL fFirst)
if (!pHit || pHit->IsBSPModel()) if (!pHit || pHit->IsBSPModel())
{ {
FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict()); FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_hPlayer->edict());
} }
// This is the point on the actual surface (the hull could have hit space) // This is the point on the actual surface (the hull could have hit space)
@ -299,7 +299,7 @@ BOOL CKnife::Swing(BOOL fFirst)
{ {
if (fFirst) if (fFirst)
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
{ {
switch ((m_iSwing++) % 2) switch ((m_iSwing++) % 2)
{ {
@ -323,12 +323,12 @@ BOOL CKnife::Swing(BOOL fFirst)
// play wiff or swish sound // play wiff or swish sound
if (RANDOM_LONG(0, 1)) if (RANDOM_LONG(0, 1))
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94);
else else
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash2.wav", VOL_NORM, ATTN_NORM, 0, 94); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash2.wav", VOL_NORM, ATTN_NORM, 0, 94);
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
} }
} }
else else
@ -336,7 +336,7 @@ BOOL CKnife::Swing(BOOL fFirst)
// hit // hit
fDidHit = TRUE; fDidHit = TRUE;
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
{ {
switch ((m_iSwing++) % 2) switch ((m_iSwing++) % 2)
{ {
@ -365,15 +365,15 @@ BOOL CKnife::Swing(BOOL fFirst)
SetPlayerShieldAnim(); SetPlayerShieldAnim();
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
ClearMultiDamage(); ClearMultiDamage();
if (m_flNextPrimaryAttack + 0.4f < UTIL_WeaponTimeBase()) if (m_flNextPrimaryAttack + 0.4f < UTIL_WeaponTimeBase())
pEntity->TraceAttack(m_pPlayer->pev, m_flSwingBaseDamage_Fast, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET)); pEntity->TraceAttack(m_hPlayer->pev, m_flSwingBaseDamage_Fast, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
else else
pEntity->TraceAttack(m_pPlayer->pev, m_flSwingBaseDamage, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET)); pEntity->TraceAttack(m_hPlayer->pev, m_flSwingBaseDamage, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
ApplyMultiDamage(m_pPlayer->pev, m_pPlayer->pev); ApplyMultiDamage(m_hPlayer->pev, m_hPlayer->pev);
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
if (pEntity) // -V595 if (pEntity) // -V595
@ -388,13 +388,13 @@ BOOL CKnife::Swing(BOOL fFirst)
// play thwack or smack sound // play thwack or smack sound
switch (RANDOM_LONG(0, 3)) switch (RANDOM_LONG(0, 3))
{ {
case 0: EMIT_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit1.wav", VOL_NORM, ATTN_NORM); break; case 0: EMIT_SOUND(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit1.wav", VOL_NORM, ATTN_NORM); break;
case 1: EMIT_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit2.wav", VOL_NORM, ATTN_NORM); break; case 1: EMIT_SOUND(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit2.wav", VOL_NORM, ATTN_NORM); break;
case 2: EMIT_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit3.wav", VOL_NORM, ATTN_NORM); break; case 2: EMIT_SOUND(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit3.wav", VOL_NORM, ATTN_NORM); break;
case 3: EMIT_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit4.wav", VOL_NORM, ATTN_NORM); break; case 3: EMIT_SOUND(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_hit4.wav", VOL_NORM, ATTN_NORM); break;
} }
m_pPlayer->m_iWeaponVolume = KNIFE_BODYHIT_VOLUME; m_hPlayer->m_iWeaponVolume = KNIFE_BODYHIT_VOLUME;
if (!pEntity->IsAlive()) if (!pEntity->IsAlive())
return TRUE; return TRUE;
@ -426,14 +426,14 @@ BOOL CKnife::Swing(BOOL fFirst)
SetThink(&CKnife::Smack); SetThink(&CKnife::Smack);
pev->nextthink = UTIL_WeaponTimeBase() + 0.2f; pev->nextthink = UTIL_WeaponTimeBase() + 0.2f;
m_pPlayer->m_iWeaponVolume = int(flVol * KNIFE_WALLHIT_VOLUME); m_hPlayer->m_iWeaponVolume = int(flVol * KNIFE_WALLHIT_VOLUME);
ResetPlayerShieldAnim(); ResetPlayerShieldAnim();
} }
else else
{ {
// also play knife strike // also play knife strike
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_ITEM, "weapons/knife_hitwall1.wav", VOL_NORM, ATTN_NORM, 0, RANDOM_LONG(0, 3) + 98); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_ITEM, "weapons/knife_hitwall1.wav", VOL_NORM, ATTN_NORM, 0, RANDOM_LONG(0, 3) + 98);
} }
} }
@ -446,16 +446,16 @@ BOOL CKnife::Stab(BOOL fFirst)
TraceResult tr; TraceResult tr;
Vector vecSrc, vecEnd; Vector vecSrc, vecEnd;
UTIL_MakeVectors(m_pPlayer->pev->v_angle); UTIL_MakeVectors(m_hPlayer->pev->v_angle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecEnd = vecSrc + gpGlobals->v_forward * m_flStabDistance; vecEnd = vecSrc + gpGlobals->v_forward * m_flStabDistance;
UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, m_pPlayer->edict(), &tr); UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, m_hPlayer->edict(), &tr);
if (tr.flFraction >= 1.0f) if (tr.flFraction >= 1.0f)
{ {
UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, m_pPlayer->edict(), &tr); UTIL_TraceHull(vecSrc, vecEnd, dont_ignore_monsters, head_hull, m_hPlayer->edict(), &tr);
if (tr.flFraction < 1.0f) if (tr.flFraction < 1.0f)
{ {
@ -465,7 +465,7 @@ BOOL CKnife::Stab(BOOL fFirst)
if (!pHit || pHit->IsBSPModel()) if (!pHit || pHit->IsBSPModel())
{ {
FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict()); FindHullIntersection(vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_hPlayer->edict());
} }
// This is the point on the actual surface (the hull could have hit space) // This is the point on the actual surface (the hull could have hit space)
@ -487,12 +487,12 @@ BOOL CKnife::Stab(BOOL fFirst)
// play wiff or swish sound // play wiff or swish sound
if (RANDOM_LONG(0, 1)) if (RANDOM_LONG(0, 1))
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94);
else else
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash2.wav", VOL_NORM, ATTN_NORM, 0, 94); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash2.wav", VOL_NORM, ATTN_NORM, 0, 94);
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
} }
} }
else else
@ -515,7 +515,7 @@ BOOL CKnife::Stab(BOOL fFirst)
CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit); CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
float flDamage = m_flStabBaseDamage; float flDamage = m_flStabBaseDamage;
@ -539,11 +539,11 @@ BOOL CKnife::Stab(BOOL fFirst)
} }
} }
UTIL_MakeVectors(m_pPlayer->pev->v_angle); UTIL_MakeVectors(m_hPlayer->pev->v_angle);
ClearMultiDamage(); ClearMultiDamage();
pEntity->TraceAttack(m_pPlayer->pev, flDamage, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET)); pEntity->TraceAttack(m_hPlayer->pev, flDamage, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
ApplyMultiDamage(m_pPlayer->pev, m_pPlayer->pev); ApplyMultiDamage(m_hPlayer->pev, m_hPlayer->pev);
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
if (pEntity) // -V595 if (pEntity) // -V595
@ -555,8 +555,8 @@ BOOL CKnife::Stab(BOOL fFirst)
if (pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE) if (pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE)
#endif #endif
{ {
EMIT_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_stab.wav", VOL_NORM, ATTN_NORM); EMIT_SOUND(m_hPlayer->edict(), CHAN_WEAPON, "weapons/knife_stab.wav", VOL_NORM, ATTN_NORM);
m_pPlayer->m_iWeaponVolume = KNIFE_BODYHIT_VOLUME; m_hPlayer->m_iWeaponVolume = KNIFE_BODYHIT_VOLUME;
if (!pEntity->IsAlive()) if (!pEntity->IsAlive())
return TRUE; return TRUE;
@ -585,7 +585,7 @@ BOOL CKnife::Stab(BOOL fFirst)
{ {
// delay the decal a bit // delay the decal a bit
m_trHit = tr; m_trHit = tr;
m_pPlayer->m_iWeaponVolume = int(flVol * KNIFE_WALLHIT_VOLUME); m_hPlayer->m_iWeaponVolume = int(flVol * KNIFE_WALLHIT_VOLUME);
SetThink(&CKnife::Smack); SetThink(&CKnife::Smack);
pev->nextthink = UTIL_WeaponTimeBase() + 0.2f; pev->nextthink = UTIL_WeaponTimeBase() + 0.2f;
@ -595,7 +595,7 @@ BOOL CKnife::Stab(BOOL fFirst)
else else
{ {
// also play knife strike // also play knife strike
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_ITEM, "weapons/knife_hitwall1.wav", VOL_NORM, ATTN_NORM, 0, RANDOM_LONG(0, 3) + 98); EMIT_SOUND_DYN(m_hPlayer->edict(), CHAN_ITEM, "weapons/knife_hitwall1.wav", VOL_NORM, ATTN_NORM, 0, RANDOM_LONG(0, 3) + 98);
} }
} }

View File

@ -69,11 +69,11 @@ BOOL CM249::Deploy()
void CM249::PrimaryAttack() void CM249::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
M249Fire(0.045 + (0.5 * m_flAccuracy), 0.1, FALSE); M249Fire(0.045 + (0.5 * m_flAccuracy), 0.1, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
M249Fire(0.045 + (0.095 * m_flAccuracy), 0.1, FALSE); M249Fire(0.045 + (0.095 * m_flAccuracy), 0.1, FALSE);
} }
@ -106,22 +106,22 @@ void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -129,8 +129,8 @@ void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = M249_DAMAGE; float flBaseDamage = M249_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, M249_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, M249_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -138,27 +138,27 @@ void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM249, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireM249, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.6f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.6f;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.8, 0.65, 0.45, 0.125, 5.0, 3.5, 8); KickBack(1.8, 0.65, 0.45, 0.125, 5.0, 3.5, 8);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.1, 0.5, 0.3, 0.06, 4.0, 3.0, 8); KickBack(1.1, 0.5, 0.3, 0.06, 4.0, 3.0, 8);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.75, 0.325, 0.25, 0.025, 3.5, 2.5, 9); KickBack(0.75, 0.325, 0.25, 0.025, 3.5, 2.5, 9);
} }
@ -172,13 +172,13 @@ void CM249::Reload()
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo // to prevent reload if not enough ammo
if (m_pPlayer->ammo_556natobox <= 0) if (m_hPlayer->ammo_556natobox <= 0)
return; return;
#endif #endif
if (DefaultReload(iMaxClip(), M249_RELOAD, M249_RELOAD_TIME)) if (DefaultReload(iMaxClip(), M249_RELOAD, M249_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_bDelayFire = false; m_bDelayFire = false;
@ -189,7 +189,7 @@ void CM249::Reload()
void CM249::WeaponIdle() void CM249::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -81,7 +81,7 @@ void CM3::PrimaryAttack()
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
} }
@ -96,7 +96,7 @@ void CM3::PrimaryAttack()
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
m_flNextPrimaryAttack = GetNextAttackDelay(1); m_flNextPrimaryAttack = GetNextAttackDelay(1);
@ -106,16 +106,16 @@ void CM3::PrimaryAttack()
} }
m_iClip--; m_iClip--;
m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -127,9 +127,9 @@ void CM3::PrimaryAttack()
Vector vecCone(M3_CONE_VECTOR); Vector vecCone(M3_CONE_VECTOR);
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_pPlayer->FireBuckshots(9, vecSrc, vecAiming, vecCone, 3000.0f, 0, flBaseDamage, m_pPlayer->pev); m_hPlayer->FireBuckshots(9, vecSrc, vecAiming, vecCone, 3000.0f, 0, flBaseDamage, m_hPlayer->pev);
#else #else
m_pPlayer->FireBullets(9, vecSrc, vecAiming, vecCone, 3000, BULLET_PLAYER_BUCKSHOT, 0, 0, NULL); m_hPlayer->FireBullets(9, vecSrc, vecAiming, vecCone, 3000, BULLET_PLAYER_BUCKSHOT, 0, 0, NULL);
#endif #endif
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
@ -140,16 +140,16 @@ void CM3::PrimaryAttack()
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
// HACKHACK: client-side weapon prediction fix // HACKHACK: client-side weapon prediction fix
if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_pPlayer->pev->waterlevel == 3) if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_hPlayer->pev->waterlevel == 3)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM3, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, FALSE, FALSE); PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireM3, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, FALSE, FALSE);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
// HEV suit - indicate out of ammo condition // HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
@ -167,12 +167,12 @@ void CM3::PrimaryAttack()
m_fInSpecialReload = 0; m_fInSpecialReload = 0;
if (m_pPlayer->pev->flags & FL_ONGROUND) if (m_hPlayer->pev->flags & FL_ONGROUND)
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 4, 6); m_hPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_hPlayer->random_seed + 1, 4, 6);
else else
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 8, 11); m_hPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_hPlayer->random_seed + 1, 8, 11);
m_pPlayer->m_flEjectBrass = gpGlobals->time + 0.45f; m_hPlayer->m_flEjectBrass = gpGlobals->time + 0.45f;
} }
void CM3::Reload() void CM3::Reload()
@ -186,7 +186,7 @@ void CM3::Reload()
void CM3::WeaponIdle() void CM3::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_5DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_5DEGREES);
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
if (m_flPumpTime && m_flPumpTime < UTIL_WeaponTimeBase()) if (m_flPumpTime && m_flPumpTime < UTIL_WeaponTimeBase())
@ -197,13 +197,13 @@ void CM3::WeaponIdle()
if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase())
{ {
if (m_iClip == 0 && m_fInSpecialReload == 0 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (m_iClip == 0 && m_fInSpecialReload == 0 && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
Reload(); Reload();
} }
else if (m_fInSpecialReload != 0) else if (m_fInSpecialReload != 0)
{ {
if (m_iClip != iMaxClip() && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (m_iClip != iMaxClip() && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
Reload(); Reload();
} }

View File

@ -82,13 +82,13 @@ void CM4A1::SecondaryAttack()
{ {
m_iWeaponState &= ~WPNSTATE_M4A1_SILENCED; m_iWeaponState &= ~WPNSTATE_M4A1_SILENCED;
SendWeaponAnim(M4A1_DETACH_SILENCER, UseDecrement() != FALSE); SendWeaponAnim(M4A1_DETACH_SILENCER, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "rifle"); Q_strcpy(m_hPlayer->m_szAnimExtention, "rifle");
} }
else else
{ {
m_iWeaponState |= WPNSTATE_M4A1_SILENCED; m_iWeaponState |= WPNSTATE_M4A1_SILENCED;
SendWeaponAnim(M4A1_ATTACH_SILENCER, UseDecrement() != FALSE); SendWeaponAnim(M4A1_ATTACH_SILENCER, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "rifle"); Q_strcpy(m_hPlayer->m_szAnimExtention, "rifle");
} }
m_flTimeWeaponIdle = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 2.0f;
@ -99,11 +99,11 @@ void CM4A1::PrimaryAttack()
{ {
if (m_iWeaponState & WPNSTATE_M4A1_SILENCED) if (m_iWeaponState & WPNSTATE_M4A1_SILENCED)
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
M4A1Fire(0.035 + (0.4 * m_flAccuracy), 0.0875, FALSE); M4A1Fire(0.035 + (0.4 * m_flAccuracy), 0.0875, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
M4A1Fire(0.035 + (0.07 * m_flAccuracy), 0.0875, FALSE); M4A1Fire(0.035 + (0.07 * m_flAccuracy), 0.0875, FALSE);
} }
@ -114,11 +114,11 @@ void CM4A1::PrimaryAttack()
} }
else else
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
M4A1Fire(0.035 + (0.4 * m_flAccuracy), 0.0875, FALSE); M4A1Fire(0.035 + (0.4 * m_flAccuracy), 0.0875, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
M4A1Fire(0.035 + (0.07 * m_flAccuracy), 0.0875, FALSE); M4A1Fire(0.035 + (0.07 * m_flAccuracy), 0.0875, FALSE);
} }
@ -152,21 +152,21 @@ void CM4A1::M4A1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -176,15 +176,15 @@ void CM4A1::M4A1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#endif #endif
if (m_iWeaponState & WPNSTATE_M4A1_SILENCED) if (m_iWeaponState & WPNSTATE_M4A1_SILENCED)
{ {
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, M4A1_RANGE_MODIFER_SIL, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, M4A1_RANGE_MODIFER_SIL, m_hPlayer->pev, false, m_hPlayer->random_seed);
} }
else else
{ {
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, M4A1_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, M4A1_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
} }
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
@ -194,30 +194,30 @@ void CM4A1::M4A1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#endif #endif
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
m_pPlayer->ammo_556nato--; m_hPlayer->ammo_556nato--;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM4A1, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireM4A1, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), (m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), (m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5f;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.28, 0.045, 3.75, 3.0, 7); KickBack(1.0, 0.45, 0.28, 0.045, 3.75, 3.0, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6); KickBack(1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.6, 0.3, 0.2, 0.0125, 3.25, 2.0, 7); KickBack(0.6, 0.3, 0.2, 0.0125, 3.25, 2.0, 7);
} }
@ -229,12 +229,12 @@ void CM4A1::M4A1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CM4A1::Reload() void CM4A1::Reload()
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_hPlayer->ammo_556nato <= 0)
return; return;
if (DefaultReload(iMaxClip(), ((m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED) ? M4A1_RELOAD : M4A1_UNSIL_RELOAD, M4A1_RELOAD_TIME)) if (DefaultReload(iMaxClip(), ((m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED) ? M4A1_RELOAD : M4A1_UNSIL_RELOAD, M4A1_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -245,7 +245,7 @@ void CM4A1::Reload()
void CM4A1::WeaponIdle() void CM4A1::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -66,7 +66,7 @@ BOOL CMAC10::Deploy()
void CMAC10::PrimaryAttack() void CMAC10::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
MAC10Fire(0.375 * m_flAccuracy, 0.07, FALSE); MAC10Fire(0.375 * m_flAccuracy, 0.07, FALSE);
} }
@ -99,22 +99,22 @@ void CMAC10::MAC10Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -122,8 +122,8 @@ void CMAC10::MAC10Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = MAC10_DAMAGE; float flBaseDamage = MAC10_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_45ACP, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_45ACP,
flBaseDamage, MAC10_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, MAC10_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -131,27 +131,27 @@ void CMAC10::MAC10Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireMAC10, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireMAC10, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.3, 0.55, 0.4, 0.05, 4.75, 3.75, 5); KickBack(1.3, 0.55, 0.4, 0.05, 4.75, 3.75, 5);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(0.9, 0.45, 0.25, 0.035, 3.5, 2.75, 7); KickBack(0.9, 0.45, 0.25, 0.035, 3.5, 2.75, 7);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.75, 0.4, 0.175, 0.03, 2.75, 2.5, 10); KickBack(0.75, 0.4, 0.175, 0.03, 2.75, 2.5, 10);
} }
@ -163,12 +163,12 @@ void CMAC10::MAC10Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CMAC10::Reload() void CMAC10::Reload()
{ {
if (m_pPlayer->ammo_45acp <= 0) if (m_hPlayer->ammo_45acp <= 0)
return; return;
if (DefaultReload(iMaxClip(), MAC10_RELOAD, MAC10_RELOAD_TIME)) if (DefaultReload(iMaxClip(), MAC10_RELOAD, MAC10_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0; m_flAccuracy = 0;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -178,7 +178,7 @@ void CMAC10::Reload()
void CMAC10::WeaponIdle() void CMAC10::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -67,7 +67,7 @@ BOOL CMP5N::Deploy()
void CMP5N::PrimaryAttack() void CMP5N::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
MP5NFire(0.2 * m_flAccuracy, 0.075, FALSE); MP5NFire(0.2 * m_flAccuracy, 0.075, FALSE);
} }
@ -100,19 +100,19 @@ void CMP5N::MP5NFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -120,8 +120,8 @@ void CMP5N::MP5NFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = MP5N_DAMAGE; float flBaseDamage = MP5N_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM,
flBaseDamage, MP5N_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, MP5N_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -129,30 +129,30 @@ void CMP5N::MP5NFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireMP5N, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireMP5N, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(0.9, 0.475, 0.35, 0.0425, 5.0, 3.0, 6); KickBack(0.9, 0.475, 0.35, 0.0425, 5.0, 3.0, 6);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(0.5, 0.275, 0.2, 0.03, 3.0, 2.0, 10); KickBack(0.5, 0.275, 0.2, 0.03, 3.0, 2.0, 10);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.225, 0.15, 0.1, 0.015, 2.0, 1.0, 10); KickBack(0.225, 0.15, 0.1, 0.015, 2.0, 1.0, 10);
} }
@ -164,12 +164,12 @@ void CMP5N::MP5NFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CMP5N::Reload() void CMP5N::Reload()
{ {
if (m_pPlayer->ammo_9mm <= 0) if (m_hPlayer->ammo_9mm <= 0)
return; return;
if (DefaultReload(iMaxClip(), MP5N_RELOAD, MP5N_RELOAD_TIME)) if (DefaultReload(iMaxClip(), MP5N_RELOAD, MP5N_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0; m_flAccuracy = 0;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -179,7 +179,7 @@ void CMP5N::Reload()
void CMP5N::WeaponIdle() void CMP5N::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -62,9 +62,9 @@ BOOL CP228::Deploy()
m_flAccuracy = 0.9f; m_flAccuracy = 0.9f;
m_fMaxSpeed = P228_MAX_SPEED; m_fMaxSpeed = P228_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_p228.mdl", "models/shield/p_shield_p228.mdl", P228_SHIELD_DRAW, "shieldgun", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_p228.mdl", "models/shield/p_shield_p228.mdl", P228_SHIELD_DRAW, "shieldgun", UseDecrement() != FALSE);
else else
return DefaultDeploy("models/v_p228.mdl", "models/p_p228.mdl", P228_DRAW, "onehanded", UseDecrement() != FALSE); return DefaultDeploy("models/v_p228.mdl", "models/p_p228.mdl", P228_DRAW, "onehanded", UseDecrement() != FALSE);
@ -72,15 +72,15 @@ BOOL CP228::Deploy()
void CP228::PrimaryAttack() void CP228::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
P228Fire(1.5 * (1 - m_flAccuracy), 0.2, FALSE); P228Fire(1.5 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
P228Fire(0.255 * (1 - m_flAccuracy), 0.2, FALSE); P228Fire(0.255 * (1 - m_flAccuracy), 0.2, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
P228Fire(0.075 * (1 - m_flAccuracy), 0.2, FALSE); P228Fire(0.075 * (1 - m_flAccuracy), 0.2, FALSE);
} }
@ -133,23 +133,23 @@ void CP228::P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
SetPlayerShieldAnim(); SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -157,7 +157,7 @@ void CP228::P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi)
#else #else
float flBaseDamage = P228_DAMAGE; float flBaseDamage = P228_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_357SIG, flBaseDamage, P228_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_357SIG, flBaseDamage, P228_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -165,29 +165,29 @@ void CP228::P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireP228, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireP228, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), m_iClip == 0, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
m_pPlayer->pev->punchangle.x -= 2; m_hPlayer->pev->punchangle.x -= 2;
ResetPlayerShieldAnim(); ResetPlayerShieldAnim();
} }
void CP228::Reload() void CP228::Reload()
{ {
if (m_pPlayer->ammo_357sig <= 0) if (m_hPlayer->ammo_357sig <= 0)
return; return;
if (DefaultReload(iMaxClip(), m_pPlayer->HasShield() ? P228_SHIELD_RELOAD : P228_RELOAD, P228_RELOAD_TIME)) if (DefaultReload(iMaxClip(), m_hPlayer->HasShield() ? P228_SHIELD_RELOAD : P228_RELOAD, P228_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.9f; m_flAccuracy = 0.9f;
} }
} }
@ -195,14 +195,14 @@ void CP228::Reload()
void CP228::WeaponIdle() void CP228::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
return; return;
} }
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;

View File

@ -70,11 +70,11 @@ BOOL CP90::Deploy()
void CP90::PrimaryAttack() void CP90::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
P90Fire(0.3 * m_flAccuracy, 0.066, FALSE); P90Fire(0.3 * m_flAccuracy, 0.066, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 170) else if (m_hPlayer->pev->velocity.Length2D() > 170)
{ {
P90Fire(0.115 * m_flAccuracy, 0.066, FALSE); P90Fire(0.115 * m_flAccuracy, 0.066, FALSE);
} }
@ -107,22 +107,22 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -130,7 +130,7 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = P90_DAMAGE; float flBaseDamage = P90_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_57MM, flBaseDamage, P90_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_57MM, flBaseDamage, P90_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -138,27 +138,27 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireP90, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireP90, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), 5, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), 5, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(0.9, 0.45, 0.35, 0.04, 5.25, 3.5, 4); KickBack(0.9, 0.45, 0.35, 0.04, 5.25, 3.5, 4);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(0.45, 0.3, 0.2, 0.0275, 4.0, 2.25, 7); KickBack(0.45, 0.3, 0.2, 0.0275, 4.0, 2.25, 7);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.275, 0.2, 0.125, 0.02, 3.0, 1.0, 9); KickBack(0.275, 0.2, 0.125, 0.02, 3.0, 1.0, 9);
} }
@ -170,12 +170,12 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CP90::Reload() void CP90::Reload()
{ {
if (m_pPlayer->ammo_57mm <= 0) if (m_hPlayer->ammo_57mm <= 0)
return; return;
if (DefaultReload(iMaxClip(), P90_RELOAD, P90_RELOAD_TIME)) if (DefaultReload(iMaxClip(), P90_RELOAD, P90_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -185,7 +185,7 @@ void CP90::Reload()
void CP90::WeaponIdle() void CP90::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -58,7 +58,7 @@ BOOL CSCOUT::Deploy()
{ {
if (DefaultDeploy("models/v_scout.mdl", "models/p_scout.mdl", SCOUT_DRAW, "rifle", UseDecrement() != FALSE)) if (DefaultDeploy("models/v_scout.mdl", "models/p_scout.mdl", SCOUT_DRAW, "rifle", UseDecrement() != FALSE))
{ {
m_flNextPrimaryAttack = m_pPlayer->m_flNextAttack = GetNextAttackDelay(1.25); m_flNextPrimaryAttack = m_hPlayer->m_flNextAttack = GetNextAttackDelay(1.25);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0f;
return TRUE; return TRUE;
@ -69,39 +69,39 @@ BOOL CSCOUT::Deploy()
void CSCOUT::SecondaryAttack() void CSCOUT::SecondaryAttack()
{ {
switch (m_pPlayer->m_iFOV) switch (m_hPlayer->m_iFOV)
{ {
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break; case 90: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; break; case 40: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 15; break;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
default: default:
#else #else
case 15: case 15:
#endif #endif
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break; m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 90; break;
} }
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_hPlayer);
} }
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4); EMIT_SOUND(m_hPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
} }
void CSCOUT::PrimaryAttack() void CSCOUT::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
SCOUTFire(0.2, 1.25, FALSE); SCOUTFire(0.2, 1.25, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 170) else if (m_hPlayer->pev->velocity.Length2D() > 170)
{ {
SCOUTFire(0.075, 1.25, FALSE); SCOUTFire(0.075, 1.25, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
SCOUTFire(0, 1.25, FALSE); SCOUTFire(0, 1.25, FALSE);
} }
@ -116,13 +116,13 @@ void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
Vector vecAiming, vecSrc, vecDir; Vector vecAiming, vecSrc, vecDir;
int flag; int flag;
if (m_pPlayer->pev->fov != DEFAULT_FOV) if (m_hPlayer->pev->fov != DEFAULT_FOV)
{ {
m_pPlayer->m_bResumeZoom = true; m_hPlayer->m_bResumeZoom = true;
m_pPlayer->m_iLastZoom = m_pPlayer->m_iFOV; m_hPlayer->m_iLastZoom = m_hPlayer->m_iFOV;
// reset a fov // reset a fov
m_pPlayer->m_iFOV = DEFAULT_FOV; m_hPlayer->m_iFOV = DEFAULT_FOV;
} }
else else
{ {
@ -139,22 +139,22 @@ void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_flEjectBrass = gpGlobals->time + 0.56f; m_hPlayer->m_flEjectBrass = gpGlobals->time + 0.56f;
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_hPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -162,7 +162,7 @@ void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = SCOUT_DAMAGE; float flBaseDamage = SCOUT_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 3, BULLET_PLAYER_762MM, flBaseDamage, SCOUT_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 3, BULLET_PLAYER_762MM, flBaseDamage, SCOUT_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -170,44 +170,44 @@ void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireScout, 0, (float *)&g_vecZero, (float *)&m_pPlayer->pev->angles, (vecDir.x * 1000), (vecDir.y * 1000), PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireScout, 0, (float *)&g_vecZero, (float *)&m_hPlayer->pev->angles, (vecDir.x * 1000), (vecDir.y * 1000),
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.x * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.x * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f;
m_pPlayer->pev->punchangle.x -= 2.0f; m_hPlayer->pev->punchangle.x -= 2.0f;
} }
void CSCOUT::Reload() void CSCOUT::Reload()
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo // to prevent reload if not enough ammo
if (m_pPlayer->ammo_762nato <= 0) if (m_hPlayer->ammo_762nato <= 0)
return; return;
#endif #endif
if (DefaultReload(iMaxClip(), SCOUT_RELOAD, SCOUT_RELOAD_TIME)) if (DefaultReload(iMaxClip(), SCOUT_RELOAD, SCOUT_RELOAD_TIME))
{ {
if (m_pPlayer->pev->fov != DEFAULT_FOV) if (m_hPlayer->pev->fov != DEFAULT_FOV)
{ {
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 15; m_hPlayer->pev->fov = m_hPlayer->m_iFOV = 15;
SecondaryAttack(); SecondaryAttack();
} }
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
} }
} }
void CSCOUT::WeaponIdle() void CSCOUT::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
@ -223,5 +223,5 @@ void CSCOUT::WeaponIdle()
float CSCOUT::GetMaxSpeed() float CSCOUT::GetMaxSpeed()
{ {
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? SCOUT_MAX_SPEED : SCOUT_MAX_SPEED_ZOOM; return (m_hPlayer->m_iFOV == DEFAULT_FOV) ? SCOUT_MAX_SPEED : SCOUT_MAX_SPEED_ZOOM;
} }

View File

@ -70,40 +70,40 @@ BOOL CSG550::Deploy()
void CSG550::SecondaryAttack() void CSG550::SecondaryAttack()
{ {
switch (m_pPlayer->m_iFOV) switch (m_hPlayer->m_iFOV)
{ {
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break; case 90: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; break; case 40: m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 15; break;
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
default: default:
#else #else
case 15: case 15:
#endif #endif
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break; m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 90; break;
} }
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_hPlayer);
} }
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4); EMIT_SOUND(m_hPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
} }
void CSG550::PrimaryAttack() void CSG550::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
SG550Fire(0.45 * (1 - m_flAccuracy), 0.25, FALSE); SG550Fire(0.45 * (1 - m_flAccuracy), 0.25, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
SG550Fire(0.15, 0.25, FALSE); SG550Fire(0.15, 0.25, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
SG550Fire(0.04 * (1 - m_flAccuracy), 0.25, FALSE); SG550Fire(0.04 * (1 - m_flAccuracy), 0.25, FALSE);
} }
@ -118,7 +118,7 @@ void CSG550::SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
Vector vecAiming, vecSrc, vecDir; Vector vecAiming, vecSrc, vecDir;
int flag; int flag;
if (m_pPlayer->pev->fov == DEFAULT_FOV) if (m_hPlayer->pev->fov == DEFAULT_FOV)
{ {
flSpread += 0.025f; flSpread += 0.025f;
} }
@ -145,22 +145,22 @@ void CSG550::SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH; m_hPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -168,7 +168,7 @@ void CSG550::SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = SG550_DAMAGE; float flBaseDamage = SG550_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, flBaseDamage, SG550_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, flBaseDamage, SG550_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -176,34 +176,34 @@ void CSG550::SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireSG550, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireSG550, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.x * 100), 5, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.x * 100), 5, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.8f;
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_pPlayer->random_seed + 4, 0.75, 1.25) + m_pPlayer->pev->punchangle.x * 0.25; m_hPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_hPlayer->random_seed + 4, 0.75, 1.25) + m_hPlayer->pev->punchangle.x * 0.25;
m_pPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_pPlayer->random_seed + 5, -0.75, 0.75); m_hPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_hPlayer->random_seed + 5, -0.75, 0.75);
} }
void CSG550::Reload() void CSG550::Reload()
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_hPlayer->ammo_556nato <= 0)
return; return;
if (DefaultReload(iMaxClip(), SG550_RELOAD, SG550_RELOAD_TIME)) if (DefaultReload(iMaxClip(), SG550_RELOAD, SG550_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->pev->fov != DEFAULT_FOV) if (m_hPlayer->pev->fov != DEFAULT_FOV)
{ {
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; m_hPlayer->m_iFOV = m_hPlayer->pev->fov = 15;
SecondaryAttack(); SecondaryAttack();
} }
} }
@ -212,7 +212,7 @@ void CSG550::Reload()
void CSG550::WeaponIdle() void CSG550::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
@ -228,5 +228,5 @@ void CSG550::WeaponIdle()
float CSG550::GetMaxSpeed() float CSG550::GetMaxSpeed()
{ {
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? SG550_MAX_SPEED : SG550_MAX_SPEED_ZOOM; return (m_hPlayer->m_iFOV == DEFAULT_FOV) ? SG550_MAX_SPEED : SG550_MAX_SPEED_ZOOM;
} }

View File

@ -67,25 +67,25 @@ BOOL CSG552::Deploy()
void CSG552::SecondaryAttack() void CSG552::SecondaryAttack()
{ {
if (m_pPlayer->m_iFOV == DEFAULT_FOV) if (m_hPlayer->m_iFOV == DEFAULT_FOV)
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 55; m_hPlayer->pev->fov = m_hPlayer->m_iFOV = 55;
else else
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 90; m_hPlayer->pev->fov = m_hPlayer->m_iFOV = 90;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f;
} }
void CSG552::PrimaryAttack() void CSG552::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
SG552Fire(0.035 + (0.45 * m_flAccuracy), 0.0825, FALSE); SG552Fire(0.035 + (0.45 * m_flAccuracy), 0.0825, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_hPlayer->pev->velocity.Length2D() > 140)
{ {
SG552Fire(0.035 + (0.075 * m_flAccuracy), 0.0825, FALSE); SG552Fire(0.035 + (0.075 * m_flAccuracy), 0.0825, FALSE);
} }
else if (m_pPlayer->pev->fov == DEFAULT_FOV) else if (m_hPlayer->pev->fov == DEFAULT_FOV)
{ {
SG552Fire(0.02 * m_flAccuracy, 0.0825, FALSE); SG552Fire(0.02 * m_flAccuracy, 0.0825, FALSE);
} }
@ -118,22 +118,22 @@ void CSG552::SG552Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -141,8 +141,8 @@ void CSG552::SG552Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = SG552_DAMAGE; float flBaseDamage = SG552_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
flBaseDamage, SG552_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, SG552_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -150,27 +150,27 @@ void CSG552::SG552Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireSG552, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireSG552, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), 5, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), 5, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.28, 0.04, 4.25, 2.5, 7); KickBack(1.0, 0.45, 0.28, 0.04, 4.25, 2.5, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.25, 0.45, 0.22, 0.18, 6.0, 4.0, 5); KickBack(1.25, 0.45, 0.22, 0.18, 6.0, 4.0, 5);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.6, 0.35, 0.2, 0.0125, 3.7, 2.0, 10); KickBack(0.6, 0.35, 0.2, 0.0125, 3.7, 2.0, 10);
} }
@ -182,17 +182,17 @@ void CSG552::SG552Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CSG552::Reload() void CSG552::Reload()
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_hPlayer->ammo_556nato <= 0)
return; return;
if (DefaultReload(iMaxClip(), SG552_RELOAD, SG552_RELOAD_TIME)) if (DefaultReload(iMaxClip(), SG552_RELOAD, SG552_RELOAD_TIME))
{ {
if (m_pPlayer->m_iFOV != DEFAULT_FOV) if (m_hPlayer->m_iFOV != DEFAULT_FOV)
{ {
SecondaryAttack(); SecondaryAttack();
} }
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_iShotsFired = 0; m_iShotsFired = 0;
m_bDelayFire = false; m_bDelayFire = false;
@ -202,7 +202,7 @@ void CSG552::Reload()
void CSG552::WeaponIdle() void CSG552::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
@ -215,7 +215,7 @@ void CSG552::WeaponIdle()
float CSG552::GetMaxSpeed() float CSG552::GetMaxSpeed()
{ {
if (m_pPlayer->m_iFOV == DEFAULT_FOV) if (m_hPlayer->m_iFOV == DEFAULT_FOV)
return SG552_MAX_SPEED; return SG552_MAX_SPEED;
return SG552_MAX_SPEED_ZOOM; return SG552_MAX_SPEED_ZOOM;

View File

@ -62,9 +62,9 @@ BOOL CSmokeGrenade::Deploy()
m_flReleaseThrow = -1; m_flReleaseThrow = -1;
m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED; m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_smokegrenade.mdl", "models/shield/p_shield_smokegrenade.mdl", SMOKEGRENADE_DRAW, "shieldgren", UseDecrement() != FALSE); return DefaultDeploy("models/shield/v_shield_smokegrenade.mdl", "models/shield/p_shield_smokegrenade.mdl", SMOKEGRENADE_DRAW, "shieldgren", UseDecrement() != FALSE);
else else
return DefaultDeploy("models/v_smokegrenade.mdl", "models/p_smokegrenade.mdl", SMOKEGRENADE_DRAW, "grenade", UseDecrement() != FALSE); return DefaultDeploy("models/v_smokegrenade.mdl", "models/p_smokegrenade.mdl", SMOKEGRENADE_DRAW, "grenade", UseDecrement() != FALSE);
@ -72,15 +72,15 @@ BOOL CSmokeGrenade::Deploy()
void CSmokeGrenade::Holster(int skiplocal) void CSmokeGrenade::Holster(int skiplocal)
{ {
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f; m_hPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5f;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (!m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
// no more smokegrenades! // no more smokegrenades!
// clear the smokegrenade of bits for HUD // clear the smokegrenade of bits for HUD
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
// Moved to DestroyItem() // Moved to DestroyItem()
m_pPlayer->pev->weapons &= ~(1 << WEAPON_SMOKEGRENADE); m_hPlayer->pev->weapons &= ~(1 << WEAPON_SMOKEGRENADE);
#endif #endif
DestroyItem(); DestroyItem();
@ -95,7 +95,7 @@ void CSmokeGrenade::PrimaryAttack()
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
return; return;
if (!m_flStartThrow && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0) if (!m_flStartThrow && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0)
{ {
m_flReleaseThrow = 0; m_flReleaseThrow = 0;
m_flStartThrow = gpGlobals->time; m_flStartThrow = gpGlobals->time;
@ -107,7 +107,7 @@ void CSmokeGrenade::PrimaryAttack()
bool CSmokeGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim) bool CSmokeGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{ {
if (!m_pPlayer->HasShield() || m_flStartThrow > 0) if (!m_hPlayer->HasShield() || m_flStartThrow > 0)
{ {
return false; return false;
} }
@ -117,24 +117,24 @@ bool CSmokeGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE); SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED; m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
} }
else else
{ {
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN; m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE); SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED_SHIELD; m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true; m_hPlayer->m_bShieldDrawn = true;
} }
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN); m_hPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed(); m_hPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4f;
m_flNextPrimaryAttack = GetNextAttackDelay(0.4); m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
@ -150,23 +150,23 @@ void CSmokeGrenade::SecondaryAttack()
void CSmokeGrenade::SetPlayerShieldAnim() void CSmokeGrenade::SetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shield");
else else
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
} }
void CSmokeGrenade::ResetPlayerShieldAnim() void CSmokeGrenade::ResetPlayerShieldAnim()
{ {
if (!m_pPlayer->HasShield()) if (!m_hPlayer->HasShield())
return; return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN) if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{ {
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren"); Q_strcpy(m_hPlayer->m_szAnimExtention, "shieldgren");
} }
} }
@ -180,9 +180,9 @@ void CSmokeGrenade::WeaponIdle()
if (m_flStartThrow) if (m_flStartThrow)
{ {
m_pPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole"); m_hPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole");
Vector angThrow = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle; Vector angThrow = m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle;
if (angThrow.x < 0) if (angThrow.x < 0)
angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0); angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0);
@ -196,22 +196,22 @@ void CSmokeGrenade::WeaponIdle()
UTIL_MakeVectors(angThrow); UTIL_MakeVectors(angThrow);
Vector vecSrc = m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16.0f; Vector vecSrc = m_hPlayer->pev->origin + m_hPlayer->pev->view_ofs + gpGlobals->v_forward * 16.0f;
Vector vecThrow = gpGlobals->v_forward * flVel + m_pPlayer->pev->velocity; Vector vecThrow = gpGlobals->v_forward * flVel + m_hPlayer->pev->velocity;
m_pPlayer->ThrowGrenade(this, vecSrc, vecThrow, 1.5, m_usCreateSmoke); m_hPlayer->ThrowGrenade(this, vecSrc, vecThrow, 1.5, m_usCreateSmoke);
SendWeaponAnim(SMOKEGRENADE_THROW, UseDecrement() != FALSE); SendWeaponAnim(SMOKEGRENADE_THROW, UseDecrement() != FALSE);
SetPlayerShieldAnim(); SetPlayerShieldAnim();
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_flStartThrow = 0; m_flStartThrow = 0;
m_flNextPrimaryAttack = GetNextAttackDelay(0.5); m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75f;
if (--m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (--m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
// just threw last grenade // just threw last grenade
// set attack times in the future, and weapon idle in the future so we can see the whole throw // set attack times in the future, and weapon idle in the future so we can see the whole throw
@ -227,7 +227,7 @@ void CSmokeGrenade::WeaponIdle()
// we've finished the throw, restart. // we've finished the throw, restart.
m_flStartThrow = 0; m_flStartThrow = 0;
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
SendWeaponAnim(SMOKEGRENADE_DRAW, UseDecrement() != FALSE); SendWeaponAnim(SMOKEGRENADE_DRAW, UseDecrement() != FALSE);
} }
@ -240,12 +240,12 @@ void CSmokeGrenade::WeaponIdle()
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15); m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
m_flReleaseThrow = -1; m_flReleaseThrow = -1;
} }
else if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) else if (m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
int iAnim; int iAnim;
float flRand = RANDOM_FLOAT(0, 1); float flRand = RANDOM_FLOAT(0, 1);
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;
@ -278,5 +278,5 @@ LINK_HOOK_CLASS_CHAIN3(BOOL, CBasePlayerWeapon, CSmokeGrenade, CanDeploy)
BOOL EXT_FUNC CSmokeGrenade::__API_HOOK(CanDeploy)() BOOL EXT_FUNC CSmokeGrenade::__API_HOOK(CanDeploy)()
{ {
return m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0; return m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0;
} }

View File

@ -66,7 +66,7 @@ BOOL CTMP::Deploy()
void CTMP::PrimaryAttack() void CTMP::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
TMPFire(0.25 * m_flAccuracy, 0.07, FALSE); TMPFire(0.25 * m_flAccuracy, 0.07, FALSE);
} }
@ -99,20 +99,20 @@ void CTMP::TMPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -120,8 +120,8 @@ void CTMP::TMPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = TMP_DAMAGE; float flBaseDamage = TMP_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM,
flBaseDamage, TMP_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, TMP_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -129,27 +129,27 @@ void CTMP::TMPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireTMP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireTMP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), 5, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), 5, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.1, 0.5, 0.35, 0.045, 4.5, 3.5, 6); KickBack(1.1, 0.5, 0.35, 0.045, 4.5, 3.5, 6);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(0.8, 0.4, 0.2, 0.03, 3.0, 2.5, 7); KickBack(0.8, 0.4, 0.2, 0.03, 3.0, 2.5, 7);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.7, 0.35, 0.125, 0.025, 2.5, 2.0, 10); KickBack(0.7, 0.35, 0.125, 0.025, 2.5, 2.0, 10);
} }
@ -163,13 +163,13 @@ void CTMP::Reload()
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo // to prevent reload if not enough ammo
if (m_pPlayer->ammo_9mm <= 0) if (m_hPlayer->ammo_9mm <= 0)
return; return;
#endif #endif
if (DefaultReload(iMaxClip(), TMP_RELOAD, TMP_RELOAD_TIME)) if (DefaultReload(iMaxClip(), TMP_RELOAD, TMP_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2f; m_flAccuracy = 0.2f;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -179,7 +179,7 @@ void CTMP::Reload()
void CTMP::WeaponIdle() void CTMP::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -70,7 +70,7 @@ BOOL CUMP45::Deploy()
void CUMP45::PrimaryAttack() void CUMP45::PrimaryAttack()
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
UMP45Fire(0.24 * m_flAccuracy, 0.1, FALSE); UMP45Fire(0.24 * m_flAccuracy, 0.1, FALSE);
} }
@ -103,19 +103,19 @@ void CUMP45::UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -123,8 +123,8 @@ void CUMP45::UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
#else #else
float flBaseDamage = UMP45_DAMAGE; float flBaseDamage = UMP45_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_45ACP, vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_45ACP,
flBaseDamage, UMP45_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); flBaseDamage, UMP45_RANGE_MODIFER, m_hPlayer->pev, false, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -132,30 +132,30 @@ void CUMP45::UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireUMP45, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireUMP45, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE); int(m_hPlayer->pev->punchangle.x * 100), int(m_hPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(0.125, 0.65, 0.55, 0.0475, 5.5, 4.0, 10); KickBack(0.125, 0.65, 0.55, 0.0475, 5.5, 4.0, 10);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(0.55, 0.3, 0.225, 0.03, 3.5, 2.5, 10); KickBack(0.55, 0.3, 0.225, 0.03, 3.5, 2.5, 10);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.25, 0.175, 0.125, 0.02, 2.25, 1.25, 10); KickBack(0.25, 0.175, 0.125, 0.02, 2.25, 1.25, 10);
} }
@ -167,12 +167,12 @@ void CUMP45::UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CUMP45::Reload() void CUMP45::Reload()
{ {
if (m_pPlayer->ammo_45acp <= 0) if (m_hPlayer->ammo_45acp <= 0)
return; return;
if (DefaultReload(iMaxClip(), UMP45_RELOAD, UMP45_RELOAD_TIME)) if (DefaultReload(iMaxClip(), UMP45_RELOAD, UMP45_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.0f; m_flAccuracy = 0.0f;
m_iShotsFired = 0; m_iShotsFired = 0;
@ -182,7 +182,7 @@ void CUMP45::Reload()
void CUMP45::WeaponIdle() void CUMP45::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {

View File

@ -71,9 +71,9 @@ BOOL CUSP::Deploy()
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN; m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_flAccuracy = 0.92f; m_flAccuracy = 0.92f;
m_fMaxSpeed = USP_MAX_SPEED; m_fMaxSpeed = USP_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false; m_hPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_iWeaponState &= ~WPNSTATE_USP_SILENCED; m_iWeaponState &= ~WPNSTATE_USP_SILENCED;
return DefaultDeploy("models/shield/v_shield_usp.mdl", "models/shield/p_shield_usp.mdl", USP_SHIELD_DRAW, "shieldgun", UseDecrement()); return DefaultDeploy("models/shield/v_shield_usp.mdl", "models/shield/p_shield_usp.mdl", USP_SHIELD_DRAW, "shieldgun", UseDecrement());
@ -98,14 +98,14 @@ void CUSP::SecondaryAttack()
m_iWeaponState &= ~WPNSTATE_USP_SILENCED; m_iWeaponState &= ~WPNSTATE_USP_SILENCED;
SendWeaponAnim(USP_DETACH_SILENCER, UseDecrement() != FALSE); SendWeaponAnim(USP_DETACH_SILENCER, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "onehanded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "onehanded");
} }
else else
{ {
m_iWeaponState |= WPNSTATE_USP_SILENCED; m_iWeaponState |= WPNSTATE_USP_SILENCED;
SendWeaponAnim(USP_ATTACH_SILENCER, UseDecrement() != FALSE); SendWeaponAnim(USP_ATTACH_SILENCER, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "onehanded"); Q_strcpy(m_hPlayer->m_szAnimExtention, "onehanded");
} }
m_flNextSecondaryAttack = m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + USP_ADJUST_SIL_TIME; m_flNextSecondaryAttack = m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + USP_ADJUST_SIL_TIME;
@ -116,15 +116,15 @@ void CUSP::PrimaryAttack()
{ {
if (m_iWeaponState & WPNSTATE_USP_SILENCED) if (m_iWeaponState & WPNSTATE_USP_SILENCED)
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
USPFire(1.3 * (1 - m_flAccuracy), 0.225, FALSE); USPFire(1.3 * (1 - m_flAccuracy), 0.225, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
USPFire(0.25 * (1 - m_flAccuracy), 0.225, FALSE); USPFire(0.25 * (1 - m_flAccuracy), 0.225, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
USPFire(0.125 * (1 - m_flAccuracy), 0.225, FALSE); USPFire(0.125 * (1 - m_flAccuracy), 0.225, FALSE);
} }
@ -135,15 +135,15 @@ void CUSP::PrimaryAttack()
} }
else else
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_hPlayer->pev->flags & FL_ONGROUND))
{ {
USPFire(1.2 * (1 - m_flAccuracy), 0.225, FALSE); USPFire(1.2 * (1 - m_flAccuracy), 0.225, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_hPlayer->pev->velocity.Length2D() > 0)
{ {
USPFire(0.225 * (1 - m_flAccuracy), 0.225, FALSE); USPFire(0.225 * (1 - m_flAccuracy), 0.225, FALSE);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_hPlayer->pev->flags & FL_DUCKING)
{ {
USPFire(0.08 * (1 - m_flAccuracy), 0.225, FALSE); USPFire(0.08 * (1 - m_flAccuracy), 0.225, FALSE);
} }
@ -192,7 +192,7 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
return; return;
@ -203,18 +203,18 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
m_iClip--; m_iClip--;
SetPlayerShieldAnim(); SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME; m_hPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; m_hPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
if (!(m_iWeaponState & WPNSTATE_USP_SILENCED)) if (!(m_iWeaponState & WPNSTATE_USP_SILENCED))
{ {
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
} }
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -222,7 +222,7 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
#else #else
float flBaseDamage = (m_iWeaponState & WPNSTATE_USP_SILENCED) ? USP_DAMAGE_SIL : USP_DAMAGE; float flBaseDamage = (m_iWeaponState & WPNSTATE_USP_SILENCED) ? USP_DAMAGE_SIL : USP_DAMAGE;
#endif #endif
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_45ACP, flBaseDamage, USP_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed); vecDir = m_hPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_45ACP, flBaseDamage, USP_RANGE_MODIFER, m_hPlayer->pev, true, m_hPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
@ -230,26 +230,26 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
flag = 0; flag = 0;
#endif // CLIENT_WEAPONS #endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireUSP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireUSP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), 0, m_iClip == 0, (m_iWeaponState & WPNSTATE_USP_SILENCED)); (int)(m_hPlayer->pev->punchangle.x * 100), 0, m_iClip == 0, (m_iWeaponState & WPNSTATE_USP_SILENCED));
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0f;
m_pPlayer->pev->punchangle.x -= 2.0f; m_hPlayer->pev->punchangle.x -= 2.0f;
ResetPlayerShieldAnim(); ResetPlayerShieldAnim();
} }
void CUSP::Reload() void CUSP::Reload()
{ {
if (m_pPlayer->ammo_45acp <= 0) if (m_hPlayer->ammo_45acp <= 0)
return; return;
int iAnim; int iAnim;
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
iAnim = USP_SHIELD_RELOAD; iAnim = USP_SHIELD_RELOAD;
else if (m_iWeaponState & WPNSTATE_USP_SILENCED) else if (m_iWeaponState & WPNSTATE_USP_SILENCED)
iAnim = USP_RELOAD; iAnim = USP_RELOAD;
@ -258,7 +258,7 @@ void CUSP::Reload()
if (DefaultReload(iMaxClip(), iAnim, USP_RELOAD_TIME)) if (DefaultReload(iMaxClip(), iAnim, USP_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_hPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.92f; m_flAccuracy = 0.92f;
} }
} }
@ -266,14 +266,14 @@ void CUSP::Reload()
void CUSP::WeaponIdle() void CUSP::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > 0) if (m_flTimeWeaponIdle > 0)
{ {
return; return;
} }
if (m_pPlayer->HasShield()) if (m_hPlayer->HasShield())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;

View File

@ -79,7 +79,7 @@ void CXM1014::PrimaryAttack()
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
} }
@ -94,7 +94,7 @@ void CXM1014::PrimaryAttack()
if (TheBots) if (TheBots)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_hPlayer);
} }
m_flNextPrimaryAttack = GetNextAttackDelay(1); m_flNextPrimaryAttack = GetNextAttackDelay(1);
@ -103,17 +103,17 @@ void CXM1014::PrimaryAttack()
return; return;
} }
m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; m_hPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; m_hPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_hPlayer->pev->effects |= EF_MUZZLEFLASH;
// player "shoot" animation // player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_hPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); UTIL_MakeVectors(m_hPlayer->pev->v_angle + m_hPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition(); vecSrc = m_hPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward; vecAiming = gpGlobals->v_forward;
#ifdef REGAMEDLL_API #ifdef REGAMEDLL_API
@ -125,9 +125,9 @@ void CXM1014::PrimaryAttack()
Vector vecCone(XM1014_CONE_VECTOR); Vector vecCone(XM1014_CONE_VECTOR);
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
m_pPlayer->FireBuckshots(6, vecSrc, vecAiming, vecCone, 3048.0f, 0, flBaseDamage, m_pPlayer->pev); m_hPlayer->FireBuckshots(6, vecSrc, vecAiming, vecCone, 3048.0f, 0, flBaseDamage, m_hPlayer->pev);
#else #else
m_pPlayer->FireBullets(6, vecSrc, vecAiming, vecCone, 3048, BULLET_PLAYER_BUCKSHOT, 0, 0, NULL); m_hPlayer->FireBullets(6, vecSrc, vecAiming, vecCone, 3048, BULLET_PLAYER_BUCKSHOT, 0, 0, NULL);
#endif #endif
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
@ -138,17 +138,17 @@ void CXM1014::PrimaryAttack()
#ifdef REGAMEDLL_ADD #ifdef REGAMEDLL_ADD
// HACKHACK: client-side weapon prediction fix // HACKHACK: client-side weapon prediction fix
if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_pPlayer->pev->waterlevel == 3) if (!(iFlags() & ITEM_FLAG_NOFIREUNDERWATER) && m_hPlayer->pev->waterlevel == 3)
flag = 0; flag = 0;
#endif #endif
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireXM1014, 0, (float *)&g_vecZero, (float *)&g_vecZero, m_vVecAiming.x, m_vVecAiming.y, 7, PLAYBACK_EVENT_FULL(flag, m_hPlayer->edict(), m_usFireXM1014, 0, (float *)&g_vecZero, (float *)&g_vecZero, m_vVecAiming.x, m_vVecAiming.y, 7,
int(m_vVecAiming.x * 100), m_iClip == 0, FALSE); int(m_vVecAiming.x * 100), m_iClip == 0, FALSE);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
// HEV suit - indicate out of ammo condition // HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK); m_hPlayer->SetSuitUpdate("!HEV_AMO0", SUIT_SENTENCE, SUIT_REPEAT_OK);
} }
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
@ -166,10 +166,10 @@ void CXM1014::PrimaryAttack()
m_fInSpecialReload = 0; m_fInSpecialReload = 0;
if (m_pPlayer->pev->flags & FL_ONGROUND) if (m_hPlayer->pev->flags & FL_ONGROUND)
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 3, 5); m_hPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_hPlayer->random_seed + 1, 3, 5);
else else
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 7, 10); m_hPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_hPlayer->random_seed + 1, 7, 10);
} }
void CXM1014::Reload() void CXM1014::Reload()
@ -183,7 +183,7 @@ void CXM1014::Reload()
void CXM1014::WeaponIdle() void CXM1014::WeaponIdle()
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_5DEGREES); m_hPlayer->GetAutoaimVector(AUTOAIM_5DEGREES);
#ifndef REGAMEDLL_FIXES #ifndef REGAMEDLL_FIXES
if (m_flPumpTime && m_flPumpTime < UTIL_WeaponTimeBase()) if (m_flPumpTime && m_flPumpTime < UTIL_WeaponTimeBase())
@ -194,13 +194,13 @@ void CXM1014::WeaponIdle()
if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase())
{ {
if (m_iClip == 0 && m_fInSpecialReload == 0 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (m_iClip == 0 && m_fInSpecialReload == 0 && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
Reload(); Reload();
} }
else if (m_fInSpecialReload != 0) else if (m_fInSpecialReload != 0)
{ {
if (m_iClip != iMaxClip() && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]) if (m_iClip != iMaxClip() && m_hPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{ {
Reload(); Reload();
} }

View File

@ -326,7 +326,7 @@ inline void CBot::Walk()
inline CBasePlayerWeapon *CBot::GetActiveWeapon() const inline CBasePlayerWeapon *CBot::GetActiveWeapon() const
{ {
return static_cast<CBasePlayerWeapon *>(m_pActiveItem); return m_hActiveItem.Get<CBasePlayerWeapon>();
} }
inline bool CBot::IsActiveWeaponCanShootUnderwater() const inline bool CBot::IsActiveWeaponCanShootUnderwater() const

View File

@ -669,10 +669,10 @@ bool IsGameEventAudible(GameEventType event, CBaseEntity *pEntity, CBaseEntity *
// TODO: Use actual volume, account for silencers, etc. // TODO: Use actual volume, account for silencers, etc.
case EVENT_WEAPON_FIRED: case EVENT_WEAPON_FIRED:
{ {
if (!pPlayer->m_pActiveItem) if (!pPlayer->m_hActiveItem)
return false; return false;
switch (pPlayer->m_pActiveItem->m_iId) switch (pPlayer->m_hActiveItem->m_iId)
{ {
// silent "firing" // silent "firing"
case WEAPON_HEGRENADE: case WEAPON_HEGRENADE:
@ -689,8 +689,8 @@ bool IsGameEventAudible(GameEventType event, CBaseEntity *pEntity, CBaseEntity *
// M4A1 - check for silencer // M4A1 - check for silencer
case WEAPON_M4A1: case WEAPON_M4A1:
{ {
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(pPlayer->m_pActiveItem); CBasePlayerWeapon *pWeapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon->m_iWeaponState & WPNSTATE_M4A1_SILENCED) if (pWeapon && pWeapon->m_iWeaponState & WPNSTATE_M4A1_SILENCED)
*range = ShortRange; *range = ShortRange;
else else
*range = NormalRange; *range = NormalRange;
@ -699,8 +699,8 @@ bool IsGameEventAudible(GameEventType event, CBaseEntity *pEntity, CBaseEntity *
// USP - check for silencer // USP - check for silencer
case WEAPON_USP: case WEAPON_USP:
{ {
CBasePlayerWeapon *pWeapon = static_cast<CBasePlayerWeapon *>(pPlayer->m_pActiveItem); CBasePlayerWeapon *pWeapon = pPlayer->m_hActiveItem.Get<CBasePlayerWeapon>();
if (pWeapon->m_iWeaponState & WPNSTATE_USP_SILENCED) if (pWeapon && pWeapon->m_iWeaponState & WPNSTATE_USP_SILENCED)
*range = ShortRange; *range = ShortRange;
else else
*range = NormalRange; *range = NormalRange;