From 0606446d06aa547b17be4c962474122b5788c04c Mon Sep 17 00:00:00 2001 From: Kenzzer Date: Thu, 4 Jun 2026 21:27:12 +0200 Subject: [PATCH 1/2] Fix template deduction --- src/cs2fixes.cpp | 99 +++++++++++++++++++++++++++++++++++------------- src/entwatch.h | 28 +++++++------- 2 files changed, 86 insertions(+), 41 deletions(-) diff --git a/src/cs2fixes.cpp b/src/cs2fixes.cpp index d8a6c785..a6d8576d 100644 --- a/src/cs2fixes.cpp +++ b/src/cs2fixes.cpp @@ -67,33 +67,78 @@ class GameSessionConfiguration_t {}; -KHook::Virtual gameFrameHook(&IServerGameDLL::GameFrame, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_GameFrame_Post); -KHook::Virtual gameServerSteamAPIActivatedHook(&IServerGameDLL::GameServerSteamAPIActivated, &g_CS2Fixes, &CS2Fixes::Hook_GameServerSteamAPIActivated, nullptr); -KHook::Virtual applyGameSettingsHook(&IServerGameDLL::ApplyGameSettings, &g_CS2Fixes, &CS2Fixes::Hook_ApplyGameSettings, nullptr); -KHook::Virtual clientActiveHook(&IServerGameClients::ClientActive, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_ClientActive_Post); -KHook::Virtual clientDisconnectHook(&IServerGameClients::ClientDisconnect, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_ClientDisconnect_Post); -KHook::Virtual clientPutInServerHook(&IServerGameClients::ClientPutInServer, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_ClientPutInServer_Post); -KHook::Virtual clientSettingsChangedHook(&IServerGameClients::ClientSettingsChanged, &g_CS2Fixes, &CS2Fixes::Hook_ClientSettingsChanged, nullptr); -KHook::Virtual onClientConnectedHook(&IServerGameClients::OnClientConnected, &g_CS2Fixes, &CS2Fixes::Hook_OnClientConnected, nullptr); -KHook::Virtual clientConnectHook(&IServerGameClients::ClientConnect, &g_CS2Fixes, &CS2Fixes::Hook_ClientConnect, nullptr); -KHook::Virtual clientCommandHook(&IServerGameClients::ClientCommand, &g_CS2Fixes, &CS2Fixes::Hook_ClientCommand, nullptr); -KHook::Virtual postEventAbstractHook(&IGameEventSystem::PostEventAbstract, &g_CS2Fixes, &CS2Fixes::Hook_PostEventAbstract, nullptr); -KHook::Virtual startupServerHook(&INetworkServerService::StartupServer, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_StartupServer_Post); -KHook::Virtual checkTransmitHook(&ISource2GameEntities::CheckTransmit, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_CheckTransmit_Post); -KHook::Virtual dispatchConCommandHook(&ICvar::DispatchConCommand, &g_CS2Fixes, &CS2Fixes::Hook_DispatchConCommand, nullptr); -KHook::Virtual loadEventsFromFileHook(&IGameEventManager2::LoadEventsFromFile, &g_CS2Fixes, &CS2Fixes::Hook_LoadEventsFromFile, nullptr); -KHook::Virtual spawnHook(&CEntitySystem::Spawn, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_Spawn_Post); -KHook::Virtual setGameSpawnGroupMgrHook(&INetworkGameServer::SetGameSpawnGroupMgr, &g_CS2Fixes, &CS2Fixes::Hook_SetGameSpawnGroupMgr, nullptr); -KHook::Virtual createWorkshopMapGroupHook(&g_CS2Fixes, &CS2Fixes::Hook_CreateWorkshopMapGroup, nullptr); -KHook::Virtual getTouchingListHook(&g_CS2Fixes, nullptr, &CS2Fixes::Hook_GetTouchingList_Post); -KHook::Virtual checkMovingGroundHook(&g_CS2Fixes, &CS2Fixes::Hook_CheckMovingGround, nullptr); -KHook::Virtual dropWeaponHook(&g_CS2Fixes, nullptr, &CS2Fixes::Hook_DropWeapon_Post); -KHook::Virtual playerEquipUseHook(&g_CS2Fixes, &CS2Fixes::Hook_PlayerEquipUse, nullptr); -KHook::Virtual playerEquipPrecacheHook(&g_CS2Fixes, nullptr, &CS2Fixes::Hook_PlayerEquipPrecache_Post); -KHook::Virtual triggerGravityPrecacheHook(&g_CS2Fixes, nullptr, &CS2Fixes::Hook_TriggerGravityPrecache_Post); -KHook::Virtual triggerGravityEndTouchHook(&g_CS2Fixes, nullptr, &CS2Fixes::Hook_TriggerGravityEndTouch_Post); -KHook::Virtual onTakeDamageAliveHook(&g_CS2Fixes, &CS2Fixes::Hook_OnTakeDamage_Alive, nullptr); -KHook::Virtual playerPawnTeleportHook(&g_CS2Fixes, &CS2Fixes::Hook_CCSPlayerPawn_Teleport, nullptr); +template +constexpr inline KHook::Virtual declareHook( + RETURN (CLASS::*function)(ARGS...), + ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), + ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { + return KHook::Virtual(function, &g_CS2Fixes, pre, post); +} + +template +constexpr inline KHook::Virtual declareHook( + RETURN (CLASS::*function)(ARGS...), + std::nullptr_t, + ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { + return KHook::Virtual(function, &g_CS2Fixes, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr), post); +} + +template +constexpr inline KHook::Virtual declareHook( + RETURN (CLASS::*function)(ARGS...), + ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), + std::nullptr_t) { + return KHook::Virtual(function, &g_CS2Fixes, pre, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr)); +} + +template +constexpr inline KHook::Virtual declareHook( + ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), + ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { + return KHook::Virtual(0U, &g_CS2Fixes, pre, post); +} + +template +constexpr inline KHook::Virtual declareHook( + std::nullptr_t, + ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { + return KHook::Virtual(0U, &g_CS2Fixes, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr), post); +} + +template +constexpr inline KHook::Virtual declareHook( + ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), + std::nullptr_t) { + return KHook::Virtual(0U, &g_CS2Fixes, pre, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr)); +} + +auto gameFrameHook = declareHook(&IServerGameDLL::GameFrame, static_cast(nullptr), &CS2Fixes::Hook_GameFrame_Post); +auto gameServerSteamAPIActivatedHook = declareHook(&IServerGameDLL::GameServerSteamAPIActivated, &CS2Fixes::Hook_GameServerSteamAPIActivated, nullptr); +auto applyGameSettingsHook = declareHook(&IServerGameDLL::ApplyGameSettings, &CS2Fixes::Hook_ApplyGameSettings, nullptr); +auto clientActiveHook = declareHook(&IServerGameClients::ClientActive, static_cast(nullptr), &CS2Fixes::Hook_ClientActive_Post); +auto clientDisconnectHook = declareHook(&IServerGameClients::ClientDisconnect, static_cast(nullptr), &CS2Fixes::Hook_ClientDisconnect_Post); +auto clientPutInServerHook = declareHook(&IServerGameClients::ClientPutInServer, static_cast(nullptr), &CS2Fixes::Hook_ClientPutInServer_Post); +auto clientSettingsChangedHook = declareHook(&IServerGameClients::ClientSettingsChanged, &CS2Fixes::Hook_ClientSettingsChanged, static_cast(nullptr)); +auto onClientConnectedHook = declareHook(&IServerGameClients::OnClientConnected, &CS2Fixes::Hook_OnClientConnected, static_cast(nullptr)); +auto clientConnectHook = declareHook(&IServerGameClients::ClientConnect, &CS2Fixes::Hook_ClientConnect, static_cast(nullptr)); +auto clientCommandHook = declareHook(&IServerGameClients::ClientCommand, &CS2Fixes::Hook_ClientCommand, static_cast(nullptr)); +auto postEventAbstractHook = declareHook(&IGameEventSystem::PostEventAbstract, &CS2Fixes::Hook_PostEventAbstract, static_cast(nullptr)); +auto startupServerHook = declareHook(&INetworkServerService::StartupServer, static_cast(nullptr), &CS2Fixes::Hook_StartupServer_Post); +auto checkTransmitHook = declareHook(&ISource2GameEntities::CheckTransmit, static_cast(nullptr), &CS2Fixes::Hook_CheckTransmit_Post); +auto dispatchConCommandHook = declareHook(&ICvar::DispatchConCommand, &CS2Fixes::Hook_DispatchConCommand, static_cast(nullptr)); +auto loadEventsFromFileHook = declareHook(&IGameEventManager2::LoadEventsFromFile, &CS2Fixes::Hook_LoadEventsFromFile, static_cast(nullptr)); +auto spawnHook = declareHook(&CEntitySystem::Spawn, static_cast(nullptr), &CS2Fixes::Hook_Spawn_Post); +auto setGameSpawnGroupMgrHook = declareHook(&INetworkGameServer::SetGameSpawnGroupMgr, &CS2Fixes::Hook_SetGameSpawnGroupMgr, static_cast(nullptr)); +auto createWorkshopMapGroupHook = declareHook(&CS2Fixes::Hook_CreateWorkshopMapGroup, nullptr); +auto getTouchingListHook = declareHook(nullptr, &CS2Fixes::Hook_GetTouchingList_Post); +auto checkMovingGroundHook = declareHook(&CS2Fixes::Hook_CheckMovingGround, nullptr); +auto dropWeaponHook = declareHook(nullptr, &CS2Fixes::Hook_DropWeapon_Post); +auto playerEquipUseHook = declareHook(&CS2Fixes::Hook_PlayerEquipUse, nullptr); +auto playerEquipPrecacheHook = declareHook(nullptr, &CS2Fixes::Hook_PlayerEquipPrecache_Post); +auto triggerGravityPrecacheHook = declareHook(nullptr, &CS2Fixes::Hook_TriggerGravityPrecache_Post); +auto triggerGravityEndTouchHook = declareHook(nullptr, &CS2Fixes::Hook_TriggerGravityEndTouch_Post); +auto onTakeDamageAliveHook = declareHook(&CS2Fixes::Hook_OnTakeDamage_Alive, nullptr); +auto playerPawnTeleportHook = declareHook(&CS2Fixes::Hook_CCSPlayerPawn_Teleport, nullptr); CS2Fixes g_CS2Fixes; IGameEventSystem* g_gameEventSystem = nullptr; diff --git a/src/entwatch.h b/src/entwatch.h index 0132c240..65329015 100644 --- a/src/entwatch.h +++ b/src/entwatch.h @@ -218,20 +218,20 @@ class CEWHandler public: CEWHandler() : m_bConfigLoaded(false), - m_hBaseButtonUse(this, &CEWHandler::Hook_Use, nullptr), - m_hPhysBoxUse(this, &CEWHandler::Hook_Use, nullptr), - m_hRotButtonUse(this, &CEWHandler::Hook_Use, nullptr), - m_hMomentaryRotButtonUse(this, &CEWHandler::Hook_Use, nullptr), - m_hPhysicalButtonUse(this, &CEWHandler::Hook_Use, nullptr), - m_hTriggerTeleportStartTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerOnceStartTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerMultipleStartTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerTeleportTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerOnceTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerMultipleTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerTeleportEndTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerOnceEndTouch(this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerMultipleEndTouch(this, &CEWHandler::Hook_Touch, nullptr) + m_hBaseButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), + m_hPhysBoxUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), + m_hRotButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), + m_hMomentaryRotButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), + m_hPhysicalButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), + m_hTriggerTeleportStartTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerOnceStartTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerMultipleStartTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerTeleportTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerOnceTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerMultipleTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerTeleportEndTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerOnceEndTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerMultipleEndTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr) { CreateHooks(); } From 83dc0c9b350f4f36da3a14a01ad62b98a7a0d668 Mon Sep 17 00:00:00 2001 From: Vauff Date: Mon, 8 Jun 2026 17:38:48 -0400 Subject: [PATCH 2/2] alternative workaround: explicitly define template arguments --- src/cs2fixes.cpp | 101 +++++++++++++---------------------------------- src/cs2fixes.h | 4 +- src/entwatch.h | 28 ++++++------- 3 files changed, 44 insertions(+), 89 deletions(-) diff --git a/src/cs2fixes.cpp b/src/cs2fixes.cpp index a6d8576d..45828ab2 100644 --- a/src/cs2fixes.cpp +++ b/src/cs2fixes.cpp @@ -67,78 +67,33 @@ class GameSessionConfiguration_t {}; -template -constexpr inline KHook::Virtual declareHook( - RETURN (CLASS::*function)(ARGS...), - ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), - ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { - return KHook::Virtual(function, &g_CS2Fixes, pre, post); -} - -template -constexpr inline KHook::Virtual declareHook( - RETURN (CLASS::*function)(ARGS...), - std::nullptr_t, - ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { - return KHook::Virtual(function, &g_CS2Fixes, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr), post); -} - -template -constexpr inline KHook::Virtual declareHook( - RETURN (CLASS::*function)(ARGS...), - ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), - std::nullptr_t) { - return KHook::Virtual(function, &g_CS2Fixes, pre, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr)); -} - -template -constexpr inline KHook::Virtual declareHook( - ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), - ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { - return KHook::Virtual(0U, &g_CS2Fixes, pre, post); -} - -template -constexpr inline KHook::Virtual declareHook( - std::nullptr_t, - ::KHook::Return (CS2Fixes::*post)(CLASS*, ARGS...)) { - return KHook::Virtual(0U, &g_CS2Fixes, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr), post); -} - -template -constexpr inline KHook::Virtual declareHook( - ::KHook::Return (CS2Fixes::*pre)(CLASS*, ARGS...), - std::nullptr_t) { - return KHook::Virtual(0U, &g_CS2Fixes, pre, static_cast<::KHook::Return (CS2Fixes::*)(CLASS*, ARGS...)>(nullptr)); -} - -auto gameFrameHook = declareHook(&IServerGameDLL::GameFrame, static_cast(nullptr), &CS2Fixes::Hook_GameFrame_Post); -auto gameServerSteamAPIActivatedHook = declareHook(&IServerGameDLL::GameServerSteamAPIActivated, &CS2Fixes::Hook_GameServerSteamAPIActivated, nullptr); -auto applyGameSettingsHook = declareHook(&IServerGameDLL::ApplyGameSettings, &CS2Fixes::Hook_ApplyGameSettings, nullptr); -auto clientActiveHook = declareHook(&IServerGameClients::ClientActive, static_cast(nullptr), &CS2Fixes::Hook_ClientActive_Post); -auto clientDisconnectHook = declareHook(&IServerGameClients::ClientDisconnect, static_cast(nullptr), &CS2Fixes::Hook_ClientDisconnect_Post); -auto clientPutInServerHook = declareHook(&IServerGameClients::ClientPutInServer, static_cast(nullptr), &CS2Fixes::Hook_ClientPutInServer_Post); -auto clientSettingsChangedHook = declareHook(&IServerGameClients::ClientSettingsChanged, &CS2Fixes::Hook_ClientSettingsChanged, static_cast(nullptr)); -auto onClientConnectedHook = declareHook(&IServerGameClients::OnClientConnected, &CS2Fixes::Hook_OnClientConnected, static_cast(nullptr)); -auto clientConnectHook = declareHook(&IServerGameClients::ClientConnect, &CS2Fixes::Hook_ClientConnect, static_cast(nullptr)); -auto clientCommandHook = declareHook(&IServerGameClients::ClientCommand, &CS2Fixes::Hook_ClientCommand, static_cast(nullptr)); -auto postEventAbstractHook = declareHook(&IGameEventSystem::PostEventAbstract, &CS2Fixes::Hook_PostEventAbstract, static_cast(nullptr)); -auto startupServerHook = declareHook(&INetworkServerService::StartupServer, static_cast(nullptr), &CS2Fixes::Hook_StartupServer_Post); -auto checkTransmitHook = declareHook(&ISource2GameEntities::CheckTransmit, static_cast(nullptr), &CS2Fixes::Hook_CheckTransmit_Post); -auto dispatchConCommandHook = declareHook(&ICvar::DispatchConCommand, &CS2Fixes::Hook_DispatchConCommand, static_cast(nullptr)); -auto loadEventsFromFileHook = declareHook(&IGameEventManager2::LoadEventsFromFile, &CS2Fixes::Hook_LoadEventsFromFile, static_cast(nullptr)); -auto spawnHook = declareHook(&CEntitySystem::Spawn, static_cast(nullptr), &CS2Fixes::Hook_Spawn_Post); -auto setGameSpawnGroupMgrHook = declareHook(&INetworkGameServer::SetGameSpawnGroupMgr, &CS2Fixes::Hook_SetGameSpawnGroupMgr, static_cast(nullptr)); -auto createWorkshopMapGroupHook = declareHook(&CS2Fixes::Hook_CreateWorkshopMapGroup, nullptr); -auto getTouchingListHook = declareHook(nullptr, &CS2Fixes::Hook_GetTouchingList_Post); -auto checkMovingGroundHook = declareHook(&CS2Fixes::Hook_CheckMovingGround, nullptr); -auto dropWeaponHook = declareHook(nullptr, &CS2Fixes::Hook_DropWeapon_Post); -auto playerEquipUseHook = declareHook(&CS2Fixes::Hook_PlayerEquipUse, nullptr); -auto playerEquipPrecacheHook = declareHook(nullptr, &CS2Fixes::Hook_PlayerEquipPrecache_Post); -auto triggerGravityPrecacheHook = declareHook(nullptr, &CS2Fixes::Hook_TriggerGravityPrecache_Post); -auto triggerGravityEndTouchHook = declareHook(nullptr, &CS2Fixes::Hook_TriggerGravityEndTouch_Post); -auto onTakeDamageAliveHook = declareHook(&CS2Fixes::Hook_OnTakeDamage_Alive, nullptr); -auto playerPawnTeleportHook = declareHook(&CS2Fixes::Hook_CCSPlayerPawn_Teleport, nullptr); +KHook::Virtual gameFrameHook(&IServerGameDLL::GameFrame, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_GameFrame_Post); +KHook::Virtual gameServerSteamAPIActivatedHook(&IServerGameDLL::GameServerSteamAPIActivated, &g_CS2Fixes, &CS2Fixes::Hook_GameServerSteamAPIActivated, nullptr); +KHook::Virtual applyGameSettingsHook(&IServerGameDLL::ApplyGameSettings, &g_CS2Fixes, &CS2Fixes::Hook_ApplyGameSettings, nullptr); +KHook::Virtual clientActiveHook(&IServerGameClients::ClientActive, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_ClientActive_Post); +KHook::Virtual clientDisconnectHook(&IServerGameClients::ClientDisconnect, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_ClientDisconnect_Post); +KHook::Virtual clientPutInServerHook(&IServerGameClients::ClientPutInServer, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_ClientPutInServer_Post); +KHook::Virtual clientSettingsChangedHook(&IServerGameClients::ClientSettingsChanged, &g_CS2Fixes, &CS2Fixes::Hook_ClientSettingsChanged, nullptr); +KHook::Virtual onClientConnectedHook(&IServerGameClients::OnClientConnected, &g_CS2Fixes, &CS2Fixes::Hook_OnClientConnected, nullptr); +KHook::Virtual clientConnectHook(&IServerGameClients::ClientConnect, &g_CS2Fixes, &CS2Fixes::Hook_ClientConnect, nullptr); +KHook::Virtual clientCommandHook(&IServerGameClients::ClientCommand, &g_CS2Fixes, &CS2Fixes::Hook_ClientCommand, nullptr); +KHook::Virtual postEventAbstractHook(&IGameEventSystem::PostEventAbstract, &g_CS2Fixes, &CS2Fixes::Hook_PostEventAbstract, nullptr); +KHook::Virtual startupServerHook(&INetworkServerService::StartupServer, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_StartupServer_Post); +KHook::Virtual&, CBitVec<16384>&, const Entity2Networkable_t**, const uint16*, int> checkTransmitHook(&ISource2GameEntities::CheckTransmit, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_CheckTransmit_Post); +KHook::Virtual dispatchConCommandHook(&ICvar::DispatchConCommand, &g_CS2Fixes, &CS2Fixes::Hook_DispatchConCommand, nullptr); +KHook::Virtual loadEventsFromFileHook(&IGameEventManager2::LoadEventsFromFile, &g_CS2Fixes, &CS2Fixes::Hook_LoadEventsFromFile, nullptr); +KHook::Virtual spawnHook(&CEntitySystem::Spawn, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_Spawn_Post); +KHook::Virtual setGameSpawnGroupMgrHook(&INetworkGameServer::SetGameSpawnGroupMgr, &g_CS2Fixes, &CS2Fixes::Hook_SetGameSpawnGroupMgr, nullptr); +KHook::Virtual createWorkshopMapGroupHook(0U, &g_CS2Fixes, &CS2Fixes::Hook_CreateWorkshopMapGroup, nullptr); +KHook::Virtual*, bool> getTouchingListHook(0U, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_GetTouchingList_Post); +KHook::Virtual checkMovingGroundHook(0U, &g_CS2Fixes, &CS2Fixes::Hook_CheckMovingGround, nullptr); +KHook::Virtual dropWeaponHook(0U, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_DropWeapon_Post); +KHook::Virtual playerEquipUseHook(0U, &g_CS2Fixes, &CS2Fixes::Hook_PlayerEquipUse, nullptr); +KHook::Virtual playerEquipPrecacheHook(0U, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_PlayerEquipPrecache_Post); +KHook::Virtual triggerGravityPrecacheHook(0U, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_TriggerGravityPrecache_Post); +KHook::Virtual triggerGravityEndTouchHook(0U, &g_CS2Fixes, nullptr, &CS2Fixes::Hook_TriggerGravityEndTouch_Post); +KHook::Virtual onTakeDamageAliveHook(0U, &g_CS2Fixes, &CS2Fixes::Hook_OnTakeDamage_Alive, nullptr); +KHook::Virtual playerPawnTeleportHook(0U, &g_CS2Fixes, &CS2Fixes::Hook_CCSPlayerPawn_Teleport, nullptr); CS2Fixes g_CS2Fixes; IGameEventSystem* g_gameEventSystem = nullptr; @@ -945,7 +900,7 @@ KHook::Return CS2Fixes::Hook_ClientConnect(IServerGameClients* pThis, CPla return {KHook::Action::Ignore}; } -KHook::Return CS2Fixes::Hook_ClientPutInServer_Post(IServerGameClients* pThis, CPlayerSlot slot, char const* pszName, int type, uint64 xuid) +KHook::Return CS2Fixes::Hook_ClientPutInServer_Post(IServerGameClients* pThis, CPlayerSlot slot, const char* pszName, int type, uint64 xuid) { Message("Hook_ClientPutInServer(%d, \"%s\", %d, %d, %lli)\n", slot, pszName, type, xuid); diff --git a/src/cs2fixes.h b/src/cs2fixes.h index 643abc2c..bb205e5b 100644 --- a/src/cs2fixes.h +++ b/src/cs2fixes.h @@ -83,7 +83,7 @@ class CS2Fixes : public ISmmPlugin, public IMetamodListener, public ICS2Fixes KHook::Return Hook_ApplyGameSettings(IServerGameDLL* pThis, KeyValues* pKV); KHook::Return Hook_ClientActive_Post(IServerGameClients* pThis, CPlayerSlot slot, bool bLoadGame, const char* pszName, uint64 xuid); KHook::Return Hook_ClientDisconnect_Post(IServerGameClients* pThis, CPlayerSlot slot, ENetworkDisconnectionReason reason, const char* pszName, uint64 xuid, const char* pszNetworkID); - KHook::Return Hook_ClientPutInServer_Post(IServerGameClients* pThis, CPlayerSlot slot, char const* pszName, int type, uint64 xuid); + KHook::Return Hook_ClientPutInServer_Post(IServerGameClients* pThis, CPlayerSlot slot, const char* pszName, int type, uint64 xuid); KHook::Return Hook_ClientSettingsChanged(IServerGameClients* pThis, CPlayerSlot slot); KHook::Return Hook_OnClientConnected(IServerGameClients* pThis, CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, const char* pszAddress, bool bFakePlayer); KHook::Return Hook_ClientConnect(IServerGameClients* pThis, CPlayerSlot slot, const char* pszName, uint64 xuid, const char* pszNetworkID, bool unk1, CBufferString* pRejectReason); @@ -101,7 +101,7 @@ class CS2Fixes : public ISmmPlugin, public IMetamodListener, public ICS2Fixes KHook::Return Hook_GetTouchingList_Post(CVPhys2World* pThis, CUtlVector* pList, bool unknown); KHook::Return Hook_CheckMovingGround(CCSPlayer_MovementServices* pThis, double frametime); KHook::Return Hook_DropWeapon_Post(CCSPlayer_WeaponServices* pThis, CBasePlayerWeapon* pWeapon, Vector* pVecTarget, Vector* pVelocity); - KHook::Return Hook_PlayerEquipUse(CGamePlayerEquip* pThis, class InputData_t*); + KHook::Return Hook_PlayerEquipUse(CGamePlayerEquip* pThis, InputData_t* pInput); KHook::Return Hook_PlayerEquipPrecache_Post(CGamePlayerEquip* pThis, CEntityPrecacheContext*); KHook::Return Hook_TriggerGravityPrecache_Post(CTriggerGravity* pThis, CEntityPrecacheContext* param); KHook::Return Hook_TriggerGravityEndTouch_Post(CTriggerGravity* pThis, CBaseEntity* pOther); diff --git a/src/entwatch.h b/src/entwatch.h index 65329015..a318446d 100644 --- a/src/entwatch.h +++ b/src/entwatch.h @@ -218,20 +218,20 @@ class CEWHandler public: CEWHandler() : m_bConfigLoaded(false), - m_hBaseButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), - m_hPhysBoxUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), - m_hRotButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), - m_hMomentaryRotButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), - m_hPhysicalButtonUse(nullptr, this, &CEWHandler::Hook_Use, nullptr), - m_hTriggerTeleportStartTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerOnceStartTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerMultipleStartTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerTeleportTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerOnceTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerMultipleTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerTeleportEndTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerOnceEndTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr), - m_hTriggerMultipleEndTouch(nullptr, this, &CEWHandler::Hook_Touch, nullptr) + m_hBaseButtonUse(0U, this, &CEWHandler::Hook_Use, nullptr), + m_hPhysBoxUse(0U, this, &CEWHandler::Hook_Use, nullptr), + m_hRotButtonUse(0U, this, &CEWHandler::Hook_Use, nullptr), + m_hMomentaryRotButtonUse(0U, this, &CEWHandler::Hook_Use, nullptr), + m_hPhysicalButtonUse(0U, this, &CEWHandler::Hook_Use, nullptr), + m_hTriggerTeleportStartTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerOnceStartTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerMultipleStartTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerTeleportTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerOnceTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerMultipleTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerTeleportEndTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerOnceEndTouch(0U, this, &CEWHandler::Hook_Touch, nullptr), + m_hTriggerMultipleEndTouch(0U, this, &CEWHandler::Hook_Touch, nullptr) { CreateHooks(); }