diff --git a/regamedll/dlls/client.cpp b/regamedll/dlls/client.cpp index 7ac4890e..64076629 100644 --- a/regamedll/dlls/client.cpp +++ b/regamedll/dlls/client.cpp @@ -1369,7 +1369,9 @@ void BuyWeaponByWeaponID(CBasePlayer *pPlayer, WeaponIdType weaponID) } } -void HandleMenu_ChooseAppearance(CBasePlayer *player, int slot) +LINK_HOOK_VOID_CHAIN(HandleMenu_ChooseAppearance, (CBasePlayer *player, int slot), player, slot); + +void __API_HOOK(HandleMenu_ChooseAppearance)(CBasePlayer *player, int slot) { int numSkins = g_bIsCzeroGame ? CZ_NUM_SKIN : CS_NUM_SKIN; @@ -1524,9 +1526,11 @@ void HandleMenu_ChooseAppearance(CBasePlayer *player, int slot) } } +LINK_HOOK_CHAIN(BOOL, HandleMenu_ChooseTeam, (CBasePlayer *player, int slot), player, slot); + // returns true if the selection has been handled and the player's menu // can be closed...false if the menu should be displayed again -BOOL HandleMenu_ChooseTeam(CBasePlayer *player, int slot) +BOOL __API_HOOK(HandleMenu_ChooseTeam)(CBasePlayer *player, int slot) { int oldTeam; char *szOldTeam; diff --git a/regamedll/dlls/client.h b/regamedll/dlls/client.h index 9c46ad0e..39ca83c9 100644 --- a/regamedll/dlls/client.h +++ b/regamedll/dlls/client.h @@ -141,7 +141,9 @@ void BuyRifle(CBasePlayer *pPlayer, int iSlot); void BuyMachineGun(CBasePlayer *pPlayer, int iSlot); void BuyItem(CBasePlayer *pPlayer, int iSlot); void HandleMenu_ChooseAppearance(CBasePlayer *player, int slot); +void HandleMenu_ChooseAppearance_(CBasePlayer *player, int slot); BOOL HandleMenu_ChooseTeam(CBasePlayer *player, int slot); +BOOL HandleMenu_ChooseTeam_(CBasePlayer *player, int slot); void Radio1(CBasePlayer *player, int slot); void Radio2(CBasePlayer *player, int slot); void Radio3(CBasePlayer *player, int slot); diff --git a/regamedll/extra/cssdk/dlls/regamedll_api.h b/regamedll/extra/cssdk/dlls/regamedll_api.h index 6460c0c0..4a9ec9c9 100644 --- a/regamedll/extra/cssdk/dlls/regamedll_api.h +++ b/regamedll/extra/cssdk/dlls/regamedll_api.h @@ -194,6 +194,14 @@ typedef IVoidHookChainRegistry IReGameHookRegistry_P typedef IVoidHookChain IReGameHook_PM_AirMove; typedef IVoidHookChainRegistry IReGameHookRegistry_PM_AirMove; +// HandleMenu_ChooseAppearance hook +typedef IVoidHookChain IReGameHook_HandleMenu_ChooseAppearance; +typedef IVoidHookChainRegistry IReGameHookRegistry_HandleMenu_ChooseAppearance; + +// HandleMenu_ChooseTeam hook +typedef IHookChain IReGameHook_HandleMenu_ChooseTeam; +typedef IHookChainRegistry IReGameHookRegistry_HandleMenu_ChooseTeam; + // CHalfLifeMultiplay::FShouldSwitchWeapon hook typedef IHookChain IReGameHook_CSGameRules_FShouldSwitchWeapon; typedef IHookChainRegistry IReGameHookRegistry_CSGameRules_FShouldSwitchWeapon; @@ -326,6 +334,8 @@ public: virtual IReGameHookRegistry_PM_Init* PM_Init() = 0; virtual IReGameHookRegistry_PM_Move* PM_Move() = 0; virtual IReGameHookRegistry_PM_AirMove* PM_AirMove() = 0; + virtual IReGameHookRegistry_HandleMenu_ChooseAppearance* HandleMenu_ChooseAppearance() = 0; + virtual IReGameHookRegistry_HandleMenu_ChooseTeam* HandleMenu_ChooseTeam() = 0; virtual IReGameHookRegistry_CSGameRules_FShouldSwitchWeapon* CSGameRules_FShouldSwitchWeapon() = 0; virtual IReGameHookRegistry_CSGameRules_GetNextBestWeapon* CSGameRules_GetNextBestWeapon() = 0; diff --git a/regamedll/public/regamedll/regamedll_api.h b/regamedll/public/regamedll/regamedll_api.h index 6460c0c0..4a9ec9c9 100644 --- a/regamedll/public/regamedll/regamedll_api.h +++ b/regamedll/public/regamedll/regamedll_api.h @@ -194,6 +194,14 @@ typedef IVoidHookChainRegistry IReGameHookRegistry_P typedef IVoidHookChain IReGameHook_PM_AirMove; typedef IVoidHookChainRegistry IReGameHookRegistry_PM_AirMove; +// HandleMenu_ChooseAppearance hook +typedef IVoidHookChain IReGameHook_HandleMenu_ChooseAppearance; +typedef IVoidHookChainRegistry IReGameHookRegistry_HandleMenu_ChooseAppearance; + +// HandleMenu_ChooseTeam hook +typedef IHookChain IReGameHook_HandleMenu_ChooseTeam; +typedef IHookChainRegistry IReGameHookRegistry_HandleMenu_ChooseTeam; + // CHalfLifeMultiplay::FShouldSwitchWeapon hook typedef IHookChain IReGameHook_CSGameRules_FShouldSwitchWeapon; typedef IHookChainRegistry IReGameHookRegistry_CSGameRules_FShouldSwitchWeapon; @@ -326,6 +334,8 @@ public: virtual IReGameHookRegistry_PM_Init* PM_Init() = 0; virtual IReGameHookRegistry_PM_Move* PM_Move() = 0; virtual IReGameHookRegistry_PM_AirMove* PM_AirMove() = 0; + virtual IReGameHookRegistry_HandleMenu_ChooseAppearance* HandleMenu_ChooseAppearance() = 0; + virtual IReGameHookRegistry_HandleMenu_ChooseTeam* HandleMenu_ChooseTeam() = 0; virtual IReGameHookRegistry_CSGameRules_FShouldSwitchWeapon* CSGameRules_FShouldSwitchWeapon() = 0; virtual IReGameHookRegistry_CSGameRules_GetNextBestWeapon* CSGameRules_GetNextBestWeapon() = 0; diff --git a/regamedll/regamedll/regamedll_api_impl.cpp b/regamedll/regamedll/regamedll_api_impl.cpp index db85b785..b6a32a2c 100644 --- a/regamedll/regamedll/regamedll_api_impl.cpp +++ b/regamedll/regamedll/regamedll_api_impl.cpp @@ -91,6 +91,8 @@ IReGameHookRegistry_InstallGameRules* CReGameHookchains::InstallGameRules() { re IReGameHookRegistry_PM_Init* CReGameHookchains::PM_Init() { return &m_PM_Init; } IReGameHookRegistry_PM_Move* CReGameHookchains::PM_Move() { return &m_PM_Move; } IReGameHookRegistry_PM_AirMove* CReGameHookchains::PM_AirMove() { return &m_PM_AirMove; } +IReGameHookRegistry_HandleMenu_ChooseAppearance* CReGameHookchains::HandleMenu_ChooseAppearance() { return &m_HandleMenu_ChooseAppearance; } +IReGameHookRegistry_HandleMenu_ChooseTeam* CReGameHookchains::HandleMenu_ChooseTeam() { return &m_HandleMenu_ChooseTeam; } IReGameHookRegistry_CSGameRules_FShouldSwitchWeapon* CReGameHookchains::CSGameRules_FShouldSwitchWeapon() { return &m_CSGameRules_FShouldSwitchWeapon; } IReGameHookRegistry_CSGameRules_GetNextBestWeapon* CReGameHookchains::CSGameRules_GetNextBestWeapon() { return &m_CSGameRules_GetNextBestWeapon; } diff --git a/regamedll/regamedll/regamedll_api_impl.h b/regamedll/regamedll/regamedll_api_impl.h index c401220c..885a9ebc 100644 --- a/regamedll/regamedll/regamedll_api_impl.h +++ b/regamedll/regamedll/regamedll_api_impl.h @@ -188,6 +188,14 @@ typedef IVoidHookChainRegistryImpl CReGameHookRegist typedef IVoidHookChainImpl CReGameHook_PM_AirMove; typedef IVoidHookChainRegistryImpl CReGameHookRegistry_PM_AirMove; +// HandleMenu_ChooseAppearance hook +typedef IVoidHookChainImpl CReGameHook_HandleMenu_ChooseAppearance; +typedef IVoidHookChainRegistryImpl CReGameHookRegistry_HandleMenu_ChooseAppearance; + +// HandleMenu_ChooseTeam hook +typedef IHookChainImpl CReGameHook_HandleMenu_ChooseTeam; +typedef IHookChainRegistryImpl CReGameHookRegistry_HandleMenu_ChooseTeam; + // CHalfLifeMultiplay::FShouldSwitchWeapon hook typedef IHookChainClassImpl CReGameHook_CSGameRules_FShouldSwitchWeapon; typedef IHookChainRegistryClassEmptyImpl CReGameHookRegistry_CSGameRules_FShouldSwitchWeapon; @@ -320,6 +328,8 @@ public: CReGameHookRegistry_PM_Init m_PM_Init; CReGameHookRegistry_PM_Move m_PM_Move; CReGameHookRegistry_PM_AirMove m_PM_AirMove; + CReGameHookRegistry_HandleMenu_ChooseAppearance m_HandleMenu_ChooseAppearance; + CReGameHookRegistry_HandleMenu_ChooseTeam m_HandleMenu_ChooseTeam; CReGameHookRegistry_CSGameRules_FShouldSwitchWeapon m_CSGameRules_FShouldSwitchWeapon; CReGameHookRegistry_CSGameRules_GetNextBestWeapon m_CSGameRules_GetNextBestWeapon; @@ -386,6 +396,8 @@ public: virtual IReGameHookRegistry_PM_Init* PM_Init(); virtual IReGameHookRegistry_PM_Move* PM_Move(); virtual IReGameHookRegistry_PM_AirMove* PM_AirMove(); + virtual IReGameHookRegistry_HandleMenu_ChooseAppearance* HandleMenu_ChooseAppearance(); + virtual IReGameHookRegistry_HandleMenu_ChooseTeam* HandleMenu_ChooseTeam(); virtual IReGameHookRegistry_CSGameRules_FShouldSwitchWeapon* CSGameRules_FShouldSwitchWeapon(); virtual IReGameHookRegistry_CSGameRules_GetNextBestWeapon* CSGameRules_GetNextBestWeapon();