From 4155dd42b2a8c694279c7a2332f3d1106830de6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Mu=C3=B1oz?= Date: Sat, 15 Jul 2023 17:42:14 -0400 Subject: [PATCH] `API`: CSPlayer and CKnife additions + headers refactory (#277) * Reordered hook_callback.cpp/h declarations based on regamedll_api.h order * Update CKnife members and include descriptions * Update CSPlayer members and include descriptions --- .../scripting/include/reapi_gamedll_const.inc | 34 +- reapi/include/cssdk/dlls/API/CSPlayer.h | 11 +- reapi/include/cssdk/dlls/weapons.h | 1 + reapi/src/hook_callback.cpp | 479 +++++++++--------- reapi/src/hook_callback.h | 131 ++--- reapi/src/member_list.cpp | 3 + reapi/src/member_list.h | 3 + 7 files changed, 356 insertions(+), 306 deletions(-) diff --git a/reapi/extra/amxmodx/scripting/include/reapi_gamedll_const.inc b/reapi/extra/amxmodx/scripting/include/reapi_gamedll_const.inc index 1b0b963..df3ebb7 100644 --- a/reapi/extra/amxmodx/scripting/include/reapi_gamedll_const.inc +++ b/reapi/extra/amxmodx/scripting/include/reapi_gamedll_const.inc @@ -4656,6 +4656,22 @@ enum CCSPlayer_Members * Set params: set_member(index, member, bool:value); */ m_bMegaBunnyJumping, + + /* + * Description: - + * Member type: bool + * Get params: get_member(index, member); + * Set params: set_member(index, member, bool:value); + */ + m_bPlantC4Anywhere, + + /* + * Description: - + * Member type: bool + * Get params: get_member(index, member); + * Set params: set_member(index, member, bool:value); + */ + m_bSpawnProtectionEffects, }; /** @@ -5950,7 +5966,7 @@ enum CKnife_Members m_Knife_usKnife, /* - * Description: - + * Description: Stab damage (default: 65.0) * Member type: float * Get params: get_member(index, member); * Set params: set_member(index, member, value); @@ -5958,7 +5974,7 @@ enum CKnife_Members m_Knife_flStabBaseDamage, /* - * Description: - + * Description: Swing damage (default: 15.0) * Member type: float * Get params: get_member(index, member); * Set params: set_member(index, member, value); @@ -5966,7 +5982,7 @@ enum CKnife_Members m_Knife_flSwingBaseDamage, /* - * Description: - + * Description: Fast Swing (first one) damage (default: 20.0) * Member type: float * Get params: get_member(index, member); * Set params: set_member(index, member, value); @@ -5974,7 +5990,7 @@ enum CKnife_Members m_Knife_flSwingBaseDamage_Fast, /* - * Description: - + * Description: Stab distance (default: 32.0) * Member type: float * Get params: get_member(index, member); * Set params: set_member(index, member, value); @@ -5982,12 +5998,20 @@ enum CKnife_Members m_Knife_flStabDistance, /* - * Description: - + * Description: Swing distance (default: 64.0) * Member type: float * Get params: get_member(index, member); * Set params: set_member(index, member, value); */ m_Knife_flSwingDistance, + + /* + * Description: Back Stab damage multiplier (default: 3.0) + * Member type: float + * Get params: get_member(index, member); + * Set params: set_member(index, member, value); + */ + m_Knife_flBackStabMultiplier, }; /** diff --git a/reapi/include/cssdk/dlls/API/CSPlayer.h b/reapi/include/cssdk/dlls/API/CSPlayer.h index 99273c9..3f63d5c 100644 --- a/reapi/include/cssdk/dlls/API/CSPlayer.h +++ b/reapi/include/cssdk/dlls/API/CSPlayer.h @@ -50,7 +50,9 @@ public: m_bCanShootOverride(false), m_bGameForcingRespawn(false), m_bAutoBunnyHopping(false), - m_bMegaBunnyJumping(false) + m_bMegaBunnyJumping(false), + m_bPlantC4Anywhere(false), + m_bSpawnProtectionEffects(false) { m_szModel[0] = '\0'; } @@ -100,8 +102,11 @@ public: virtual void SetSpawnProtection(float flProtectionTime) = 0; virtual void RemoveSpawnProtection() = 0; virtual bool HintMessageEx(const char *pMessage, float duration = 6.0f, bool bDisplayIfPlayerDead = false, bool bOverride = false) = 0; + virtual void Reset() = 0; + virtual void OnSpawnEquip(bool addDefault = true, bool equipGame = true) = 0; + virtual void SetScoreboardAttributes(CBasePlayer *destination = nullptr) = 0; - void Reset(); + void ResetVars(); void OnSpawn(); void OnKilled(); @@ -131,6 +136,8 @@ public: bool m_bGameForcingRespawn; bool m_bAutoBunnyHopping; bool m_bMegaBunnyJumping; + bool m_bPlantC4Anywhere; + bool m_bSpawnProtectionEffects; }; // Inlines diff --git a/reapi/include/cssdk/dlls/weapons.h b/reapi/include/cssdk/dlls/weapons.h index 609ea91..14f6df4 100644 --- a/reapi/include/cssdk/dlls/weapons.h +++ b/reapi/include/cssdk/dlls/weapons.h @@ -623,6 +623,7 @@ public: float m_flSwingBaseDamage_Fast; float m_flStabDistance; float m_flSwingDistance; + float m_flBackStabMultiplier; }; class CM249: public CBasePlayerWeapon diff --git a/reapi/src/hook_callback.cpp b/reapi/src/hook_callback.cpp index 35066ae..bd43ff7 100644 --- a/reapi/src/hook_callback.cpp +++ b/reapi/src/hook_callback.cpp @@ -472,16 +472,6 @@ CBasePlayer *CBasePlayer_Observer_IsValidTarget(IReGameHook_CBasePlayer_Observer return getPrivate(callForward(RG_CBasePlayer_Observer_IsValidTarget, original, indexOfEdict(pthis->pev), iPlayerIndex, bSameTeam)); } -void CBasePlayer_Observer_FindNextPlayer(IReGameHook_CBasePlayer_Observer_FindNextPlayer *chain, CBasePlayer *pthis, bool bReverse, const char *name) -{ - auto original = [chain](int _pthis, bool _bReverse, const char *_name) - { - chain->callNext(getPrivate(_pthis), _bReverse, _name); - }; - - callVoidForward(RG_CBasePlayer_Observer_FindNextPlayer, original, indexOfEdict(pthis->pev), bReverse, name); -} - void CBasePlayer_SetAnimation(IReGameHook_CBasePlayer_SetAnimation *chain, CBasePlayer *pthis, PLAYER_ANIM playerAnim) { auto original = [chain](int _pthis, PLAYER_ANIM _playerAnim) @@ -654,128 +644,6 @@ bool CBasePlayer_GetIntoGame(IReGameHook_CBasePlayer_GetIntoGame *chain, CBasePl return callForward(RG_CBasePlayer_GetIntoGame, original, indexOfEdict(pthis->pev)); } -void CBasePlayer_StartDeathCam(IReGameHook_CBasePlayer_StartDeathCam *chain, CBasePlayer *pthis) -{ - auto original = [chain](int _pthis) - { - return chain->callNext(getPrivate(_pthis)); - }; - - callVoidForward(RG_CBasePlayer_StartDeathCam, original, indexOfEdict(pthis->pev)); -} - -void CBasePlayer_SwitchTeam(IReGameHook_CBasePlayer_SwitchTeam *chain, CBasePlayer *pthis) -{ - auto original = [chain](int _pthis) - { - chain->callNext(getPrivate(_pthis)); - }; - - callVoidForward(RG_CBasePlayer_SwitchTeam, original, indexOfEdict(pthis->pev)); -} - -bool CBasePlayer_CanSwitchTeam(IReGameHook_CBasePlayer_CanSwitchTeam *chain, CBasePlayer *pthis, TeamName teamToSwap) -{ - auto original = [chain](int _pthis, TeamName _teamToSwap) - { - return chain->callNext(getPrivate(_pthis), _teamToSwap); - }; - - return callForward(RG_CBasePlayer_CanSwitchTeam, original, indexOfEdict(pthis->pev), teamToSwap); -} - -CGrenade *CBasePlayer_ThrowGrenade(IReGameHook_CBasePlayer_ThrowGrenade *chain, CBasePlayer *pthis, CBasePlayerWeapon *pWeapon, Vector &vecSrc, Vector &vecThrow, float time, unsigned short usEvent) -{ - Vector vecSrcCopy(vecSrc), vecThrowCopy(vecThrow); - - auto original = [chain, &vecSrcCopy, &vecThrowCopy](int _pthis, int _pWeapon, cell _vecSrc, cell _vecThrow, float _time, unsigned short _usEvent) - { - return indexOfPDataAmx(chain->callNext(getPrivate(_pthis), getPrivate(_pWeapon), vecSrcCopy, vecThrowCopy, _time, _usEvent)); - }; - - return getPrivate(callForward(RG_CBasePlayer_ThrowGrenade, original, indexOfEdict(pthis->pev), indexOfEdict(pWeapon->pev), getAmxVector(vecSrcCopy), getAmxVector(vecThrowCopy), time, usEvent)); -} - -void CBasePlayer_SetSpawnProtection(IReGameHook_CBasePlayer_SetSpawnProtection *chain, CBasePlayer *pthis, float flProtectionTime) -{ - auto original = [chain](int _pthis, float _flProtectionTime) - { - return chain->callNext(getPrivate(_pthis), _flProtectionTime); - }; - - callVoidForward(RG_CBasePlayer_SetSpawnProtection, original, indexOfEdict(pthis->pev), flProtectionTime); -} - -void CBasePlayer_RemoveSpawnProtection(IReGameHook_CBasePlayer_RemoveSpawnProtection *chain, CBasePlayer *pthis) -{ - auto original = [chain](int _pthis) - { - return chain->callNext(getPrivate(_pthis)); - }; - - callVoidForward(RG_CBasePlayer_RemoveSpawnProtection, original, indexOfEdict(pthis->pev)); -} - -bool CBasePlayer_HintMessageEx(IReGameHook_CBasePlayer_HintMessageEx *chain, CBasePlayer *pthis, const char *pMessage, float duration, bool bDisplayIfPlayerDead, bool bOverride) -{ - auto original = [chain](int _pthis, const char *_pMessage, float _duration, bool _bDisplayIfPlayerDead, bool _bOverride) - { - return chain->callNext(getPrivate(_pthis), _pMessage, _duration, _bDisplayIfPlayerDead, _bOverride); - }; - - return callForward(RG_CBasePlayer_HintMessageEx, original, indexOfEdict(pthis->pev), pMessage, duration, bDisplayIfPlayerDead, bOverride); -} - -void CBasePlayer_UseEmpty(IReGameHook_CBasePlayer_UseEmpty *chain, CBasePlayer *pthis) -{ - auto original = [chain](int _pthis) - { - return chain->callNext(getPrivate(_pthis)); - }; - - callVoidForward(RG_CBasePlayer_UseEmpty, original, indexOfEdict(pthis->pev)); -} - -void CBasePlayer_DropIdlePlayer(IReGameHook_CBasePlayer_DropIdlePlayer *chain, CBasePlayer *pthis, const char *reason) -{ - auto original = [chain](int _pthis, const char *_reason) - { - return chain->callNext(getPrivate(_pthis), _reason); - }; - - callVoidForward(RG_CBasePlayer_DropIdlePlayer, original, indexOfEdict(pthis->pev), reason); -} - -void CBasePlayer_Pain(IReGameHook_CBasePlayer_Pain *chain, CBasePlayer *pthis, int iLastHitGroup, bool bHasArmour) -{ - auto original = [chain](int _pthis, int _iLastHitGroup, bool _bHasArmour) - { - return chain->callNext(getPrivate(_pthis), _iLastHitGroup, _bHasArmour); - }; - - callVoidForward(RG_CBasePlayer_Pain, original, indexOfEdict(pthis->pev), iLastHitGroup, bHasArmour); -} - -void CBasePlayer_DeathSound(IReGameHook_CBasePlayer_DeathSound *chain, CBasePlayer *pthis) -{ - auto original = [chain](int _pthis) - { - return chain->callNext(getPrivate(_pthis)); - }; - - callVoidForward(RG_CBasePlayer_DeathSound, original, indexOfEdict(pthis->pev)); -} - -void CBasePlayer_JoiningThink(IReGameHook_CBasePlayer_JoiningThink *chain, CBasePlayer *pthis) -{ - auto original = [chain](int _pthis) - { - return chain->callNext(getPrivate(_pthis)); - }; - - callVoidForward(RG_CBasePlayer_JoiningThink, original, indexOfEdict(pthis->pev)); -} - void CBaseAnimating_ResetSequenceInfo(IReGameHook_CBaseAnimating_ResetSequenceInfo *chain, CBaseAnimating *pthis) { auto original = [chain](int _pthis) @@ -786,46 +654,6 @@ void CBaseAnimating_ResetSequenceInfo(IReGameHook_CBaseAnimating_ResetSequenceIn callVoidForward(RG_CBaseAnimating_ResetSequenceInfo, original, indexOfEdict(pthis->pev)); } -BOOL CBasePlayerWeapon_CanDeploy(IReGameHook_CBasePlayerWeapon_CanDeploy *chain, CBasePlayerWeapon *pthis) -{ - auto original = [chain](int _pthis) - { - return chain->callNext(getPrivate(_pthis)); - }; - - return callForward(RG_CBasePlayerWeapon_CanDeploy, original, indexOfEdict(pthis->pev)); -} - -BOOL CBasePlayerWeapon_DefaultDeploy(IReGameHook_CBasePlayerWeapon_DefaultDeploy *chain, CBasePlayerWeapon *pthis, char *szViewModel, char *szWeaponModel, int iAnim, char *szAnimExt, int skiplocal) -{ - auto original = [chain](int _pthis, char *_szViewModel, char *_szWeaponModel, int _iAnim, char *_szAnimExt, int _skiplocal) - { - return chain->callNext(getPrivate(_pthis), _szViewModel, _szWeaponModel, _iAnim, _szAnimExt, _skiplocal); - }; - - return callForward(RG_CBasePlayerWeapon_DefaultDeploy, original, indexOfEdict(pthis->pev), szViewModel, szWeaponModel, iAnim, szAnimExt, skiplocal); -} - -int CBasePlayerWeapon_DefaultReload(IReGameHook_CBasePlayerWeapon_DefaultReload *chain, CBasePlayerWeapon *pthis, int iClipSize, int iAnim, float fDelay) -{ - auto original = [chain](int _pthis, int _iClipSize, int _iAnim, float _fDelay) - { - return chain->callNext(getPrivate(_pthis), _iClipSize, _iAnim, _fDelay); - }; - - return callForward(RG_CBasePlayerWeapon_DefaultReload, original, indexOfEdict(pthis->pev), iClipSize, iAnim, fDelay); -} - -bool CBasePlayerWeapon_DefaultShotgunReload(IReGameHook_CBasePlayerWeapon_DefaultShotgunReload *chain, CBasePlayerWeapon *pthis, int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1, const char *pszReloadSound2) -{ - auto original = [chain](int _pthis, int _iAnim, int _iStartAnim, float _fDelay, float _fStartDelay, const char *_pszReloadSound1, const char *_pszReloadSound2) - { - return chain->callNext(getPrivate(_pthis), _iAnim, _iStartAnim, _fDelay, _fStartDelay, _pszReloadSound1, _pszReloadSound2); - }; - - return callForward(RG_CBasePlayerWeapon_DefaultShotgunReload, original, indexOfEdict(pthis->pev), iAnim, iStartAnim, fDelay, fStartDelay, pszReloadSound1, pszReloadSound2); -} - int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver) { auto original = [chain](int _pObserver) @@ -899,19 +727,64 @@ void PM_AirMove(IReGameHook_PM_AirMove *chain, int playerIndex) callVoidForward(RG_PM_AirMove, original, playerIndex); } -void PM_LadderMove_AMXX(IReGameHook_PM_LadderMove *chain, physent_t *pLadder, int playerIndex) +void HandleMenu_ChooseAppearance(IReGameHook_HandleMenu_ChooseAppearance *chain, CBasePlayer *pPlayer, int slot) { - auto original = [chain](physent_t *_pLadder, int _playerIndex) + auto original = [chain](int _pPlayer, int _slot) { - chain->callNext(_pLadder); + chain->callNext(getPrivate(_pPlayer), _slot); }; - callVoidForward(RG_PM_LadderMove, original, pLadder, playerIndex); + callVoidForward(RG_HandleMenu_ChooseAppearance, original, indexOfEdict(pPlayer->pev), slot); } -void PM_LadderMove(IReGameHook_PM_LadderMove *chain, physent_t *pLadder) +BOOL HandleMenu_ChooseTeam(IReGameHook_HandleMenu_ChooseTeam *chain, CBasePlayer *pPlayer, int slot) { - PM_LadderMove_AMXX(chain, pLadder, pLadder->player + 1); + auto original = [chain](int _pPlayer, int _slot) + { + return chain->callNext(getPrivate(_pPlayer), _slot); + }; + + return callForward(RG_HandleMenu_ChooseTeam, original, indexOfEdict(pPlayer->pev), slot); +} + +void ShowMenu(IReGameHook_ShowMenu *chain, CBasePlayer *pPlayer, int bitsValidSlots, int nDisplayTime, BOOL fNeedMore, char *pszText) +{ + auto original = [chain](int _pPlayer, int _bitsValidSlots, int _nDisplayTime, BOOL _fNeedMore, char *_pszText) + { + chain->callNext(getPrivate(_pPlayer), _bitsValidSlots, _nDisplayTime, _fNeedMore, _pszText); + }; + + callVoidForward(RG_ShowMenu, original, indexOfEdict(pPlayer->pev), bitsValidSlots, nDisplayTime, fNeedMore, pszText); +} + +void ShowVGUIMenu(IReGameHook_ShowVGUIMenu *chain, CBasePlayer *pPlayer, int MenuType, int BitMask, char *szOldMenu) +{ + auto original = [chain](int _pPlayer, int _MenuType, int _BitMask, char *_szOldMenu) + { + chain->callNext(getPrivate(_pPlayer), _MenuType, _BitMask, _szOldMenu); + }; + + callVoidForward(RG_ShowVGUIMenu, original, indexOfEdict(pPlayer->pev), MenuType, BitMask, szOldMenu); +} + +bool BuyGunAmmo(IReGameHook_BuyGunAmmo *chain, CBasePlayer *player, CBasePlayerItem *weapon, bool bBlinkMoney) +{ + auto original = [chain](int _player, int _weapon, bool _bBlinkMoney) + { + return chain->callNext(getPrivate(_player), getPrivate(_weapon), _bBlinkMoney); + }; + + return callForward(RG_BuyGunAmmo, original, indexOfEdict(player->pev), indexOfEdict(weapon->pev), bBlinkMoney); +} + +CBaseEntity *BuyWeaponByWeaponID(IReGameHook_BuyWeaponByWeaponID *chain, CBasePlayer *pPlayer, WeaponIdType weaponID) +{ + auto original = [chain](int _pPlayer, WeaponIdType _weaponID) + { + return indexOfPDataAmx(chain->callNext(getPrivate(_pPlayer), _weaponID)); + }; + + return getPrivate(callForward(RG_BuyWeaponByWeaponID, original, indexOfEdict(pPlayer->pev), weaponID)); } BOOL CSGameRules_FShouldSwitchWeapon(IReGameHook_CSGameRules_FShouldSwitchWeapon *chain, CBasePlayer *pPlayer, CBasePlayerItem *pWeapon) @@ -1144,6 +1017,48 @@ void CSGameRules_OnRoundFreezeEnd(IReGameHook_CSGameRules_OnRoundFreezeEnd *chai callVoidForward(RG_CSGameRules_OnRoundFreezeEnd, original); } +void CBasePlayer_StartDeathCam(IReGameHook_CBasePlayer_StartDeathCam *chain, CBasePlayer *pthis) +{ + auto original = [chain](int _pthis) + { + return chain->callNext(getPrivate(_pthis)); + }; + + callVoidForward(RG_CBasePlayer_StartDeathCam, original, indexOfEdict(pthis->pev)); +} + +void CBasePlayer_SwitchTeam(IReGameHook_CBasePlayer_SwitchTeam *chain, CBasePlayer *pthis) +{ + auto original = [chain](int _pthis) + { + chain->callNext(getPrivate(_pthis)); + }; + + callVoidForward(RG_CBasePlayer_SwitchTeam, original, indexOfEdict(pthis->pev)); +} + +bool CBasePlayer_CanSwitchTeam(IReGameHook_CBasePlayer_CanSwitchTeam *chain, CBasePlayer *pthis, TeamName teamToSwap) +{ + auto original = [chain](int _pthis, TeamName _teamToSwap) + { + return chain->callNext(getPrivate(_pthis), _teamToSwap); + }; + + return callForward(RG_CBasePlayer_CanSwitchTeam, original, indexOfEdict(pthis->pev), teamToSwap); +} + +CGrenade *CBasePlayer_ThrowGrenade(IReGameHook_CBasePlayer_ThrowGrenade *chain, CBasePlayer *pthis, CBasePlayerWeapon *pWeapon, Vector &vecSrc, Vector &vecThrow, float time, unsigned short usEvent) +{ + Vector vecSrcCopy(vecSrc), vecThrowCopy(vecThrow); + + auto original = [chain, &vecSrcCopy, &vecThrowCopy](int _pthis, int _pWeapon, cell _vecSrc, cell _vecThrow, float _time, unsigned short _usEvent) + { + return indexOfPDataAmx(chain->callNext(getPrivate(_pthis), getPrivate(_pWeapon), vecSrcCopy, vecThrowCopy, _time, _usEvent)); + }; + + return getPrivate(callForward(RG_CBasePlayer_ThrowGrenade, original, indexOfEdict(pthis->pev), indexOfEdict(pWeapon->pev), getAmxVector(vecSrcCopy), getAmxVector(vecThrowCopy), time, usEvent)); +} + bool CSGameRules_CanPlayerHearPlayer(IReGameHook_CSGameRules_CanPlayerHearPlayer *chain, CBasePlayer *pListener, CBasePlayer *pSender) { auto original = [chain](int _pListener, int _pSender) @@ -1224,66 +1139,6 @@ void CGrenade_ExplodeBomb(IReGameHook_CGrenade_ExplodeBomb *chain, CGrenade *pth callVoidForward(RG_CGrenade_ExplodeBomb, original, indexOfEdict(pthis->pev), ptr, bitsDamageType); } -void HandleMenu_ChooseAppearance(IReGameHook_HandleMenu_ChooseAppearance *chain, CBasePlayer *pPlayer, int slot) -{ - auto original = [chain](int _pPlayer, int _slot) - { - chain->callNext(getPrivate(_pPlayer), _slot); - }; - - callVoidForward(RG_HandleMenu_ChooseAppearance, original, indexOfEdict(pPlayer->pev), slot); -} - -BOOL HandleMenu_ChooseTeam(IReGameHook_HandleMenu_ChooseTeam *chain, CBasePlayer *pPlayer, int slot) -{ - auto original = [chain](int _pPlayer, int _slot) - { - return chain->callNext(getPrivate(_pPlayer), _slot); - }; - - return callForward(RG_HandleMenu_ChooseTeam, original, indexOfEdict(pPlayer->pev), slot); -} - -void ShowMenu(IReGameHook_ShowMenu *chain, CBasePlayer *pPlayer, int bitsValidSlots, int nDisplayTime, BOOL fNeedMore, char *pszText) -{ - auto original = [chain](int _pPlayer, int _bitsValidSlots, int _nDisplayTime, BOOL _fNeedMore, char *_pszText) - { - chain->callNext(getPrivate(_pPlayer), _bitsValidSlots, _nDisplayTime, _fNeedMore, _pszText); - }; - - callVoidForward(RG_ShowMenu, original, indexOfEdict(pPlayer->pev), bitsValidSlots, nDisplayTime, fNeedMore, pszText); -} - -void ShowVGUIMenu(IReGameHook_ShowVGUIMenu *chain, CBasePlayer *pPlayer, int MenuType, int BitMask, char *szOldMenu) -{ - auto original = [chain](int _pPlayer, int _MenuType, int _BitMask, char *_szOldMenu) - { - chain->callNext(getPrivate(_pPlayer), _MenuType, _BitMask, _szOldMenu); - }; - - callVoidForward(RG_ShowVGUIMenu, original, indexOfEdict(pPlayer->pev), MenuType, BitMask, szOldMenu); -} - -bool BuyGunAmmo(IReGameHook_BuyGunAmmo *chain, CBasePlayer *player, CBasePlayerItem *weapon, bool bBlinkMoney) -{ - auto original = [chain](int _player, int _weapon, bool _bBlinkMoney) - { - return chain->callNext(getPrivate(_player), getPrivate(_weapon), _bBlinkMoney); - }; - - return callForward(RG_BuyGunAmmo, original, indexOfEdict(player->pev), indexOfEdict(weapon->pev), bBlinkMoney); -} - -CBaseEntity *BuyWeaponByWeaponID(IReGameHook_BuyWeaponByWeaponID *chain, CBasePlayer *pPlayer, WeaponIdType weaponID) -{ - auto original = [chain](int _pPlayer, WeaponIdType _weaponID) - { - return indexOfPDataAmx(chain->callNext(getPrivate(_pPlayer), _weaponID)); - }; - - return getPrivate(callForward(RG_BuyWeaponByWeaponID, original, indexOfEdict(pPlayer->pev), weaponID)); -} - CGrenade *ThrowHeGrenade(IReGameHook_ThrowHeGrenade *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time, int iTeam, unsigned short usEvent) { Vector vecStartCopy(vecStart), vecVelocityCopy(vecVelocity); @@ -1332,6 +1187,26 @@ CGrenade *PlantBomb(IReGameHook_PlantBomb *chain, entvars_t *pevOwner, Vector &v return getPrivate(callForward(RG_PlantBomb, original, indexOfEdictAmx(pevOwner), getAmxVector(vecStartCopy), getAmxVector(vecVelocityCopy))); } +void CBasePlayer_RemoveSpawnProtection(IReGameHook_CBasePlayer_RemoveSpawnProtection *chain, CBasePlayer *pthis) +{ + auto original = [chain](int _pthis) + { + return chain->callNext(getPrivate(_pthis)); + }; + + callVoidForward(RG_CBasePlayer_RemoveSpawnProtection, original, indexOfEdict(pthis->pev)); +} + +void CBasePlayer_SetSpawnProtection(IReGameHook_CBasePlayer_SetSpawnProtection *chain, CBasePlayer *pthis, float flProtectionTime) +{ + auto original = [chain](int _pthis, float _flProtectionTime) + { + return chain->callNext(getPrivate(_pthis), _flProtectionTime); + }; + + callVoidForward(RG_CBasePlayer_SetSpawnProtection, original, indexOfEdict(pthis->pev), flProtectionTime); +} + bool IsPenetrableEntity(IReGameHook_IsPenetrableEntity *chain, Vector &vecSrc, Vector &vecEnd, entvars_t *pevAttacker, edict_t *pHit) { Vector vecSrcCopy(vecSrc), vecEndCopy(vecEnd); @@ -1344,6 +1219,76 @@ bool IsPenetrableEntity(IReGameHook_IsPenetrableEntity *chain, Vector &vecSrc, V return callForward(RG_IsPenetrableEntity, original, getAmxVector(vecSrcCopy), getAmxVector(vecEndCopy), indexOfEdict(pevAttacker), indexOfEdict(pHit)); } +bool CBasePlayer_HintMessageEx(IReGameHook_CBasePlayer_HintMessageEx *chain, CBasePlayer *pthis, const char *pMessage, float duration, bool bDisplayIfPlayerDead, bool bOverride) +{ + auto original = [chain](int _pthis, const char *_pMessage, float _duration, bool _bDisplayIfPlayerDead, bool _bOverride) + { + return chain->callNext(getPrivate(_pthis), _pMessage, _duration, _bDisplayIfPlayerDead, _bOverride); + }; + + return callForward(RG_CBasePlayer_HintMessageEx, original, indexOfEdict(pthis->pev), pMessage, duration, bDisplayIfPlayerDead, bOverride); +} + +void CBasePlayer_UseEmpty(IReGameHook_CBasePlayer_UseEmpty *chain, CBasePlayer *pthis) +{ + auto original = [chain](int _pthis) + { + return chain->callNext(getPrivate(_pthis)); + }; + + callVoidForward(RG_CBasePlayer_UseEmpty, original, indexOfEdict(pthis->pev)); +} + +BOOL CBasePlayerWeapon_CanDeploy(IReGameHook_CBasePlayerWeapon_CanDeploy *chain, CBasePlayerWeapon *pthis) +{ + auto original = [chain](int _pthis) + { + return chain->callNext(getPrivate(_pthis)); + }; + + return callForward(RG_CBasePlayerWeapon_CanDeploy, original, indexOfEdict(pthis->pev)); +} + +BOOL CBasePlayerWeapon_DefaultDeploy(IReGameHook_CBasePlayerWeapon_DefaultDeploy *chain, CBasePlayerWeapon *pthis, char *szViewModel, char *szWeaponModel, int iAnim, char *szAnimExt, int skiplocal) +{ + auto original = [chain](int _pthis, char *_szViewModel, char *_szWeaponModel, int _iAnim, char *_szAnimExt, int _skiplocal) + { + return chain->callNext(getPrivate(_pthis), _szViewModel, _szWeaponModel, _iAnim, _szAnimExt, _skiplocal); + }; + + return callForward(RG_CBasePlayerWeapon_DefaultDeploy, original, indexOfEdict(pthis->pev), szViewModel, szWeaponModel, iAnim, szAnimExt, skiplocal); +} + +int CBasePlayerWeapon_DefaultReload(IReGameHook_CBasePlayerWeapon_DefaultReload *chain, CBasePlayerWeapon *pthis, int iClipSize, int iAnim, float fDelay) +{ + auto original = [chain](int _pthis, int _iClipSize, int _iAnim, float _fDelay) + { + return chain->callNext(getPrivate(_pthis), _iClipSize, _iAnim, _fDelay); + }; + + return callForward(RG_CBasePlayerWeapon_DefaultReload, original, indexOfEdict(pthis->pev), iClipSize, iAnim, fDelay); +} + +bool CBasePlayerWeapon_DefaultShotgunReload(IReGameHook_CBasePlayerWeapon_DefaultShotgunReload *chain, CBasePlayerWeapon *pthis, int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1, const char *pszReloadSound2) +{ + auto original = [chain](int _pthis, int _iAnim, int _iStartAnim, float _fDelay, float _fStartDelay, const char *_pszReloadSound1, const char *_pszReloadSound2) + { + return chain->callNext(getPrivate(_pthis), _iAnim, _iStartAnim, _fDelay, _fStartDelay, _pszReloadSound1, _pszReloadSound2); + }; + + return callForward(RG_CBasePlayerWeapon_DefaultShotgunReload, original, indexOfEdict(pthis->pev), iAnim, iStartAnim, fDelay, fStartDelay, pszReloadSound1, pszReloadSound2); +} + +void CBasePlayer_DropIdlePlayer(IReGameHook_CBasePlayer_DropIdlePlayer *chain, CBasePlayer *pthis, const char *reason) +{ + auto original = [chain](int _pthis, const char *_reason) + { + return chain->callNext(getPrivate(_pthis), _reason); + }; + + callVoidForward(RG_CBasePlayer_DropIdlePlayer, original, indexOfEdict(pthis->pev), reason); +} + CWeaponBox *CreateWeaponBox(IReGameHook_CreateWeaponBox *chain, CBasePlayerItem *pItem, CBasePlayer *pPlayerOwner, const char *modelName, Vector &origin, Vector &angles, Vector &velocity, float lifeTime, bool packAmmo) { Vector vecOriginCopy(origin), vecAnglesCopy(angles), vecVelocityCopy(velocity); @@ -1458,6 +1403,64 @@ void CBasePlayer_Observer_SetMode(IReGameHook_CBasePlayer_Observer_SetMode *chai callVoidForward(RG_CBasePlayer_Observer_SetMode, original, indexOfEdict(pthis->pev), iMode); } +void CBasePlayer_Observer_FindNextPlayer(IReGameHook_CBasePlayer_Observer_FindNextPlayer *chain, CBasePlayer *pthis, bool bReverse, const char *name) +{ + auto original = [chain](int _pthis, bool _bReverse, const char *_name) + { + chain->callNext(getPrivate(_pthis), _bReverse, _name); + }; + + callVoidForward(RG_CBasePlayer_Observer_FindNextPlayer, original, indexOfEdict(pthis->pev), bReverse, name); +} + +void CBasePlayer_Pain(IReGameHook_CBasePlayer_Pain *chain, CBasePlayer *pthis, int iLastHitGroup, bool bHasArmour) +{ + auto original = [chain](int _pthis, int _iLastHitGroup, bool _bHasArmour) + { + return chain->callNext(getPrivate(_pthis), _iLastHitGroup, _bHasArmour); + }; + + callVoidForward(RG_CBasePlayer_Pain, original, indexOfEdict(pthis->pev), iLastHitGroup, bHasArmour); +} + +void CBasePlayer_DeathSound(IReGameHook_CBasePlayer_DeathSound *chain, CBasePlayer *pthis) +{ + auto original = [chain](int _pthis) + { + return chain->callNext(getPrivate(_pthis)); + }; + + callVoidForward(RG_CBasePlayer_DeathSound, original, indexOfEdict(pthis->pev)); +} + +void CBasePlayer_JoiningThink(IReGameHook_CBasePlayer_JoiningThink *chain, CBasePlayer *pthis) +{ + auto original = [chain](int _pthis) + { + return chain->callNext(getPrivate(_pthis)); + }; + + callVoidForward(RG_CBasePlayer_JoiningThink, original, indexOfEdict(pthis->pev)); +} + +void PM_LadderMove_AMXX(IReGameHook_PM_LadderMove *chain, physent_t *pLadder, int playerIndex) +{ + auto original = [chain](physent_t *_pLadder, int _playerIndex) + { + chain->callNext(_pLadder); + }; + + callVoidForward(RG_PM_LadderMove, original, pLadder, playerIndex); +} + +void PM_LadderMove(IReGameHook_PM_LadderMove *chain, physent_t *pLadder) +{ + PM_LadderMove_AMXX(chain, pLadder, pLadder->player + 1); +} + +/* +* VTC functions +*/ int g_iClientStartSpeak, g_iClientStopSpeak; void OnClientStartSpeak(size_t clientIndex) diff --git a/reapi/src/hook_callback.h b/reapi/src/hook_callback.h index ee8fd3d..4945702 100644 --- a/reapi/src/hook_callback.h +++ b/reapi/src/hook_callback.h @@ -329,7 +329,9 @@ struct hookdata_t A m_args; }; -// rehlds functions +/* +* ReHLDS functions +*/ void SV_StartSound(IRehldsHook_SV_StartSound *chain, int recipients, edict_t *entity, int channel, const char *sample, int volume, float attenuation, int fFlags, int pitch); void SV_DropClient(IRehldsHook_SV_DropClient *chain, IGameClient *cl, bool crash, const char *fmt); void SV_ActivateServer(IRehldsHook_SV_ActivateServer *chain, int runPhysics); @@ -383,44 +385,9 @@ void ED_Free(IRehldsHook_ED_Free* chain, edict_t *entity); void SV_ClientPrintf(IRehldsHook_SV_ClientPrintf* chain, const char *string); bool SV_AllowPhysent(IRehldsHook_SV_AllowPhysent* chain, edict_t* check, edict_t* sv_player); -// regamedll functions -int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver); -void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector& color); -void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, Vector& vecSrc, Vector& vecSpot, TraceResult *ptr); -bool RoundEnd(IReGameHook_RoundEnd *chain, int winStatus, ScenarioEventEndRound event, float tmDelay); - -struct Move_args_t -{ - Move_args_t(playermove_t *_ppmove, int _server) : ppmove(_ppmove), server(_server) {} - - playermove_t *ppmove; - int server; -}; - -using Move_t = hookdata_t; -void PM_Move_AMXX(Move_t *data, int playerIndex); -void PM_Move(IReGameHook_PM_Move *chain, playermove_t *ppmove, int server); - -void PM_AirMove(IReGameHook_PM_AirMove *chain, int playerIndex); -void PM_LadderMove_AMXX(IReGameHook_PM_LadderMove *chain, physent_t *pLadder, int playerIndex); -void PM_LadderMove(IReGameHook_PM_LadderMove *chain, physent_t *pLadder); - -void HandleMenu_ChooseAppearance(IReGameHook_HandleMenu_ChooseAppearance *chain, CBasePlayer *pPlayer, int slot); -BOOL HandleMenu_ChooseTeam(IReGameHook_HandleMenu_ChooseTeam *chain, CBasePlayer *pPlayer, int slot); -void ShowMenu(IReGameHook_ShowMenu *chain, CBasePlayer *pPlayer, int bitsValidSlots, int nDisplayTime, BOOL fNeedMore, char *pszText); -void ShowVGUIMenu(IReGameHook_ShowVGUIMenu *chain, CBasePlayer *pPlayer, int MenuType, int BitMask, char *szOldMenu); -bool BuyGunAmmo(IReGameHook_BuyGunAmmo *chain, CBasePlayer *player, CBasePlayerItem *weapon, bool bBlinkMoney); -CBaseEntity *BuyWeaponByWeaponID(IReGameHook_BuyWeaponByWeaponID *chain, CBasePlayer *pPlayer, WeaponIdType weaponID); -CGrenade *ThrowHeGrenade(IReGameHook_ThrowHeGrenade *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time, int iTeam, unsigned short usEvent); -CGrenade *ThrowFlashbang(IReGameHook_ThrowFlashbang *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time); -CGrenade *ThrowSmokeGrenade(IReGameHook_ThrowSmokeGrenade *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time, unsigned short usEvent); -CGrenade *PlantBomb(IReGameHook_PlantBomb *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity); -bool IsPenetrableEntity(IReGameHook_IsPenetrableEntity *chain, Vector &vecSrc, Vector &vecEnd, entvars_t *pevAttacker, edict_t *pHit); -CWeaponBox *CreateWeaponBox(IReGameHook_CreateWeaponBox *chain, CBasePlayerItem *pItem, CBasePlayer *pPlayerOwner, const char *modelName, Vector &origin, Vector &angles, Vector &velocity, float lifeTime, bool packAmmo); -CGib *SpawnHeadGib(IReGameHook_SpawnHeadGib *chain, entvars_t *pevVictim); -void SpawnRandomGibs(IReGameHook_SpawnRandomGibs *chain, entvars_t *pevVictim, int cGibs, int human); - -// regamedll functions - player +/* +* ReGameDLL functions +*/ void CBasePlayer_Spawn(IReGameHook_CBasePlayer_Spawn *chain, CBasePlayer *pthis); void CBasePlayer_Precache(IReGameHook_CBasePlayer_Precache *chain, CBasePlayer *pthis); int CBasePlayer_ObjectCaps(IReGameHook_CBasePlayer_ObjectCaps *chain, CBasePlayer *pthis); @@ -445,7 +412,6 @@ void CBasePlayer_RoundRespawn(IReGameHook_CBasePlayer_RoundRespawn *chain, CBase void CBasePlayer_Blind(IReGameHook_CBasePlayer_Blind *chain, CBasePlayer *pthis, float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha); CBasePlayer *CBasePlayer_Observer_IsValidTarget(IReGameHook_CBasePlayer_Observer_IsValidTarget *chain, CBasePlayer *pthis, int iPlayerIndex, bool bSameTeam); -void CBasePlayer_Observer_FindNextPlayer(IReGameHook_CBasePlayer_Observer_FindNextPlayer *chain, CBasePlayer *pthis, bool bReverse, const char *name); void CBasePlayer_SetAnimation(IReGameHook_CBasePlayer_SetAnimation *chain, CBasePlayer *pthis, PLAYER_ANIM playerAnim); void CBasePlayer_GiveDefaultItems(IReGameHook_CBasePlayer_GiveDefaultItems *chain, CBasePlayer *pthis); CBaseEntity *CBasePlayer_GiveNamedItem(IReGameHook_CBasePlayer_GiveNamedItem *chain, CBasePlayer *pthis, const char *pszName); @@ -463,26 +429,33 @@ void CBasePlayer_MakeVIP(IReGameHook_CBasePlayer_MakeVIP *chain, CBasePlayer *pt bool CBasePlayer_MakeBomber(IReGameHook_CBasePlayer_MakeBomber *chain, CBasePlayer *pthis); void CBasePlayer_StartObserver(IReGameHook_CBasePlayer_StartObserver *chain, CBasePlayer *pthis, Vector &vecPosition, Vector &vecViewAngle); bool CBasePlayer_GetIntoGame(IReGameHook_CBasePlayer_GetIntoGame *chain, CBasePlayer *pthis); -void CBasePlayer_StartDeathCam(IReGameHook_CBasePlayer_StartDeathCam *chain, CBasePlayer *pthis); -void CBasePlayer_SwitchTeam(IReGameHook_CBasePlayer_SwitchTeam *chain, CBasePlayer *pthis); -bool CBasePlayer_CanSwitchTeam(IReGameHook_CBasePlayer_CanSwitchTeam *chain, CBasePlayer *pthis, TeamName teamToSwap); -CGrenade *CBasePlayer_ThrowGrenade(IReGameHook_CBasePlayer_ThrowGrenade *chain, CBasePlayer *pthis, CBasePlayerWeapon *pWeapon, Vector &vecSrc, Vector &vecThrow, float time, unsigned short usEvent); -void CBasePlayer_SetSpawnProtection(IReGameHook_CBasePlayer_SetSpawnProtection *chain, CBasePlayer *pthis, float flProtectionTime); -void CBasePlayer_RemoveSpawnProtection(IReGameHook_CBasePlayer_RemoveSpawnProtection *chain, CBasePlayer *pthis); -bool CBasePlayer_HintMessageEx(IReGameHook_CBasePlayer_HintMessageEx *chain, CBasePlayer *pthis, const char *pMessage, float duration, bool bDisplayIfPlayerDead, bool bOverride); -void CBasePlayer_UseEmpty(IReGameHook_CBasePlayer_UseEmpty *chain, CBasePlayer *pthis); -void CBasePlayer_DropIdlePlayer(IReGameHook_CBasePlayer_DropIdlePlayer *chain, CBasePlayer *pthis, const char *reason); -void CBasePlayer_Observer_SetMode(IReGameHook_CBasePlayer_Observer_SetMode *chain, CBasePlayer *pthis, int iMode); -void CBasePlayer_Pain(IReGameHook_CBasePlayer_Pain *chain, CBasePlayer *pthis, int iLastHitGroup, bool bHasArmour); -void CBasePlayer_DeathSound(IReGameHook_CBasePlayer_DeathSound *chain, CBasePlayer *pthis); -void CBasePlayer_JoiningThink(IReGameHook_CBasePlayer_JoiningThink *chain, CBasePlayer *pthis); void CBaseAnimating_ResetSequenceInfo(IReGameHook_CBaseAnimating_ResetSequenceInfo *chain, CBaseAnimating *pthis); -BOOL CBasePlayerWeapon_CanDeploy(IReGameHook_CBasePlayerWeapon_CanDeploy *chain, CBasePlayerWeapon *pthis); -BOOL CBasePlayerWeapon_DefaultDeploy(IReGameHook_CBasePlayerWeapon_DefaultDeploy *chain, CBasePlayerWeapon *pthis, char *szViewModel, char *szWeaponModel, int iAnim, char *szAnimExt, int skiplocal); -int CBasePlayerWeapon_DefaultReload(IReGameHook_CBasePlayerWeapon_DefaultReload *chain, CBasePlayerWeapon *pthis, int iClipSize, int iAnim, float fDelay); -bool CBasePlayerWeapon_DefaultShotgunReload(IReGameHook_CBasePlayerWeapon_DefaultShotgunReload *chain, CBasePlayerWeapon *pthis, int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1, const char *pszReloadSound2); +int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver); +void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector& color); +void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, Vector& vecSrc, Vector& vecSpot, TraceResult *ptr); +bool RoundEnd(IReGameHook_RoundEnd *chain, int winStatus, ScenarioEventEndRound event, float tmDelay); +// TODO: pending InstallGameRules +// TODO: pending PM_Init +struct Move_args_t +{ + Move_args_t(playermove_t *_ppmove, int _server) : ppmove(_ppmove), server(_server) {} + + playermove_t *ppmove; + int server; +}; +using Move_t = hookdata_t; +void PM_Move_AMXX(Move_t *data, int playerIndex); +void PM_Move(IReGameHook_PM_Move *chain, playermove_t *ppmove, int server); +void PM_AirMove(IReGameHook_PM_AirMove *chain, int playerIndex); +void HandleMenu_ChooseAppearance(IReGameHook_HandleMenu_ChooseAppearance *chain, CBasePlayer *pPlayer, int slot); +BOOL HandleMenu_ChooseTeam(IReGameHook_HandleMenu_ChooseTeam *chain, CBasePlayer *pPlayer, int slot); +void ShowMenu(IReGameHook_ShowMenu *chain, CBasePlayer *pPlayer, int bitsValidSlots, int nDisplayTime, BOOL fNeedMore, char *pszText); +void ShowVGUIMenu(IReGameHook_ShowVGUIMenu *chain, CBasePlayer *pPlayer, int MenuType, int BitMask, char *szOldMenu); +bool BuyGunAmmo(IReGameHook_BuyGunAmmo *chain, CBasePlayer *player, CBasePlayerItem *weapon, bool bBlinkMoney); +CBaseEntity *BuyWeaponByWeaponID(IReGameHook_BuyWeaponByWeaponID *chain, CBasePlayer *pPlayer, WeaponIdType weaponID); +// TODO: pending InternalCommand BOOL CSGameRules_FShouldSwitchWeapon(IReGameHook_CSGameRules_FShouldSwitchWeapon *chain, CBasePlayer *pPlayer, CBasePlayerItem *pWeapon); BOOL CSGameRules_GetNextBestWeapon(IReGameHook_CSGameRules_GetNextBestWeapon *chain, CBasePlayer *pPlayer, CBasePlayerItem *pCurrentWeapon); @@ -507,33 +480,69 @@ void CSGameRules_ChangeLevel(IReGameHook_CSGameRules_ChangeLevel *chain); void CSGameRules_GoToIntermission(IReGameHook_CSGameRules_GoToIntermission *chain); void CSGameRules_BalanceTeams(IReGameHook_CSGameRules_BalanceTeams *chain); void CSGameRules_OnRoundFreezeEnd(IReGameHook_CSGameRules_OnRoundFreezeEnd *chain); +// TODO: pending PM_UpdateStepSound +void CBasePlayer_StartDeathCam(IReGameHook_CBasePlayer_StartDeathCam *chain, CBasePlayer *pthis); +void CBasePlayer_SwitchTeam(IReGameHook_CBasePlayer_SwitchTeam *chain, CBasePlayer *pthis); +bool CBasePlayer_CanSwitchTeam(IReGameHook_CBasePlayer_CanSwitchTeam *chain, CBasePlayer *pthis, TeamName teamToSwap); +CGrenade *CBasePlayer_ThrowGrenade(IReGameHook_CBasePlayer_ThrowGrenade *chain, CBasePlayer *pthis, CBasePlayerWeapon *pWeapon, Vector &vecSrc, Vector &vecThrow, float time, unsigned short usEvent); bool CSGameRules_CanPlayerHearPlayer(IReGameHook_CSGameRules_CanPlayerHearPlayer *chain, CBasePlayer *pListener, CBasePlayer *pSender); - void CWeaponBox_SetModel(IReGameHook_CWeaponBox_SetModel *chain, CWeaponBox *pthis, const char *pszModelName); - void CGrenade_DefuseBombStart(IReGameHook_CGrenade_DefuseBombStart *chain, CGrenade *pthis, CBasePlayer *pPlayer); void CGrenade_DefuseBombEnd(IReGameHook_CGrenade_DefuseBombEnd *chain, CGrenade *pthis, CBasePlayer *pPlayer, bool bDefused); void CGrenade_ExplodeHeGrenade(IReGameHook_CGrenade_ExplodeHeGrenade *chain, CGrenade *pthis, TraceResult *ptr, int bitsDamageType); void CGrenade_ExplodeFlashbang(IReGameHook_CGrenade_ExplodeFlashbang *chain, CGrenade *pthis, TraceResult *ptr, int bitsDamageType); void CGrenade_ExplodeSmokeGrenade(IReGameHook_CGrenade_ExplodeSmokeGrenade *chain, CGrenade *pthis); void CGrenade_ExplodeBomb(IReGameHook_CGrenade_ExplodeBomb *chain, CGrenade *pthis, TraceResult *ptr, int bitsDamageType); +CGrenade *ThrowHeGrenade(IReGameHook_ThrowHeGrenade *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time, int iTeam, unsigned short usEvent); +CGrenade *ThrowFlashbang(IReGameHook_ThrowFlashbang *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time); +CGrenade *ThrowSmokeGrenade(IReGameHook_ThrowSmokeGrenade *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity, float time, unsigned short usEvent); +CGrenade *PlantBomb(IReGameHook_PlantBomb *chain, entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity); +void CBasePlayer_RemoveSpawnProtection(IReGameHook_CBasePlayer_RemoveSpawnProtection *chain, CBasePlayer *pthis); +void CBasePlayer_SetSpawnProtection(IReGameHook_CBasePlayer_SetSpawnProtection *chain, CBasePlayer *pthis, float flProtectionTime); +bool IsPenetrableEntity(IReGameHook_IsPenetrableEntity *chain, Vector &vecSrc, Vector &vecEnd, entvars_t *pevAttacker, edict_t *pHit); +bool CBasePlayer_HintMessageEx(IReGameHook_CBasePlayer_HintMessageEx *chain, CBasePlayer *pthis, const char *pMessage, float duration, bool bDisplayIfPlayerDead, bool bOverride); +void CBasePlayer_UseEmpty(IReGameHook_CBasePlayer_UseEmpty *chain, CBasePlayer *pthis); +BOOL CBasePlayerWeapon_CanDeploy(IReGameHook_CBasePlayerWeapon_CanDeploy *chain, CBasePlayerWeapon *pthis); +BOOL CBasePlayerWeapon_DefaultDeploy(IReGameHook_CBasePlayerWeapon_DefaultDeploy *chain, CBasePlayerWeapon *pthis, char *szViewModel, char *szWeaponModel, int iAnim, char *szAnimExt, int skiplocal); +int CBasePlayerWeapon_DefaultReload(IReGameHook_CBasePlayerWeapon_DefaultReload *chain, CBasePlayerWeapon *pthis, int iClipSize, int iAnim, float fDelay); +bool CBasePlayerWeapon_DefaultShotgunReload(IReGameHook_CBasePlayerWeapon_DefaultShotgunReload *chain, CBasePlayerWeapon *pthis, int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1, const char *pszReloadSound2); +void CBasePlayer_DropIdlePlayer(IReGameHook_CBasePlayer_DropIdlePlayer *chain, CBasePlayer *pthis, const char *reason); +CWeaponBox *CreateWeaponBox(IReGameHook_CreateWeaponBox *chain, CBasePlayerItem *pItem, CBasePlayer *pPlayerOwner, const char *modelName, Vector &origin, Vector &angles, Vector &velocity, float lifeTime, bool packAmmo); -// regamedll functions - gib +CGib *SpawnHeadGib(IReGameHook_SpawnHeadGib *chain, entvars_t *pevVictim); +void SpawnRandomGibs(IReGameHook_SpawnRandomGibs *chain, entvars_t *pevVictim, int cGibs, int human); void CGib_Spawn(IReGameHook_CGib_Spawn *chain, CGib *pthis, const char *szGibModel); void CGib_BounceGibTouch(IReGameHook_CGib_BounceGibTouch *chain, CGib *pthis, CBaseEntity *pOther); void CGib_WaitTillLand(IReGameHook_CGib_WaitTillLand *chain, CGib *pthis); -// regamedll functions - cbaseentity void CBaseEntity_FireBullets(IReGameHook_CBaseEntity_FireBullets *chain, CBaseEntity *pEntity, ULONG cShots, Vector &vecSrc, Vector &vecDirShooting, Vector &vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker); void CBaseEntity_FireBuckshots(IReGameHook_CBaseEntity_FireBuckshots *chain, CBaseEntity *pEntity, ULONG cShots, Vector &vecSrc, Vector &vecDirShooting, Vector &vecSpread, float flDistance, int iTracerFreq, int iDamage, entvars_t *pevAttacker); Vector &CBaseEntity_FireBullets3(IReGameHook_CBaseEntity_FireBullets3 *chain, CBaseEntity *pEntity, Vector &vecSrc, Vector &vecDirShooting, float vecSpread, float flDistance, int iPenetration, int iBulletType, int iDamage, float flRangeModifier, entvars_t *pevAttacker, bool bPistol, int shared_rand); +void CBasePlayer_Observer_SetMode(IReGameHook_CBasePlayer_Observer_SetMode *chain, CBasePlayer *pthis, int iMode); +void CBasePlayer_Observer_FindNextPlayer(IReGameHook_CBasePlayer_Observer_FindNextPlayer *chain, CBasePlayer *pthis, bool bReverse, const char *name); + +void CBasePlayer_Pain(IReGameHook_CBasePlayer_Pain *chain, CBasePlayer *pthis, int iLastHitGroup, bool bHasArmour); +void CBasePlayer_DeathSound(IReGameHook_CBasePlayer_DeathSound *chain, CBasePlayer *pthis); +void CBasePlayer_JoiningThink(IReGameHook_CBasePlayer_JoiningThink *chain, CBasePlayer *pthis); + +// TODO: pending FreeGameRules +void PM_LadderMove_AMXX(IReGameHook_PM_LadderMove *chain, physent_t *pLadder, int playerIndex); +void PM_LadderMove(IReGameHook_PM_LadderMove *chain, physent_t *pLadder); + +/* +* VTC functions +*/ extern int g_iClientStartSpeak; extern int g_iClientStopSpeak; void OnClientStartSpeak(size_t clientIndex); void OnClientStopSpeak(size_t clientIndex); +/* +* ReChecker functions +*/ + using CmdExec_t = hookdata_t; void CmdExec_AMXX(CmdExec_t *chain, IGameClient *cl, const char *filename, char *cmd, uint32 responseHash); void CmdExec(IRecheckerHook_CmdExec *chain, IGameClient *cl, IResourceBuffer *res, char *cmd, uint32 responseHash); diff --git a/reapi/src/member_list.cpp b/reapi/src/member_list.cpp index 7bfca90..becae61 100644 --- a/reapi/src/member_list.cpp +++ b/reapi/src/member_list.cpp @@ -760,6 +760,8 @@ member_t memberlist_csplayer[] = { CSPL_MEMBERS(m_bGameForcingRespawn), CSPL_MEMBERS(m_bAutoBunnyHopping), CSPL_MEMBERS(m_bMegaBunnyJumping), + CSPL_MEMBERS(m_bPlantC4Anywhere), + CSPL_MEMBERS(m_bSpawnProtectionEffects), }; member_t memberlist_baseitem[] = { @@ -1002,6 +1004,7 @@ member_t memberlist_knife[] = { KNIFE_MEMBERS(flSwingBaseDamage_Fast), KNIFE_MEMBERS(flStabDistance), KNIFE_MEMBERS(flSwingDistance), + KNIFE_MEMBERS(flBackStabMultiplier), }; member_t memberlist_p90[] = { diff --git a/reapi/src/member_list.h b/reapi/src/member_list.h index b294785..30c9908 100644 --- a/reapi/src/member_list.h +++ b/reapi/src/member_list.h @@ -749,6 +749,8 @@ enum CSPlayer_Members m_bGameForcingRespawn, m_bAutoBunnyHopping, m_bMegaBunnyJumping, + m_bPlantC4Anywhere, + m_bSpawnProtectionEffects, }; enum CBasePlayerItem_Members @@ -1023,6 +1025,7 @@ enum CKnife_Members m_Knife_flSwingBaseDamage_Fast, m_Knife_flStabDistance, m_Knife_flSwingDistance, + m_Knife_flBackStabMultiplier, }; enum CP90_Members