diff --git a/src/appframework/IAppSystemGroup.cpp b/src/appframework/IAppSystemGroup.cpp index 5161e08a..46306273 100644 --- a/src/appframework/IAppSystemGroup.cpp +++ b/src/appframework/IAppSystemGroup.cpp @@ -66,11 +66,7 @@ void* CAppSystemGroup::FindSystem(const char* pSystemName) return NULL; } -void VAppSystemGroup::Attach(void) const +void VAppSystemGroup::Detour(const bool bAttach) const { - DetourAttach(&CAppSystemGroup_Destroy, &CAppSystemGroup::StaticDestroy); + DetourSetup(&CAppSystemGroup_Destroy, &CAppSystemGroup::StaticDestroy, bAttach); } -void VAppSystemGroup::Detach(void) const -{ - DetourDetach(&CAppSystemGroup_Destroy, &CAppSystemGroup::StaticDestroy); -} \ No newline at end of file diff --git a/src/codecs/bink/bink_impl.cpp b/src/codecs/bink/bink_impl.cpp index 64985a53..fba75138 100644 --- a/src/codecs/bink/bink_impl.cpp +++ b/src/codecs/bink/bink_impl.cpp @@ -20,12 +20,7 @@ void* BinkOpen(HANDLE hBinkFile, UINT32 nFlags) } /////////////////////////////////////////////////////////////////////////////// -void BinkCore::Attach() const +void BinkCore::Detour(const bool bAttach) const { - DetourAttach(&v_BinkOpen, &BinkOpen); + DetourSetup(&v_BinkOpen, &BinkOpen, bAttach); } - -void BinkCore::Detach() const -{ - DetourDetach(&v_BinkOpen, &BinkOpen); -} \ No newline at end of file diff --git a/src/codecs/bink/bink_impl.h b/src/codecs/bink/bink_impl.h index f122d494..44dcfa82 100644 --- a/src/codecs/bink/bink_impl.h +++ b/src/codecs/bink/bink_impl.h @@ -29,8 +29,7 @@ class BinkCore : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/codecs/miles/miles_impl.cpp b/src/codecs/miles/miles_impl.cpp index aff81175..85fd2753 100644 --- a/src/codecs/miles/miles_impl.cpp +++ b/src/codecs/miles/miles_impl.cpp @@ -52,18 +52,10 @@ void MilesBankPatch(Miles::Bank* bank, char* streamPatch, char* localizedStreamP } /////////////////////////////////////////////////////////////////////////////// -void MilesCore::Attach() const +void MilesCore::Detour(const bool bAttach) const { - DetourAttach(&v_AIL_LogFunc, &AIL_LogFunc); - DetourAttach(&v_Miles_Initialize, &Miles_Initialize); - DetourAttach(&v_MilesQueueEventRun, &MilesQueueEventRun); - DetourAttach(&v_MilesBankPatch, &MilesBankPatch); + DetourSetup(&v_AIL_LogFunc, &AIL_LogFunc, bAttach); + DetourSetup(&v_Miles_Initialize, &Miles_Initialize, bAttach); + DetourSetup(&v_MilesQueueEventRun, &MilesQueueEventRun, bAttach); + DetourSetup(&v_MilesBankPatch, &MilesBankPatch, bAttach); } - -void MilesCore::Detach() const -{ - DetourDetach(&v_AIL_LogFunc, &AIL_LogFunc); - DetourDetach(&v_Miles_Initialize, &Miles_Initialize); - DetourDetach(&v_MilesQueueEventRun, &MilesQueueEventRun); - DetourDetach(&v_MilesBankPatch, &MilesBankPatch); -} \ No newline at end of file diff --git a/src/codecs/miles/miles_impl.h b/src/codecs/miles/miles_impl.h index 1a34ac37..cd4b61b1 100644 --- a/src/codecs/miles/miles_impl.h +++ b/src/codecs/miles/miles_impl.h @@ -43,7 +43,6 @@ class MilesCore : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/codecs/miles/radshal_wasapi.h b/src/codecs/miles/radshal_wasapi.h index a3578b59..1b57c9da 100644 --- a/src/codecs/miles/radshal_wasapi.h +++ b/src/codecs/miles/radshal_wasapi.h @@ -17,7 +17,6 @@ class VRadShal : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/common/callback.cpp b/src/common/callback.cpp index 7aba39e3..b69b065a 100644 --- a/src/common/callback.cpp +++ b/src/common/callback.cpp @@ -1520,12 +1520,7 @@ void Cmd_Exec_f(const CCommand& args) } -void VCallback::Attach() const +void VCallback::Detour(const bool bAttach) const { - DetourAttach(&_Cmd_Exec_f, &Cmd_Exec_f); -} - -void VCallback::Detach() const -{ - DetourDetach(&_Cmd_Exec_f, &Cmd_Exec_f); + DetourSetup(&_Cmd_Exec_f, &Cmd_Exec_f, bAttach); } diff --git a/src/common/callback.h b/src/common/callback.h index 1b275b5a..9adb59e4 100644 --- a/src/common/callback.h +++ b/src/common/callback.h @@ -104,7 +104,6 @@ class VCallback : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/common/completion.h b/src/common/completion.h index 66683236..23ea9e7b 100644 --- a/src/common/completion.h +++ b/src/common/completion.h @@ -36,7 +36,6 @@ class VCompletion : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/common/netmessages.cpp b/src/common/netmessages.cpp index b1576e8b..7557983b 100644 --- a/src/common/netmessages.cpp +++ b/src/common/netmessages.cpp @@ -160,26 +160,28 @@ bool ShouldReplayMessage(const CNetMessage* msg) } } -void V_NetMessages::Attach() const +void V_NetMessages::Detour(const bool bAttach) const { - auto hk_SVCPrint_Process = &SVC_Print::ProcessImpl; - auto hk_SVCUserMessage_Process = &SVC_UserMessage::ProcessImpl; + if (bAttach) + { + auto hk_SVCPrint_Process = &SVC_Print::ProcessImpl; + auto hk_SVCUserMessage_Process = &SVC_UserMessage::ProcessImpl; - CMemory::HookVirtualMethod((uintptr_t)g_pSVC_Print_VFTable, (LPVOID&)hk_SVCPrint_Process, NetMessageVtbl::Process, (LPVOID*)&SVC_Print_Process); - CMemory::HookVirtualMethod((uintptr_t)g_pSVC_UserMessage_VFTable, (LPVOID&)hk_SVCUserMessage_Process, NetMessageVtbl::Process, (LPVOID*)&SVC_UserMessage_Process); - CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID*)&Base_CmdKeyValues::ReadFromBufferImpl, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&Base_CmdKeyValues_ReadFromBuffer); - CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID*)&Base_CmdKeyValues::WriteToBufferImpl, NetMessageVtbl::WriteToBuffer, (LPVOID*)&Base_CmdKeyValues_WriteToBuffer); - CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID*)&CLC_SetPlaylistVarOverride::ReadFromBufferImpl, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&CLC_SetPlaylistVarOverride_ReadFromBuffer); - CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID*)&CLC_SetPlaylistVarOverride::WriteToBufferImpl, NetMessageVtbl::WriteToBuffer, (LPVOID*)&CLC_SetPlaylistVarOverride_WriteToBuffer); -} - -void V_NetMessages::Detach() const -{ - void* hkRestore = nullptr; - CMemory::HookVirtualMethod((uintptr_t)g_pSVC_Print_VFTable, (LPVOID)SVC_Print_Process, NetMessageVtbl::Process, (LPVOID*)&hkRestore); - CMemory::HookVirtualMethod((uintptr_t)g_pSVC_UserMessage_VFTable, (LPVOID)SVC_UserMessage_Process, NetMessageVtbl::Process, (LPVOID*)&hkRestore); - CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID)Base_CmdKeyValues_ReadFromBuffer, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&hkRestore); - CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID)Base_CmdKeyValues_WriteToBuffer, NetMessageVtbl::WriteToBuffer, (LPVOID*)&hkRestore); - CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID)CLC_SetPlaylistVarOverride_ReadFromBuffer, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&hkRestore); - CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID)CLC_SetPlaylistVarOverride_WriteToBuffer, NetMessageVtbl::WriteToBuffer, (LPVOID*)&hkRestore); + CMemory::HookVirtualMethod((uintptr_t)g_pSVC_Print_VFTable, (LPVOID&)hk_SVCPrint_Process, NetMessageVtbl::Process, (LPVOID*)&SVC_Print_Process); + CMemory::HookVirtualMethod((uintptr_t)g_pSVC_UserMessage_VFTable, (LPVOID&)hk_SVCUserMessage_Process, NetMessageVtbl::Process, (LPVOID*)&SVC_UserMessage_Process); + CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID*)&Base_CmdKeyValues::ReadFromBufferImpl, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&Base_CmdKeyValues_ReadFromBuffer); + CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID*)&Base_CmdKeyValues::WriteToBufferImpl, NetMessageVtbl::WriteToBuffer, (LPVOID*)&Base_CmdKeyValues_WriteToBuffer); + CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID*)&CLC_SetPlaylistVarOverride::ReadFromBufferImpl, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&CLC_SetPlaylistVarOverride_ReadFromBuffer); + CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID*)&CLC_SetPlaylistVarOverride::WriteToBufferImpl, NetMessageVtbl::WriteToBuffer, (LPVOID*)&CLC_SetPlaylistVarOverride_WriteToBuffer); + } + else + { + void* hkRestore = nullptr; + CMemory::HookVirtualMethod((uintptr_t)g_pSVC_Print_VFTable, (LPVOID)SVC_Print_Process, NetMessageVtbl::Process, (LPVOID*)&hkRestore); + CMemory::HookVirtualMethod((uintptr_t)g_pSVC_UserMessage_VFTable, (LPVOID)SVC_UserMessage_Process, NetMessageVtbl::Process, (LPVOID*)&hkRestore); + CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID)Base_CmdKeyValues_ReadFromBuffer, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&hkRestore); + CMemory::HookVirtualMethod((uintptr_t)g_pBase_CmdKeyValues_VFTable, (LPVOID)Base_CmdKeyValues_WriteToBuffer, NetMessageVtbl::WriteToBuffer, (LPVOID*)&hkRestore); + CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID)CLC_SetPlaylistVarOverride_ReadFromBuffer, NetMessageVtbl::ReadFromBuffer, (LPVOID*)&hkRestore); + CMemory::HookVirtualMethod((uintptr_t)g_pCLC_SetPlaylistVarOverride_VFTable, (LPVOID)CLC_SetPlaylistVarOverride_WriteToBuffer, NetMessageVtbl::WriteToBuffer, (LPVOID*)&hkRestore); + } } diff --git a/src/common/netmessages.h b/src/common/netmessages.h index 7b6648d5..bca93549 100644 --- a/src/common/netmessages.h +++ b/src/common/netmessages.h @@ -522,8 +522,7 @@ class V_NetMessages : public IDetour g_pCLC_SetPlaylistVarOverride_VFTable = g_GameDll.GetVirtualMethodTable(".?AVCLC_SetPlaylistVarOverride@@"); g_pBase_CmdKeyValues_VFTable = g_GameDll.GetVirtualMethodTable(".?AVBase_CmdKeyValues@@"); } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/common/opcodes.h b/src/common/opcodes.h index 2943ef27..c7e0a9cd 100644 --- a/src/common/opcodes.h +++ b/src/common/opcodes.h @@ -161,7 +161,6 @@ class VOpcodes : public IDetour //#endif //48 83 EC 28 33 C9 FF 15 ? ? ? ? 48 8D 0D ? ? ? ? } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/init.cpp b/src/core/init.cpp index 74f3f88d..f1be0083 100644 --- a/src/core/init.cpp +++ b/src/core/init.cpp @@ -198,9 +198,9 @@ void Systems_Init() DetourUpdateThread(GetCurrentThread()); // Hook functions - for (const IDetour* Detour : g_DetourVec) + for (const IDetour* pd : g_DetourVec) { - Detour->Attach(); + pd->Detour(true); } // Patch instructions @@ -266,9 +266,9 @@ void Systems_Shutdown() DetourUpdateThread(GetCurrentThread()); // Unhook functions - for (const IDetour* Detour : g_DetourVec) + for (const IDetour* pd : g_DetourVec) { - Detour->Detach(); + pd->Detour(false); } // Commit the transaction @@ -408,11 +408,11 @@ void DetourInit() // Run the sigscan // No debug logging in non dev builds. const bool bDevMode = !IsCert() && !IsRetail(); - for (const IDetour* Detour : g_DetourVec) + for (const IDetour* pd : g_DetourVec) { - Detour->GetCon(); // Constants. - Detour->GetFun(); // Functions. - Detour->GetVar(); // Variables. + pd->GetCon(); // Constants. + pd->GetFun(); // Functions. + pd->GetVar(); // Variables. if (bDevMode && bLogAdr) { @@ -421,7 +421,7 @@ void DetourInit() // Run the sigscan bInitDivider = true; spdlog::debug("+---------------------------------------------------------------------+\n"); } - Detour->GetAdr(); + pd->GetAdr(); spdlog::debug("+---------------------------------------------------------------------+\n"); } } @@ -438,9 +438,9 @@ void DetourInit() // Run the sigscan void DetourAddress() // Test the sigscan results { spdlog::debug("+---------------------------------------------------------------------+\n"); - for (const IDetour* Detour : g_DetourVec) + for (const IDetour* pd : g_DetourVec) { - Detour->GetAdr(); + pd->GetAdr(); spdlog::debug("+---------------------------------------------------------------------+\n"); } } diff --git a/src/datacache/mdlcache.cpp b/src/datacache/mdlcache.cpp index 856cedae..c58ce5eb 100644 --- a/src/datacache/mdlcache.cpp +++ b/src/datacache/mdlcache.cpp @@ -309,28 +309,15 @@ bool CMDLCache::IsKnownBadModel(MDLHandle_t handle) return !p.second; } -void VMDLCache::Attach() const +void VMDLCache::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_CMDLCache__FindMDL, &CMDLCache::FindMDL); + DetourSetup(&v_CMDLCache__FindMDL, &CMDLCache::FindMDL, bAttach); #ifdef GAMEDLL_S3 // !!! DECLARED INLINE WITH FINDMDL IN < S3 !!! - DetourAttach((LPVOID*)&v_CMDLCache__FindCachedMDL, &CMDLCache::FindCachedMDL); - DetourAttach((LPVOID*)&v_CMDLCache__FindUncachedMDL, &CMDLCache::FindUncachedMDL); + DetourSetup(&v_CMDLCache__FindCachedMDL, &CMDLCache::FindCachedMDL, bAttach); + DetourSetup(&v_CMDLCache__FindUncachedMDL, &CMDLCache::FindUncachedMDL, bAttach); #endif // GAMEDLL_S3 #ifdef GAMEDLL_S3 // !TODO: - DetourAttach((LPVOID*)&v_CMDLCache__GetHardwareData, &CMDLCache::GetHardwareData); - DetourAttach((LPVOID*)&v_CMDLCache__GetStudioHDR, &CMDLCache::GetStudioHDR); -#endif -} - -void VMDLCache::Detach() const -{ - DetourDetach((LPVOID*)&v_CMDLCache__FindMDL, &CMDLCache::FindMDL); -#ifdef GAMEDLL_S3 // !!! DECLARED INLINE WITH FINDMDL IN < S3 !!! - DetourDetach((LPVOID*)&v_CMDLCache__FindCachedMDL, &CMDLCache::FindCachedMDL); - DetourDetach((LPVOID*)&v_CMDLCache__FindUncachedMDL, &CMDLCache::FindUncachedMDL); -#endif // GAMEDLL_S3 -#ifdef GAMEDLL_S3 // !TODO: - DetourDetach((LPVOID*)&v_CMDLCache__GetHardwareData, &CMDLCache::GetHardwareData); - DetourDetach((LPVOID*)&v_CMDLCache__GetStudioHDR, &CMDLCache::GetStudioHDR); + DetourSetup(&v_CMDLCache__GetHardwareData, &CMDLCache::GetHardwareData, bAttach); + DetourSetup(&v_CMDLCache__GetStudioHDR, &CMDLCache::GetStudioHDR, bAttach); #endif } \ No newline at end of file diff --git a/src/datacache/mdlcache.h b/src/datacache/mdlcache.h index 4eb5f7b9..0945a14e 100644 --- a/src/datacache/mdlcache.h +++ b/src/datacache/mdlcache.h @@ -109,13 +109,13 @@ private: }; inline CMemory p_CMDLCache__FindMDL; -inline studiohdr_t*(*v_CMDLCache__FindMDL)(CMDLCache* pCache, void* a2, void* a3); +inline studiohdr_t*(*v_CMDLCache__FindMDL)(CMDLCache* pCache, MDLHandle_t handle, void* a3); #if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) && !defined (GAMEDLL_S2) inline CMemory p_CMDLCache__FindCachedMDL; -inline void(*v_CMDLCache__FindCachedMDL)(CMDLCache* pCache, void* a2, void* a3); +inline void(*v_CMDLCache__FindCachedMDL)(CMDLCache* pCache, studiodata_t* pStudioData, void* a3); inline CMemory p_CMDLCache__FindUncachedMDL; -inline studiohdr_t*(*v_CMDLCache__FindUncachedMDL)(CMDLCache* pCache, MDLHandle_t handle, void* a3, void* a4); +inline studiohdr_t*(*v_CMDLCache__FindUncachedMDL)(CMDLCache* pCache, MDLHandle_t handle, studiodata_t* pStudioData, void* a4); #endif inline CMemory p_CMDLCache__GetStudioHDR; inline studiohdr_t*(*v_CMDLCache__GetStudioHDR)(CMDLCache* pCache, MDLHandle_t handle); @@ -165,13 +165,13 @@ class VMDLCache : public IDetour #endif #else p_CMDLCache__FindMDL = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 83 EC 20 48 8B F1 0F B7 EA"); - v_CMDLCache__FindMDL = p_CMDLCache__FindMDL.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 20 48 8B F1 0F B7 EA*/ + v_CMDLCache__FindMDL = p_CMDLCache__FindMDL.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 20 48 8B F1 0F B7 EA*/ p_CMDLCache__FindCachedMDL = g_GameDll.FindPatternSIMD("4D 85 C0 74 7A 48 89 6C 24 ??"); - v_CMDLCache__FindCachedMDL = p_CMDLCache__FindCachedMDL.RCast(); /*4D 85 C0 74 7A 48 89 6C 24 ?*/ + v_CMDLCache__FindCachedMDL = p_CMDLCache__FindCachedMDL.RCast(); /*4D 85 C0 74 7A 48 89 6C 24 ?*/ p_CMDLCache__FindUncachedMDL = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 48 89 7C 24 ?? 41 56 48 83 EC 20 48 8B E9 0F B7 FA"); - v_CMDLCache__FindUncachedMDL = p_CMDLCache__FindUncachedMDL.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC 20 48 8B E9 0F B7 FA*/ + v_CMDLCache__FindUncachedMDL = p_CMDLCache__FindUncachedMDL.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC 20 48 8B E9 0F B7 FA*/ p_CMDLCache__GetStudioHDR = g_GameDll.FindPatternSIMD("40 53 48 83 EC 20 48 8D 0D ?? ?? ?? ?? 0F B7 DA FF 15 ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 8D 14 5B 48 8D 0D ?? ?? ?? ?? 48 8B 5C D0 ?? FF 15 ?? ?? ?? ?? 48 8B 03 48 8B 48 08"); v_CMDLCache__GetStudioHDR = p_CMDLCache__GetStudioHDR.RCast(); /*40 53 48 83 EC 20 48 8D 0D ? ? ? ? 0F B7 DA FF 15 ? ? ? ? 48 8B 05 ? ? ? ? 48 8D 14 5B 48 8D 0D ? ? ? ? 48 8B 5C D0 ? FF 15 ? ? ? ? 48 8B 03 48 8B 48 08*/ @@ -192,8 +192,7 @@ class VMDLCache : public IDetour g_pMDLLock = p_CMDLCache__GetHardwareData.Offset(0x35).FindPatternSelf("48 8D 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/ebisusdk/EbisuSDK.h b/src/ebisusdk/EbisuSDK.h index e1f91265..f989690c 100644 --- a/src/ebisusdk/EbisuSDK.h +++ b/src/ebisusdk/EbisuSDK.h @@ -61,7 +61,6 @@ class VEbisuSDK : public IDetour g_EbisuSDKInit = p_EbisuSDK_Tier0_Init.Offset(0x0).FindPatternSelf("80 3D", CMemory::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x2, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/cdll_engine_int.cpp b/src/engine/client/cdll_engine_int.cpp index 5c8ae152..97f40254 100644 --- a/src/engine/client/cdll_engine_int.cpp +++ b/src/engine/client/cdll_engine_int.cpp @@ -38,16 +38,9 @@ ClientClass* CHLClient::GetAllClasses() #endif // !DEDICATED /////////////////////////////////////////////////////////////////////////////// -void VDll_Engine_Int::Attach() const +void VDll_Engine_Int::Detour(const bool bAttach) const { #ifndef DEDICATED - DetourAttach((LPVOID*)&CHLClient_FrameStageNotify, &CHLClient::FrameStageNotify); -#endif // !DEDICATED -} - -void VDll_Engine_Int::Detach() const -{ -#ifndef DEDICATED - DetourDetach((LPVOID*)&CHLClient_FrameStageNotify, &CHLClient::FrameStageNotify); + DetourSetup(&CHLClient_FrameStageNotify, &CHLClient::FrameStageNotify, bAttach); #endif // !DEDICATED } diff --git a/src/engine/client/cdll_engine_int.h b/src/engine/client/cdll_engine_int.h index d447056f..d66a8862 100644 --- a/src/engine/client/cdll_engine_int.h +++ b/src/engine/client/cdll_engine_int.h @@ -120,7 +120,6 @@ class VDll_Engine_Int : public IDetour .FindPatternSelf("4C 8B", CMemory::Direction::DOWN, 512, 2).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/cl_ents_parse.h b/src/engine/client/cl_ents_parse.h index ca95f693..0f72d996 100644 --- a/src/engine/client/cl_ents_parse.h +++ b/src/engine/client/cl_ents_parse.h @@ -19,13 +19,9 @@ class V_CL_Ents_Parse : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const + virtual void Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_CL_CopyExistingEntity, &CL_CopyExistingEntity); - } - virtual void Detach(void) const - { - DetourDetach((LPVOID*)&v_CL_CopyExistingEntity, &CL_CopyExistingEntity); + DetourSetup(&v_CL_CopyExistingEntity, &CL_CopyExistingEntity, bAttach); } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/cl_main.cpp b/src/engine/client/cl_main.cpp index c92fdb60..74c4514d 100644 --- a/src/engine/client/cl_main.cpp +++ b/src/engine/client/cl_main.cpp @@ -141,12 +141,7 @@ void CL_MoveEx() } } -void VCL_Main::Attach() const +void VCL_Main::Detour(const bool bAttach) const { - DetourAttach(&CL_Move, &CL_MoveEx); -} - -void VCL_Main::Detach() const -{ - DetourDetach(&CL_Move, &CL_MoveEx); + DetourSetup(&CL_Move, &CL_MoveEx, bAttach); } diff --git a/src/engine/client/cl_main.h b/src/engine/client/cl_main.h index efa44118..7b77d733 100644 --- a/src/engine/client/cl_main.h +++ b/src/engine/client/cl_main.h @@ -57,7 +57,6 @@ class VCL_Main : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/cl_splitscreen.h b/src/engine/client/cl_splitscreen.h index 7fbebb44..16e18f1c 100644 --- a/src/engine/client/cl_splitscreen.h +++ b/src/engine/client/cl_splitscreen.h @@ -146,8 +146,7 @@ class VSplitScreen : public IDetour g_pSplitScreenMgr = g_GameDll.FindPatternSIMD(pszPattern).FindPatternSelf(pszInstruction).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { }; - virtual void Detach(void) const { }; + virtual void Detour(const bool bAttach) const { }; }; #endif // CL_SPLITSCREEN_H diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index dc74c0a5..f07fec7b 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -292,7 +292,7 @@ void CClient::VActivatePlayer(CClient* pClient) // bForceReliable - // bVoice - //--------------------------------------------------------------------------------- -bool CClient::SendNetMsgEx(CNetMessage* pMsg, char bLocal, bool bForceReliable, bool bVoice) +bool CClient::SendNetMsgEx(CNetMessage* pMsg, bool bLocal, bool bForceReliable, bool bVoice) { if (!ShouldReplayMessage(pMsg)) { @@ -323,7 +323,7 @@ void* CClient::VSendSnapshot(CClient* pClient, CClientFrame* pFrame, int nTick, // bForceReliable - // bVoice - //--------------------------------------------------------------------------------- -bool CClient::VSendNetMsgEx(CClient* pClient, CNetMessage* pMsg, char bLocal, bool bForceReliable, bool bVoice) +bool CClient::VSendNetMsgEx(CClient* pClient, CNetMessage* pMsg, bool bLocal, bool bForceReliable, bool bVoice) { return pClient->SendNetMsgEx(pMsg, bLocal, bForceReliable, bVoice); } @@ -477,29 +477,16 @@ bool CClient::VProcessSetConVar(CClient* pClient, NET_SetConVar* pMsg) return true; } -void VClient::Attach(void) const +void VClient::Detour(const bool bAttach) const { #ifndef CLIENT_DLL - DetourAttach((LPVOID*)&v_CClient_Clear, &CClient::VClear); - DetourAttach((LPVOID*)&v_CClient_Connect, &CClient::VConnect); - DetourAttach((LPVOID*)&v_CClient_ActivatePlayer, &CClient::VActivatePlayer); - DetourAttach((LPVOID*)&v_CClient_SendNetMsgEx, &CClient::VSendNetMsgEx); - //DetourAttach((LPVOID*)&p_CClient_SendSnapshot, &CClient::VSendSnapshot); + DetourSetup(&v_CClient_Clear, &CClient::VClear, bAttach); + DetourSetup(&v_CClient_Connect, &CClient::VConnect, bAttach); + DetourSetup(&v_CClient_ActivatePlayer, &CClient::VActivatePlayer, bAttach); + DetourSetup(&v_CClient_SendNetMsgEx, &CClient::VSendNetMsgEx, bAttach); + //DetourSetup(&p_CClient_SendSnapshot, &CClient::VSendSnapshot, bAttach); - DetourAttach((LPVOID*)&v_CClient_ProcessStringCmd, &CClient::VProcessStringCmd); - DetourAttach((LPVOID*)&v_CClient_ProcessSetConVar, &CClient::VProcessSetConVar); -#endif // !CLIENT_DLL -} -void VClient::Detach(void) const -{ -#ifndef CLIENT_DLL - DetourDetach((LPVOID*)&v_CClient_Clear, &CClient::VClear); - DetourDetach((LPVOID*)&v_CClient_Connect, &CClient::VConnect); - DetourDetach((LPVOID*)&v_CClient_ActivatePlayer, &CClient::VActivatePlayer); - DetourDetach((LPVOID*)&v_CClient_SendNetMsgEx, &CClient::VSendNetMsgEx); - //DetourDetach((LPVOID*)&p_CClient_SendSnapshot, &CClient::VSendSnapshot); - - DetourDetach((LPVOID*)&v_CClient_ProcessStringCmd, &CClient::VProcessStringCmd); - DetourDetach((LPVOID*)&v_CClient_ProcessSetConVar, &CClient::VProcessSetConVar); + DetourSetup(&v_CClient_ProcessStringCmd, &CClient::VProcessStringCmd, bAttach); + DetourSetup(&v_CClient_ProcessSetConVar, &CClient::VProcessSetConVar, bAttach); #endif // !CLIENT_DLL } diff --git a/src/engine/client/client.h b/src/engine/client/client.h index c49c4812..7372b452 100644 --- a/src/engine/client/client.h +++ b/src/engine/client/client.h @@ -93,7 +93,7 @@ public: inline bool IsFakeClient(void) const { return m_bFakePlayer; } inline bool IsHumanPlayer(void) const { if (!IsConnected() || IsFakeClient()) { return false; } return true; } - bool SendNetMsgEx(CNetMessage* pMsg, char bLocal, bool bForceReliable, bool bVoice); + bool SendNetMsgEx(CNetMessage* pMsg, bool bLocal, bool bForceReliable, bool bVoice); bool Authenticate(const char* const playerName, char* const reasonBuf, const size_t reasonBufLen); bool Connect(const char* szName, CNetChan* pNetChan, bool bFakePlayer, @@ -108,7 +108,7 @@ public: // Hook statics: static void VActivatePlayer(CClient* pClient); static void* VSendSnapshot(CClient* pClient, CClientFrame* pFrame, int nTick, int nTickAck); - static bool VSendNetMsgEx(CClient* pClient, CNetMessage* pMsg, char bLocal, bool bForceReliable, bool bVoice); + static bool VSendNetMsgEx(CClient* pClient, CNetMessage* pMsg, bool bLocal, bool bForceReliable, bool bVoice); static bool VProcessStringCmd(CClient* pClient, NET_StringCmd* pMsg); static bool VProcessSetConVar(CClient* pClient, NET_SetConVar* pMsg); @@ -288,7 +288,6 @@ class VClient : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/clientstate.cpp b/src/engine/client/clientstate.cpp index dd794624..381fb030 100644 --- a/src/engine/client/clientstate.cpp +++ b/src/engine/client/clientstate.cpp @@ -173,7 +173,7 @@ bool CClientState::_ProcessStringCmd(CClientState* thisptr, NET_StringCmd* msg) CClientState* const thisptr_ADJ = thisptr->GetShiftedBasePointer(); if (thisptr_ADJ->m_bRestrictServerCommands -#ifndef CLIENT_DLLInternalProcessStringCmd +#ifndef CLIENT_DLL && !g_pServer->IsActive() #endif // !CLIENT_DLL ) @@ -285,20 +285,12 @@ void CClientState::VConnect(CClientState* thisptr, connectparams_t* connectParam CClientState__Connect(thisptr, connectParams); } -void VClientState::Attach() const +void VClientState::Detour(const bool bAttach) const { - DetourAttach(&CClientState__ConnectionClosing, &CClientState::VConnectionClosing); - DetourAttach(&CClientState__ProcessStringCmd, &CClientState::_ProcessStringCmd); - DetourAttach(&CClientState__ProcessServerTick, &CClientState::VProcessServerTick); - DetourAttach(&CClientState__Connect, &CClientState::VConnect); -} - -void VClientState::Detach() const -{ - DetourDetach(&CClientState__ConnectionClosing, &CClientState::VConnectionClosing); - DetourDetach(&CClientState__ProcessStringCmd, &CClientState::_ProcessStringCmd); - DetourDetach(&CClientState__ProcessServerTick, &CClientState::VProcessServerTick); - DetourDetach(&CClientState__Connect, &CClientState::VConnect); + DetourSetup(&CClientState__ConnectionClosing, &CClientState::VConnectionClosing, bAttach); + DetourSetup(&CClientState__ProcessStringCmd, &CClientState::_ProcessStringCmd, bAttach); + DetourSetup(&CClientState__ProcessServerTick, &CClientState::VProcessServerTick, bAttach); + DetourSetup(&CClientState__Connect, &CClientState::VConnect, bAttach); } ///////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/clientstate.h b/src/engine/client/clientstate.h index a3a03500..8b0001c1 100644 --- a/src/engine/client/clientstate.h +++ b/src/engine/client/clientstate.h @@ -281,7 +281,6 @@ class VClientState : public IDetour g_pClientState_Shifted = reinterpret_cast(reinterpret_cast(g_pClientState)+1); // Shift by 8 bytes. } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/datablock_receiver.h b/src/engine/client/datablock_receiver.h index cc6ee455..505b294e 100644 --- a/src/engine/client/datablock_receiver.h +++ b/src/engine/client/datablock_receiver.h @@ -53,8 +53,7 @@ class VClientDataBlockReceiver : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/client/vengineclient_impl.cpp b/src/engine/client/vengineclient_impl.cpp index 5462f276..312c01fe 100644 --- a/src/engine/client/vengineclient_impl.cpp +++ b/src/engine/client/vengineclient_impl.cpp @@ -96,12 +96,7 @@ void CEngineClient::_ClientCmd(CEngineClient* thisptr, const char* const szCmdSt } } -void HVEngineClient::Attach() const +void HVEngineClient::Detour(const bool bAttach) const { - DetourAttach(&CEngineClient__ClientCmd, &CEngineClient::_ClientCmd); -} - -void HVEngineClient::Detach() const -{ - DetourDetach(&CEngineClient__ClientCmd, &CEngineClient::_ClientCmd); + DetourSetup(&CEngineClient__ClientCmd, &CEngineClient::_ClientCmd, bAttach); } diff --git a/src/engine/client/vengineclient_impl.h b/src/engine/client/vengineclient_impl.h index 6c346d4c..568e0336 100644 --- a/src/engine/client/vengineclient_impl.h +++ b/src/engine/client/vengineclient_impl.h @@ -40,7 +40,6 @@ class HVEngineClient : public IDetour g_pEngineClientVFTable = g_GameDll.GetVirtualMethodTable(".?AVCEngineClient@@"); g_pEngineClient = g_pEngineClientVFTable.RCast(); } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/cmd.cpp b/src/engine/cmd.cpp index 50f2e37d..c2f9c10a 100644 --- a/src/engine/cmd.cpp +++ b/src/engine/cmd.cpp @@ -106,11 +106,7 @@ bool Cmd_ForwardToServer(const CCommand* args) } /////////////////////////////////////////////////////////////////////////////// -void VCmd::Attach() const +void VCmd::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_Cmd_ForwardToServer, &Cmd_ForwardToServer); -} -void VCmd::Detach() const -{ - DetourDetach((LPVOID*)&v_Cmd_ForwardToServer, &Cmd_ForwardToServer); + DetourSetup(&v_Cmd_ForwardToServer, &Cmd_ForwardToServer, bAttach); } diff --git a/src/engine/cmd.h b/src/engine/cmd.h index 63e0c514..b06fab8e 100644 --- a/src/engine/cmd.h +++ b/src/engine/cmd.h @@ -84,8 +84,7 @@ class VCmd : public IDetour g_pExecutionMarkers = p_Cbuf_AddExecutionMarker.FindPattern("48 8B 0D").ResolveRelativeAddressSelf(3, 7).RCast*>(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; #endif // CMD_H diff --git a/src/engine/cmodel_bsp.cpp b/src/engine/cmodel_bsp.cpp index daded7e8..ec90c5ad 100644 --- a/src/engine/cmodel_bsp.cpp +++ b/src/engine/cmodel_bsp.cpp @@ -480,14 +480,8 @@ void Mod_UnloadPakFile(void) g_vBadMDLHandles.clear(); } -void VModel_BSP::Attach() const +void VModel_BSP::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_Mod_LoadPakForMap, &Mod_LoadPakForMap); - DetourAttach((LPVOID*)&v_Mod_ProcessPakQueue, &Mod_ProcessPakQueue); + DetourSetup(&v_Mod_LoadPakForMap, &Mod_LoadPakForMap, bAttach); + DetourSetup(&v_Mod_ProcessPakQueue, &Mod_ProcessPakQueue, bAttach); } - -void VModel_BSP::Detach() const -{ - DetourDetach((LPVOID*)&v_Mod_LoadPakForMap, &Mod_LoadPakForMap); - DetourDetach((LPVOID*)&v_Mod_ProcessPakQueue, &Mod_ProcessPakQueue); -} \ No newline at end of file diff --git a/src/engine/cmodel_bsp.h b/src/engine/cmodel_bsp.h index ff66ce91..c31dc3fb 100644 --- a/src/engine/cmodel_bsp.h +++ b/src/engine/cmodel_bsp.h @@ -89,7 +89,6 @@ class VModel_BSP : public IDetour qword_167ED7BC0 = p_Mod_ProcessPakQueue.Offset(0x200).FindPatternSelf("48 83 3D").ResolveRelativeAddressSelf(0x3, 0x8).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/common.cpp b/src/engine/common.cpp index 6bf5e6d5..1ae39107 100644 --- a/src/engine/common.cpp +++ b/src/engine/common.cpp @@ -90,12 +90,7 @@ void COM_ExplainDisconnection(bool bPrint, const char* fmt, ...) v_COM_ExplainDisconnection(bPrint, szBuf); } -void VCommon::Attach() const +void VCommon::Detour(const bool bAttach) const { - DetourAttach(&v_COM_ExplainDisconnection, COM_ExplainDisconnection); + DetourSetup(&v_COM_ExplainDisconnection, COM_ExplainDisconnection, bAttach); } - -void VCommon::Detach() const -{ - DetourDetach(&v_COM_ExplainDisconnection, COM_ExplainDisconnection); -} \ No newline at end of file diff --git a/src/engine/common.h b/src/engine/common.h index 2c540cb5..c0e842ee 100644 --- a/src/engine/common.h +++ b/src/engine/common.h @@ -33,7 +33,6 @@ class VCommon : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/debugoverlay.cpp b/src/engine/debugoverlay.cpp index 2dec70be..7ef7ff1e 100644 --- a/src/engine/debugoverlay.cpp +++ b/src/engine/debugoverlay.cpp @@ -300,12 +300,7 @@ void DrawAllOverlays(bool bRender) } /////////////////////////////////////////////////////////////////////////////// -void VDebugOverlay::Attach() const +void VDebugOverlay::Detour(const bool bAttach) const { - DetourAttach(&v_DrawAllOverlays, &DrawAllOverlays); -} - -void VDebugOverlay::Detach() const -{ - DetourDetach(&v_DrawAllOverlays, &DrawAllOverlays); + DetourSetup(&v_DrawAllOverlays, &DrawAllOverlays, bAttach); } diff --git a/src/engine/debugoverlay.h b/src/engine/debugoverlay.h index 5f38e5ca..08b2e453 100644 --- a/src/engine/debugoverlay.h +++ b/src/engine/debugoverlay.h @@ -228,7 +228,6 @@ class VDebugOverlay : public IDetour #endif } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/enginetrace.cpp b/src/engine/enginetrace.cpp index 39e947ef..d12666e8 100644 --- a/src/engine/enginetrace.cpp +++ b/src/engine/enginetrace.cpp @@ -6,13 +6,3 @@ #include "core/stdafx.h" #include "engine/enginetrace.h" - -void CEngineTrace_Attach() -{ - -} - -void CEngineTrace_Detach() -{ - -} diff --git a/src/engine/enginetrace.h b/src/engine/enginetrace.h index 033138ec..d990db4e 100644 --- a/src/engine/enginetrace.h +++ b/src/engine/enginetrace.h @@ -22,10 +22,6 @@ class CEngineTraceClient : public CEngineTrace inline CEngineTraceClient* g_pEngineTraceClient = nullptr; #endif // DEDICATED -/////////////////////////////////////////////////////////////////////////////// -void CEngineTrace_Attach(); -void CEngineTrace_Detach(); - /////////////////////////////////////////////////////////////////////////////// class VEngineTrace : public IDetour { @@ -47,7 +43,6 @@ class VEngineTrace : public IDetour g_pEngineTraceServer = reinterpret_cast(&g_pEngineTraceServerVFTable); // Must be done for virtual calls. #endif // CLIENT_DLL } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/gl_matsysiface.h b/src/engine/gl_matsysiface.h index 242fb2e6..681ec0a1 100644 --- a/src/engine/gl_matsysiface.h +++ b/src/engine/gl_matsysiface.h @@ -22,7 +22,6 @@ class VGL_MatSysIFace : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/gl_rmain.h b/src/engine/gl_rmain.h index 3f0103a9..4881691e 100644 --- a/src/engine/gl_rmain.h +++ b/src/engine/gl_rmain.h @@ -24,8 +24,7 @@ class VGL_RMain : public IDetour virtual void GetFun(void) const { } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/gl_rsurf.cpp b/src/engine/gl_rsurf.cpp index 8a1a0af6..997a3ccc 100644 --- a/src/engine/gl_rsurf.cpp +++ b/src/engine/gl_rsurf.cpp @@ -32,16 +32,9 @@ void* R_DrawWorldMeshesDepthAtTheEnd(void* ptr1, void* ptr2, void* ptr3, DrawWor return nullptr; } -void VGL_RSurf::Attach() const +void VGL_RSurf::Detour(const bool bAttach) const { - DetourAttach(&V_DrawWorldMeshes, &R_DrawWorldMeshes); - DetourAttach(&V_DrawWorldMeshesDepthOnly, &R_DrawWorldMeshesDepthOnly); - DetourAttach(&V_DrawWorldMeshesDepthAtTheEnd, &R_DrawWorldMeshesDepthAtTheEnd); + DetourSetup(&V_DrawWorldMeshes, &R_DrawWorldMeshes, bAttach); + DetourSetup(&V_DrawWorldMeshesDepthOnly, &R_DrawWorldMeshesDepthOnly, bAttach); + DetourSetup(&V_DrawWorldMeshesDepthAtTheEnd, &R_DrawWorldMeshesDepthAtTheEnd, bAttach); } - -void VGL_RSurf::Detach() const -{ - DetourDetach(&V_DrawWorldMeshes, &R_DrawWorldMeshes); - DetourDetach(&V_DrawWorldMeshesDepthOnly, &R_DrawWorldMeshesDepthOnly); - DetourDetach(&V_DrawWorldMeshesDepthAtTheEnd, &R_DrawWorldMeshesDepthAtTheEnd); -} \ No newline at end of file diff --git a/src/engine/gl_rsurf.h b/src/engine/gl_rsurf.h index 0c235ec6..ff793a41 100644 --- a/src/engine/gl_rsurf.h +++ b/src/engine/gl_rsurf.h @@ -35,7 +35,6 @@ class VGL_RSurf : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/gl_screen.h b/src/engine/gl_screen.h index cd116d64..06d07471 100644 --- a/src/engine/gl_screen.h +++ b/src/engine/gl_screen.h @@ -39,7 +39,6 @@ class VGL_Screen : public IDetour } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/host.cpp b/src/engine/host.cpp index 53abafbc..ae5a8715 100644 --- a/src/engine/host.cpp +++ b/src/engine/host.cpp @@ -56,7 +56,7 @@ void _Host_RunFrame(void* unused, float time) return v_Host_RunFrame(unused, time); } -void _Host_Error(char* error, ...) +void _Host_Error(const char* error, ...) { char buf[1024]; {///////////////////////////// @@ -74,20 +74,11 @@ void _Host_Error(char* error, ...) } /////////////////////////////////////////////////////////////////////////////// -void VHost::Attach() const +void VHost::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_Host_RunFrame, &_Host_RunFrame); + DetourSetup(&v_Host_RunFrame, &_Host_RunFrame, bAttach); #ifndef DEDICATED // Dedicated already logs this! - DetourAttach((LPVOID*)&v_Host_Error, &_Host_Error); + DetourSetup(&v_Host_Error, &_Host_Error, bAttach); #endif // !DEDICATED } - -void VHost::Detach() const -{ - DetourDetach((LPVOID*)&v_Host_RunFrame, &_Host_RunFrame); - -#ifndef DEDICATED // Dedicated already logs this! - DetourDetach((LPVOID*)&v_Host_Error, &_Host_Error); -#endif // !DEDICATED -} \ No newline at end of file diff --git a/src/engine/host.h b/src/engine/host.h index e0d721c7..1dce0e30 100644 --- a/src/engine/host.h +++ b/src/engine/host.h @@ -106,7 +106,6 @@ class VHost : public IDetour host_frametime_stddeviation = p_Host_RunFrame.Offset(n_host_frametime_stddeviation_search_offset).FindPatternSelf("F3 0F 11").ResolveRelativeAddressSelf(0x4, 0x8).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/host_cmd.cpp b/src/engine/host_cmd.cpp index ceca0964..336878fe 100644 --- a/src/engine/host_cmd.cpp +++ b/src/engine/host_cmd.cpp @@ -81,21 +81,12 @@ bool DFS_InitializeFeatureFlagDefinitions(const char* pszFeatureFlags) #endif // !(GAMEDLL_S0) || !(GAMEDLL_S1) || !(GAMEDLL_S2) /////////////////////////////////////////////////////////////////////////////// -void VHostCmd::Attach() const +void VHostCmd::Detour(const bool bAttach) const { - DetourAttach(&v_Host_Shutdown, &Host_Shutdown); - DetourAttach(&v_Host_Status_PrintClient, &Host_Status_PrintClient); + DetourSetup(&v_Host_Shutdown, &Host_Shutdown, bAttach); + DetourSetup(&v_Host_Status_PrintClient, &Host_Status_PrintClient, bAttach); #if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) && !defined (GAMEDLL_S2) - DetourAttach(&v_DFS_InitializeFeatureFlagDefinitions, &DFS_InitializeFeatureFlagDefinitions); -#endif // !(GAMEDLL_S0) || !(GAMEDLL_S1) || !(GAMEDLL_S2) -} - -void VHostCmd::Detach() const -{ - DetourDetach(&v_Host_Shutdown, &Host_Shutdown); - DetourDetach(&v_Host_Status_PrintClient, &Host_Status_PrintClient); -#if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) && !defined (GAMEDLL_S2) - DetourDetach(&v_DFS_InitializeFeatureFlagDefinitions, &DFS_InitializeFeatureFlagDefinitions); + DetourSetup(&v_DFS_InitializeFeatureFlagDefinitions, &DFS_InitializeFeatureFlagDefinitions, bAttach); #endif // !(GAMEDLL_S0) || !(GAMEDLL_S1) || !(GAMEDLL_S2) } diff --git a/src/engine/host_cmd.h b/src/engine/host_cmd.h index aafdce52..c80393df 100644 --- a/src/engine/host_cmd.h +++ b/src/engine/host_cmd.h @@ -101,7 +101,6 @@ class VHostCmd : public IDetour #endif } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/host_state.cpp b/src/engine/host_state.cpp index cf013480..eff1141c 100644 --- a/src/engine/host_state.cpp +++ b/src/engine/host_state.cpp @@ -518,13 +518,9 @@ void CHostState::ResetLevelName(void) Q_snprintf(const_cast(m_levelName), sizeof(m_levelName), "%s", szNoMap); } -void VHostState::Attach(void) const +void VHostState::Detour(const bool bAttach) const { - DetourAttach(&CHostState_FrameUpdate, &CHostState::FrameUpdate); -} -void VHostState::Detach(void) const -{ - DetourDetach(&CHostState_FrameUpdate, &CHostState::FrameUpdate); + DetourSetup(&CHostState_FrameUpdate, &CHostState::FrameUpdate, bAttach); } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/host_state.h b/src/engine/host_state.h index 398ed62f..580003c5 100644 --- a/src/engine/host_state.h +++ b/src/engine/host_state.h @@ -100,7 +100,6 @@ class VHostState : public IDetour g_pHostState = p_CHostState_FrameUpdate.FindPattern("48 8D ?? ?? ?? ?? 01", CMemory::Direction::DOWN, 100).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/matsys_interface.cpp b/src/engine/matsys_interface.cpp index bb752c49..9d774f7a 100644 --- a/src/engine/matsys_interface.cpp +++ b/src/engine/matsys_interface.cpp @@ -26,12 +26,7 @@ bool UpdateCurrentVideoConfig(MaterialSystem_Config_t* pConfig) */ /////////////////////////////////////////////////////////////////////////////// -void VMatSys_Interface::Attach() const +void VMatSys_Interface::Detour(const bool bAttach) const { - //DetourAttach(&v_UpdateCurrentVideoConfig, &UpdateCurrentVideoConfig); + //DetourSetup(&v_UpdateCurrentVideoConfig, &UpdateCurrentVideoConfig, bAttach); } - -void VMatSys_Interface::Detach() const -{ - //DetourDetach(&v_UpdateCurrentVideoConfig, &UpdateCurrentVideoConfig); -} \ No newline at end of file diff --git a/src/engine/matsys_interface.h b/src/engine/matsys_interface.h index 12432969..83a97ad3 100644 --- a/src/engine/matsys_interface.h +++ b/src/engine/matsys_interface.h @@ -42,8 +42,7 @@ class VMatSys_Interface : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/modelinfo.h b/src/engine/modelinfo.h index 5a5bbea6..a3ef8624 100644 --- a/src/engine/modelinfo.h +++ b/src/engine/modelinfo.h @@ -60,8 +60,7 @@ class VModelInfo : public IDetour #endif // DEDICATED } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/modelloader.cpp b/src/engine/modelloader.cpp index 444a29f1..817127a3 100644 --- a/src/engine/modelloader.cpp +++ b/src/engine/modelloader.cpp @@ -345,20 +345,11 @@ void AddGameLump() } /////////////////////////////////////////////////////////////////////////////// -void VModelLoader::Attach() const +void VModelLoader::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&CModelLoader__LoadModel, &CModelLoader::LoadModel); - DetourAttach((LPVOID*)&CModelLoader__Map_LoadModelGuts, &CModelLoader::Map_LoadModelGuts); + DetourSetup(&CModelLoader__LoadModel, &CModelLoader::LoadModel, bAttach); + DetourSetup(&CModelLoader__Map_LoadModelGuts, &CModelLoader::Map_LoadModelGuts, bAttach); - DetourAttach((LPVOID*)&CMapLoadHelper__CMapLoadHelper, &CMapLoadHelper::Constructor); - DetourAttach((LPVOID*)&v_AddGameLump, &AddGameLump); -} - -void VModelLoader::Detach() const -{ - DetourDetach((LPVOID*)&CModelLoader__LoadModel, &CModelLoader::LoadModel); - DetourDetach((LPVOID*)&CModelLoader__Map_LoadModelGuts, &CModelLoader::Map_LoadModelGuts); - - DetourDetach((LPVOID*)&CMapLoadHelper__CMapLoadHelper, &CMapLoadHelper::Constructor); - DetourDetach((LPVOID*)&v_AddGameLump, &AddGameLump); + DetourSetup(&CMapLoadHelper__CMapLoadHelper, &CMapLoadHelper::Constructor, bAttach); + DetourSetup(&v_AddGameLump, &AddGameLump, bAttach); } diff --git a/src/engine/modelloader.h b/src/engine/modelloader.h index dec12e0c..011d4654 100644 --- a/src/engine/modelloader.h +++ b/src/engine/modelloader.h @@ -179,7 +179,6 @@ class VModelLoader : public IDetour s_szMapPathName = p_CMapLoadHelper__CMapLoadHelper.FindPattern("4C 8D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/net.cpp b/src/engine/net.cpp index 46364a10..906b110e 100644 --- a/src/engine/net.cpp +++ b/src/engine/net.cpp @@ -297,22 +297,13 @@ const char* NET_ErrorString(int iCode) #ifndef NETCONSOLE /////////////////////////////////////////////////////////////////////////////// -void VNet::Attach() const +void VNet::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_NET_Config, &NET_Config); - DetourAttach((LPVOID*)&v_NET_ReceiveDatagram, &NET_ReceiveDatagram); - DetourAttach((LPVOID*)&v_NET_SendDatagram, &NET_SendDatagram); - DetourAttach((LPVOID*)&v_NET_Decompress, &NET_Decompress); - DetourAttach((LPVOID*)&v_NET_PrintFunc, &NET_PrintFunc); -} - -void VNet::Detach() const -{ - DetourDetach((LPVOID*)&v_NET_Config, &NET_Config); - DetourDetach((LPVOID*)&v_NET_ReceiveDatagram, &NET_ReceiveDatagram); - DetourDetach((LPVOID*)&v_NET_SendDatagram, &NET_SendDatagram); - DetourDetach((LPVOID*)&v_NET_Decompress, &NET_Decompress); - DetourDetach((LPVOID*)&v_NET_PrintFunc, &NET_PrintFunc); + DetourSetup(&v_NET_Config, &NET_Config, bAttach); + DetourSetup(&v_NET_ReceiveDatagram, &NET_ReceiveDatagram, bAttach); + DetourSetup(&v_NET_SendDatagram, &NET_SendDatagram, bAttach); + DetourSetup(&v_NET_Decompress, &NET_Decompress, bAttach); + DetourSetup(&v_NET_PrintFunc, &NET_PrintFunc, bAttach); } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/net.h b/src/engine/net.h index 51e1763c..a70926f4 100644 --- a/src/engine/net.h +++ b/src/engine/net.h @@ -35,10 +35,10 @@ inline CMemory p_NET_SendDatagram; inline int(*v_NET_SendDatagram)(SOCKET s, void* pPayload, int iLenght, netadr_t* pAdr, bool bEncrypted); inline CMemory p_NET_Decompress; -inline int(*v_NET_Decompress)(CLZSS* lzss, unsigned char* pInput, unsigned char* pOutput, unsigned int unBufSize); +inline unsigned int(*v_NET_Decompress)(CLZSS* lzss, unsigned char* pInput, unsigned char* pOutput, unsigned int unBufSize); inline CMemory p_NET_PrintFunc; -inline void(*v_NET_PrintFunc)(const char* fmt); +inline void(*v_NET_PrintFunc)(const char* fmt, ...); /////////////////////////////////////////////////////////////////////////////// bool NET_ReceiveDatagram(int iSocket, netpacket_s* pInpacket, bool bRaw); @@ -91,8 +91,8 @@ class VNet : public IDetour v_NET_SetKey = p_NET_SetKey.RCast(); /*48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 48 8B F9 41 B8*/ v_NET_ReceiveDatagram = p_NET_ReceiveDatagram.RCast(); /*E8 ?? ?? ?? ?? 84 C0 75 35 48 8B D3*/ v_NET_SendDatagram = p_NET_SendDatagram.RCast(); /*48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 41 56 41 57 48 81 EC ?? 05 00 00*/ - v_NET_Decompress = p_NET_Decompress.RCast(); - v_NET_PrintFunc = p_NET_PrintFunc.RCast(); /*48 89 54 24 10 4C 89 44 24 18 4C 89 4C 24 20 C3 48*/ + v_NET_Decompress = p_NET_Decompress.RCast(); + v_NET_PrintFunc = p_NET_PrintFunc.RCast(); /*48 89 54 24 10 4C 89 44 24 18 4C 89 4C 24 20 C3 48*/ } virtual void GetVar(void) const { @@ -101,8 +101,7 @@ class VNet : public IDetour g_pNetTime = p_NET_Init.Offset(0xA).FindPatternSelf("F2 0F").ResolveRelativeAddressSelf(0x4, 0x8).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// #endif // !NETCONSOLE diff --git a/src/engine/net_chan.cpp b/src/engine/net_chan.cpp index e7a769e3..8edb836a 100644 --- a/src/engine/net_chan.cpp +++ b/src/engine/net_chan.cpp @@ -573,15 +573,9 @@ bool CNetChan::HasPendingReliableData(void) } /////////////////////////////////////////////////////////////////////////////// -void VNetChan::Attach() const +void VNetChan::Detour(const bool bAttach) const { - DetourAttach((PVOID*)&v_NetChan_Shutdown, &CNetChan::_Shutdown); - DetourAttach((PVOID*)&v_NetChan_FlowNewPacket, &CNetChan::_FlowNewPacket); - DetourAttach((PVOID*)&v_NetChan_ProcessMessages, &CNetChan::_ProcessMessages); -} -void VNetChan::Detach() const -{ - DetourDetach((PVOID*)&v_NetChan_Shutdown, &CNetChan::_Shutdown); - DetourDetach((PVOID*)&v_NetChan_FlowNewPacket, &CNetChan::_FlowNewPacket); - DetourDetach((PVOID*)&v_NetChan_ProcessMessages, &CNetChan::_ProcessMessages); + DetourSetup(&v_NetChan_Shutdown, &CNetChan::_Shutdown, bAttach); + DetourSetup(&v_NetChan_FlowNewPacket, &CNetChan::_FlowNewPacket, bAttach); + DetourSetup(&v_NetChan_ProcessMessages, &CNetChan::_ProcessMessages, bAttach); } diff --git a/src/engine/net_chan.h b/src/engine/net_chan.h index fc7df77f..4e32607d 100644 --- a/src/engine/net_chan.h +++ b/src/engine/net_chan.h @@ -292,8 +292,7 @@ class VNetChan : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/networkstringtable.cpp b/src/engine/networkstringtable.cpp index fd9c478b..44647931 100644 --- a/src/engine/networkstringtable.cpp +++ b/src/engine/networkstringtable.cpp @@ -112,16 +112,9 @@ void CNetworkStringTableContainer::WriteUpdateMessage(CNetworkStringTableContain v_CNetworkStringTableContainer__WriteUpdateMessage(thisp, pClient, nTickAck, pMsg); } -void VNetworkStringTableContainer::Attach() const +void VNetworkStringTableContainer::Detour(const bool bAttach) const { #if !defined (CLIENT_DLL) && !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) // TODO: doesn't work properly for S0/S1 yet. - DetourAttach(&v_CNetworkStringTableContainer__WriteUpdateMessage, &CNetworkStringTableContainer::WriteUpdateMessage); + DetourSetup(&v_CNetworkStringTableContainer__WriteUpdateMessage, &CNetworkStringTableContainer::WriteUpdateMessage, bAttach); #endif // !CLIENT_DLL && !GAMEDLL_S0 && !GAMEDLL_S1 } - -void VNetworkStringTableContainer::Detach() const -{ -#if !defined (CLIENT_DLL) && !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) // TODO: doesn't work properly for S0/S1 yet. - DetourDetach(&v_CNetworkStringTableContainer__WriteUpdateMessage, &CNetworkStringTableContainer::WriteUpdateMessage); -#endif // !CLIENT_DLL && !GAMEDLL_S0 && !GAMEDLL_S1 -} \ No newline at end of file diff --git a/src/engine/networkstringtable.h b/src/engine/networkstringtable.h index 6dc26128..b08828ad 100644 --- a/src/engine/networkstringtable.h +++ b/src/engine/networkstringtable.h @@ -75,8 +75,7 @@ class VNetworkStringTableContainer : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/server/datablock_sender.h b/src/engine/server/datablock_sender.h index 89005642..b29b8722 100644 --- a/src/engine/server/datablock_sender.h +++ b/src/engine/server/datablock_sender.h @@ -80,8 +80,7 @@ class VServerDataBlockSender : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/server/persistence.cpp b/src/engine/server/persistence.cpp index 93f52b49..d90207bd 100644 --- a/src/engine/server/persistence.cpp +++ b/src/engine/server/persistence.cpp @@ -10,15 +10,9 @@ bool Persistence_SetXP(int a1, int* a2) } #endif -void VPersistence::Attach() const +void VPersistence::Detour(const bool bAttach) const { #if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) - DetourAttach((LPVOID*)&v_Persistence_SetXP, &Persistence_SetXP); + Setup(&v_Persistence_SetXP, &Persistence_SetXP, bAttach); #endif } -void VPersistence::Detach() const -{ -#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) - DetourDetach((LPVOID*)&v_Persistence_SetXP, &Persistence_SetXP); -#endif -} \ No newline at end of file diff --git a/src/engine/server/persistence.h b/src/engine/server/persistence.h index 9abf3817..d9897cea 100644 --- a/src/engine/server/persistence.h +++ b/src/engine/server/persistence.h @@ -24,8 +24,7 @@ class VPersistence : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index 369e57de..e34f3a86 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -200,23 +200,15 @@ void CServer::RunFrame(CServer* pServer) } /////////////////////////////////////////////////////////////////////////////// -void VServer::Attach() const +void VServer::Detour(const bool bAttach) const { - DetourAttach(&v_CServer_RunFrame, &CServer::RunFrame); + DetourSetup(&v_CServer_RunFrame, &CServer::RunFrame, bAttach); #if defined(GAMEDLL_S3) - DetourAttach((LPVOID*)&v_CServer_ConnectClient, &CServer::ConnectClient); - DetourAttach((LPVOID*)&v_CServer_FrameJob, &CServer::FrameJob); + DetourSetup(&v_CServer_ConnectClient, &CServer::ConnectClient, bAttach); + DetourSetup(&v_CServer_FrameJob, &CServer::FrameJob, bAttach); #endif // !TODO: S1 and S2 CServer functions require work. } -void VServer::Detach() const -{ - DetourDetach(&v_CServer_RunFrame, &CServer::RunFrame); -#if defined(GAMEDLL_S3) - DetourDetach((LPVOID*)&v_CServer_ConnectClient, &CServer::ConnectClient); - DetourDetach((LPVOID*)&v_CServer_FrameJob, &CServer::FrameJob); -#endif // !TODO: S1 and S2 CServer functions require work. -} /////////////////////////////////////////////////////////////////////////////// CServer* g_pServer = nullptr; \ No newline at end of file diff --git a/src/engine/server/server.h b/src/engine/server/server.h index a090d48a..1055efeb 100644 --- a/src/engine/server/server.h +++ b/src/engine/server/server.h @@ -166,7 +166,6 @@ class VServer : public IDetour #endif // !CLIENT_DLL } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/server/sv_main.h b/src/engine/server/sv_main.h index a5213c98..738e2223 100644 --- a/src/engine/server/sv_main.h +++ b/src/engine/server/sv_main.h @@ -85,23 +85,13 @@ class HSV_Main : public IDetour } virtual void GetCon(void) const { } /////////////////////////////////////////////////////////////////////////////// - virtual void Attach(void) const + virtual void Detour(const bool bAttach) const { - //DetourAttach(&v_SV_InitGameDLL, SV_InitGameDLL); - //DetourAttach(&v_SV_ShutdownGameDLL, SV_ShutdownGameDLL); - //DetourAttach(&v_SV_ActivateServer, SV_ActivateServer); + //DetourSetup(&v_SV_InitGameDLL, SV_InitGameDLL, bAttach); + //DetourSetup(&v_SV_ShutdownGameDLL, SV_ShutdownGameDLL, bAttach); + //DetourSetup(&v_SV_ActivateServer, SV_ActivateServer, bAttach); #ifndef CLIENT_DLL - DetourAttach(&v_SV_BroadcastVoiceData, SV_BroadcastVoiceData); -#endif // !CLIENT_DLL - } - - virtual void Detach(void) const - { - //DetourDetach(&v_SV_InitGameDLL, SV_InitGameDLL); - //DetourDetach(&v_SV_ShutdownGameDLL, SV_ShutdownGameDLL); - //DetourDetach(&v_SV_ActivateServer, SV_ActivateServer); -#ifndef CLIENT_DLL - DetourDetach(&v_SV_BroadcastVoiceData, SV_BroadcastVoiceData); + DetourSetup(&v_SV_BroadcastVoiceData, SV_BroadcastVoiceData, bAttach); #endif // !CLIENT_DLL } }; diff --git a/src/engine/server/vengineserver_impl.cpp b/src/engine/server/vengineserver_impl.cpp index 2865686e..cb449af4 100644 --- a/src/engine/server/vengineserver_impl.cpp +++ b/src/engine/server/vengineserver_impl.cpp @@ -15,14 +15,9 @@ bool CVEngineServer::PersistenceAvailable(void* entidx, int clientidx) return IVEngineServer__PersistenceAvailable(entidx, clientidx); } -void HVEngineServer::Attach() const +void HVEngineServer::Detour(const bool bAttach) const { - DetourAttach(&IVEngineServer__PersistenceAvailable, &CVEngineServer::PersistenceAvailable); -} - -void HVEngineServer::Detach() const -{ - DetourDetach(&IVEngineServer__PersistenceAvailable, &CVEngineServer::PersistenceAvailable); + DetourSetup(&IVEngineServer__PersistenceAvailable, &CVEngineServer::PersistenceAvailable, bAttach); } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/server/vengineserver_impl.h b/src/engine/server/vengineserver_impl.h index 0d0164ba..5050fba6 100644 --- a/src/engine/server/vengineserver_impl.h +++ b/src/engine/server/vengineserver_impl.h @@ -65,7 +65,6 @@ class HVEngineServer : public IDetour m_bIsDedicated = pEngineServerVFTable.WalkVTableSelf(3).DerefSelf().ResolveRelativeAddress(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/staticpropmgr.cpp b/src/engine/staticpropmgr.cpp index 363931e5..40822e22 100644 --- a/src/engine/staticpropmgr.cpp +++ b/src/engine/staticpropmgr.cpp @@ -22,16 +22,9 @@ void* __fastcall CStaticProp_Init(int64_t thisptr, int64_t a2, unsigned int idx, return v_CStaticProp_Init(thisptr, a2, idx, a4, lump, a6, a7); } -void VStaticPropMgr::Attach() const +void VStaticPropMgr::Detour(const bool bAttach) const { #ifndef DEDICATED - DetourAttach((LPVOID*)&v_CStaticProp_Init, &CStaticProp_Init); -#endif // !DEDICATED -} - -void VStaticPropMgr::Detach() const -{ -#ifndef DEDICATED - DetourDetach((LPVOID*)&v_CStaticProp_Init, &CStaticProp_Init); + DetourSetup(&v_CStaticProp_Init, &CStaticProp_Init, bAttach); #endif // !DEDICATED } diff --git a/src/engine/staticpropmgr.h b/src/engine/staticpropmgr.h index f486a962..39d1aaaa 100644 --- a/src/engine/staticpropmgr.h +++ b/src/engine/staticpropmgr.h @@ -24,7 +24,6 @@ class VStaticPropMgr : public IDetour } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/sys_dll.cpp b/src/engine/sys_dll.cpp index 04d4e394..a9ccb2a8 100644 --- a/src/engine/sys_dll.cpp +++ b/src/engine/sys_dll.cpp @@ -177,24 +177,13 @@ int HSys_Error_Internal(char* fmt, va_list args) return Sys_Error_Internal(fmt, args); } -void VSys_Dll::Attach() const +void VSys_Dll::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::StaticPreInit); - DetourAttach((LPVOID*)&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::StaticCreate); + DetourSetup(&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::StaticPreInit, bAttach); + DetourSetup(&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::StaticCreate, bAttach); - DetourAttach((LPVOID*)&CModAppSystemGroup_Main, &CModAppSystemGroup::StaticMain); - DetourAttach((LPVOID*)&CModAppSystemGroup_Create, &CModAppSystemGroup::StaticCreate); + DetourSetup(&CModAppSystemGroup_Main, &CModAppSystemGroup::StaticMain, bAttach); + DetourSetup(&CModAppSystemGroup_Create, &CModAppSystemGroup::StaticCreate, bAttach); - DetourAttach(&Sys_Error_Internal, &HSys_Error_Internal); -} - -void VSys_Dll::Detach() const -{ - DetourDetach((LPVOID*)&CSourceAppSystemGroup__PreInit, &CSourceAppSystemGroup::StaticPreInit); - DetourDetach((LPVOID*)&CSourceAppSystemGroup__Create, &CSourceAppSystemGroup::StaticCreate); - - DetourDetach((LPVOID*)&CModAppSystemGroup_Main, &CModAppSystemGroup::StaticMain); - DetourDetach((LPVOID*)&CModAppSystemGroup_Create, &CModAppSystemGroup::StaticCreate); - - DetourDetach(&Sys_Error_Internal, &HSys_Error_Internal); + DetourSetup(&Sys_Error_Internal, &HSys_Error_Internal, bAttach); } diff --git a/src/engine/sys_dll.h b/src/engine/sys_dll.h index ba8e43c3..74ac00bc 100644 --- a/src/engine/sys_dll.h +++ b/src/engine/sys_dll.h @@ -103,7 +103,6 @@ class VSys_Dll : public IDetour gfExtendedError = p_COM_ExplainDisconnection.Offset(0x0).FindPatternSelf("C6 05", CMemory::Direction::DOWN, 300).ResolveRelativeAddressSelf(0x2, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/sys_dll2.cpp b/src/engine/sys_dll2.cpp index 4f741d01..3c8c67ac 100644 --- a/src/engine/sys_dll2.cpp +++ b/src/engine/sys_dll2.cpp @@ -232,20 +232,11 @@ bool CEngineAPI::MainLoop() } /////////////////////////////////////////////////////////////////////////////// -void VSys_Dll2::Attach() const +void VSys_Dll2::Detour(const bool bAttach) const { - DetourAttach(&CEngineAPI_Init, &CEngineAPI::VInit); - DetourAttach(&CEngineAPI_ModInit, &CEngineAPI::VModInit); - DetourAttach(&CEngineAPI_PumpMessages, &CEngineAPI::PumpMessages); - DetourAttach(&CEngineAPI_MainLoop, &CEngineAPI::MainLoop); - DetourAttach(&v_CEngineAPI_SetStartupInfo, &CEngineAPI::VSetStartupInfo); + DetourSetup(&CEngineAPI_Init, &CEngineAPI::VInit, bAttach); + DetourSetup(&CEngineAPI_ModInit, &CEngineAPI::VModInit, bAttach); + DetourSetup(&CEngineAPI_PumpMessages, &CEngineAPI::PumpMessages, bAttach); + DetourSetup(&CEngineAPI_MainLoop, &CEngineAPI::MainLoop, bAttach); + DetourSetup(&v_CEngineAPI_SetStartupInfo, &CEngineAPI::VSetStartupInfo, bAttach); } - -void VSys_Dll2::Detach() const -{ - DetourDetach(&CEngineAPI_Init, &CEngineAPI::VInit); - DetourDetach(&CEngineAPI_ModInit, &CEngineAPI::VModInit); - DetourDetach(&CEngineAPI_PumpMessages, &CEngineAPI::PumpMessages); - DetourDetach(&CEngineAPI_MainLoop, &CEngineAPI::MainLoop); - DetourDetach(&v_CEngineAPI_SetStartupInfo, &CEngineAPI::VSetStartupInfo); -} \ No newline at end of file diff --git a/src/engine/sys_dll2.h b/src/engine/sys_dll2.h index dcf878db..443208a0 100644 --- a/src/engine/sys_dll2.h +++ b/src/engine/sys_dll2.h @@ -132,7 +132,6 @@ class VSys_Dll2 : public IDetour g_szMTVFItemName = p_ResetMTVFTaskItem.FindPattern("C6 05", CMemory::Direction::DOWN, 250).ResolveRelativeAddressSelf(0x2, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/sys_engine.cpp b/src/engine/sys_engine.cpp index f27c21dc..87c06254 100644 --- a/src/engine/sys_engine.cpp +++ b/src/engine/sys_engine.cpp @@ -31,12 +31,7 @@ bool CEngine::_Frame(CEngine* thisp) return v_CEngine_Frame(thisp); } -void VEngine::Attach() const +void VEngine::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_CEngine_Frame, &CEngine::_Frame); + DetourSetup(&v_CEngine_Frame, &CEngine::_Frame, bAttach); } - -void VEngine::Detach() const -{ - DetourDetach((LPVOID*)&v_CEngine_Frame, &CEngine::_Frame); -} \ No newline at end of file diff --git a/src/engine/sys_engine.h b/src/engine/sys_engine.h index 8ad38a72..fc6c5e7c 100644 --- a/src/engine/sys_engine.h +++ b/src/engine/sys_engine.h @@ -64,7 +64,6 @@ class VEngine : public IDetour gsm_Quitting = g_GameDll.FindPatternSIMD("89 15 ?? ?? ?? ?? C3 CC CC CC CC CC CC CC CC CC 83 C1 F4").ResolveRelativeAddressSelf(0x2, 0x6).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/sys_getmodes.cpp b/src/engine/sys_getmodes.cpp index 37211f3a..bd4e9615 100644 --- a/src/engine/sys_getmodes.cpp +++ b/src/engine/sys_getmodes.cpp @@ -17,12 +17,7 @@ bool HCVideoMode_Common__CreateGameWindow(int* pnRect) return CVideoMode_Common__CreateGameWindow(pnRect); } -void HVideoMode_Common::Attach() const +void HVideoMode_Common::Detour(const bool bAttach) const { - DetourAttach(&CVideoMode_Common__CreateGameWindow, &HCVideoMode_Common__CreateGameWindow); -} - -void HVideoMode_Common::Detach() const -{ - DetourDetach(&CVideoMode_Common__CreateGameWindow, &HCVideoMode_Common__CreateGameWindow); + DetourSetup(&CVideoMode_Common__CreateGameWindow, &HCVideoMode_Common__CreateGameWindow, bAttach); } diff --git a/src/engine/sys_getmodes.h b/src/engine/sys_getmodes.h index 6a7cd1d4..765c540c 100644 --- a/src/engine/sys_getmodes.h +++ b/src/engine/sys_getmodes.h @@ -31,7 +31,6 @@ class HVideoMode_Common : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/sys_mainwind.cpp b/src/engine/sys_mainwind.cpp index 4511cac8..43407dc3 100644 --- a/src/engine/sys_mainwind.cpp +++ b/src/engine/sys_mainwind.cpp @@ -118,14 +118,8 @@ void CGame::GetWindowRect(int* x, int* y, int* w, int* h) } /////////////////////////////////////////////////////////////////////////////// -void VGame::Attach() const +void VGame::Detour(const bool bAttach) const { - DetourAttach(&v_CGame__PlayStartupVideos, &CGame::PlayStartupVideos); - DetourAttach(&v_CGame__WindowProc, &CGame::WindowProc); + DetourSetup(&v_CGame__PlayStartupVideos, &CGame::PlayStartupVideos, bAttach); + DetourSetup(&v_CGame__WindowProc, &CGame::WindowProc, bAttach); } - -void VGame::Detach() const -{ - DetourDetach(&v_CGame__PlayStartupVideos, &CGame::PlayStartupVideos); - DetourDetach(&v_CGame__WindowProc, &CGame::WindowProc); -} \ No newline at end of file diff --git a/src/engine/sys_mainwind.h b/src/engine/sys_mainwind.h index 647fde7a..4c44b56e 100644 --- a/src/engine/sys_mainwind.h +++ b/src/engine/sys_mainwind.h @@ -82,8 +82,7 @@ class VGame : public IDetour g_pGame = p_CGame__AttachToWindow.FindPattern("48 8B 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/sys_utils.cpp b/src/engine/sys_utils.cpp index fc5157a9..f6788901 100644 --- a/src/engine/sys_utils.cpp +++ b/src/engine/sys_utils.cpp @@ -26,7 +26,7 @@ // ... - // Output : void _Error //----------------------------------------------------------------------------- -void _Error(char* fmt, ...) +void _Error(const char* fmt, ...) { char buf[4096]; bool shouldNewline = true; @@ -53,7 +53,7 @@ void _Error(char* fmt, ...) // *error - ... - // Output : void* _Warning //----------------------------------------------------------------------------- -void _Warning(int level, char* fmt, ...) +void _Warning(int level, const char* fmt, ...) { char buf[10000]; bool shouldNewline = true; @@ -114,20 +114,11 @@ int Sys_GetProcessUpTime(char* szBuffer) return v_Sys_GetProcessUpTime(szBuffer); } -void VSys_Utils::Attach() const +void VSys_Utils::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_Error, &_Error); - DetourAttach((LPVOID*)&v_Warning, &_Warning); + DetourSetup(&v_Error, &_Error, bAttach); + DetourSetup(&v_Warning, &_Warning, bAttach); #ifndef DEDICATED - DetourAttach((LPVOID*)&v_Con_NPrintf, &_Con_NPrintf); -#endif // !DEDICATED -} - -void VSys_Utils::Detach() const -{ - DetourDetach((LPVOID*)&v_Error, &_Error); - DetourDetach((LPVOID*)&v_Warning, &_Warning); -#ifndef DEDICATED - DetourDetach((LPVOID*)&v_Con_NPrintf, &_Con_NPrintf); + DetourSetup(&v_Con_NPrintf, &_Con_NPrintf, bAttach); #endif // !DEDICATED } diff --git a/src/engine/sys_utils.h b/src/engine/sys_utils.h index 9ad52cda..aa0b819a 100644 --- a/src/engine/sys_utils.h +++ b/src/engine/sys_utils.h @@ -47,7 +47,6 @@ class VSys_Utils : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/engine/traceinit.h b/src/engine/traceinit.h index aeee65f9..c26ee428 100644 --- a/src/engine/traceinit.h +++ b/src/engine/traceinit.h @@ -18,8 +18,7 @@ class VTraceInit : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/filesystem/basefilesystem.cpp b/src/filesystem/basefilesystem.cpp index ead925b3..cb9da8b5 100644 --- a/src/filesystem/basefilesystem.cpp +++ b/src/filesystem/basefilesystem.cpp @@ -69,7 +69,7 @@ bool CBaseFileSystem::VCheckDisk(const char* pszFilePath) // *pszFilePath - // Output : handle to file on success, NULL on failure //--------------------------------------------------------------------------------- -FileHandle_t CBaseFileSystem::VReadFromVPK(CBaseFileSystem* pFileSystem, FileHandle_t pResults, char* pszFilePath) +FileHandle_t CBaseFileSystem::VReadFromVPK(CBaseFileSystem* pFileSystem, FileHandle_t pResults, const char* pszFilePath) { if (VCheckDisk(pszFilePath)) { @@ -87,7 +87,7 @@ FileHandle_t CBaseFileSystem::VReadFromVPK(CBaseFileSystem* pFileSystem, FileHan // *pCache - // Output : true if file exists, false otherwise //--------------------------------------------------------------------------------- -bool CBaseFileSystem::VReadFromCache(CBaseFileSystem* pFileSystem, char* pszFilePath, FileSystemCache* pCache) +bool CBaseFileSystem::VReadFromCache(CBaseFileSystem* pFileSystem, const char* pszFilePath, FileSystemCache* pCache) { if (VCheckDisk(pszFilePath)) { @@ -201,23 +201,14 @@ CUtlString CBaseFileSystem::ReadString(FileHandle_t pFile) return result; } -void VBaseFileSystem::Attach() const +void VBaseFileSystem::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_CBaseFileSystem_Warning, &CBaseFileSystem::Warning); - DetourAttach((LPVOID*)&v_CBaseFileSystem_LoadFromVPK, &CBaseFileSystem::VReadFromVPK); - DetourAttach((LPVOID*)&v_CBaseFileSystem_LoadFromCache, &CBaseFileSystem::VReadFromCache); - DetourAttach((LPVOID*)&v_CBaseFileSystem_AddMapPackFile, &CBaseFileSystem::VAddMapPackFile); - DetourAttach((LPVOID*)&v_CBaseFileSystem_MountVPKFile, &CBaseFileSystem::VMountVPKFile); - DetourAttach((LPVOID*)&v_CBaseFileSystem_UnmountVPKFile, &CBaseFileSystem::VUnmountVPKFile); + DetourSetup(&v_CBaseFileSystem_Warning, &CBaseFileSystem::Warning, bAttach); + DetourSetup(&v_CBaseFileSystem_LoadFromVPK, &CBaseFileSystem::VReadFromVPK, bAttach); + DetourSetup(&v_CBaseFileSystem_LoadFromCache, &CBaseFileSystem::VReadFromCache, bAttach); + DetourSetup(&v_CBaseFileSystem_AddMapPackFile, &CBaseFileSystem::VAddMapPackFile, bAttach); + DetourSetup(&v_CBaseFileSystem_MountVPKFile, &CBaseFileSystem::VMountVPKFile, bAttach); + DetourSetup(&v_CBaseFileSystem_UnmountVPKFile, &CBaseFileSystem::VUnmountVPKFile, bAttach); } -void VBaseFileSystem::Detach() const -{ - DetourDetach((LPVOID*)&v_CBaseFileSystem_Warning, &CBaseFileSystem::Warning); - DetourDetach((LPVOID*)&v_CBaseFileSystem_LoadFromVPK, &CBaseFileSystem::VReadFromVPK); - DetourDetach((LPVOID*)&v_CBaseFileSystem_LoadFromCache, &CBaseFileSystem::VReadFromCache); - DetourDetach((LPVOID*)&v_CBaseFileSystem_AddMapPackFile, &CBaseFileSystem::VAddMapPackFile); - DetourDetach((LPVOID*)&v_CBaseFileSystem_MountVPKFile, &CBaseFileSystem::VMountVPKFile); - DetourDetach((LPVOID*)&v_CBaseFileSystem_UnmountVPKFile, &CBaseFileSystem::VUnmountVPKFile); -} CBaseFileSystem* g_pFileSystem = nullptr; \ No newline at end of file diff --git a/src/filesystem/basefilesystem.h b/src/filesystem/basefilesystem.h index b7397ca9..15bc895a 100644 --- a/src/filesystem/basefilesystem.h +++ b/src/filesystem/basefilesystem.h @@ -9,8 +9,8 @@ public: //-------------------------------------------------------- static void Warning(CBaseFileSystem* pFileSystem, FileWarningLevel_t level, const char* fmt, ...); static bool VCheckDisk(const char* pszFilePath); - static FileHandle_t VReadFromVPK(CBaseFileSystem* pFileSystem, FileHandle_t pResults, char* pszFilePath); - static bool VReadFromCache(CBaseFileSystem* pFileSystem, char* pszFilePath, FileSystemCache* pCache); + static FileHandle_t VReadFromVPK(CBaseFileSystem* pFileSystem, FileHandle_t pResults, const char* pszFilePath); + static bool VReadFromCache(CBaseFileSystem* pFileSystem, const char* pszFilePath, FileSystemCache* pCache); static void VAddMapPackFile(CBaseFileSystem* pFileSystem, const char* pPath, const char* pPathID, SearchPathAdd_t addType); static VPKData_t* VMountVPKFile(CBaseFileSystem* pFileSystem, const char* pszVpkPath); static const char* VUnmountVPKFile(CBaseFileSystem* pFileSystem, const char* pszVpkPath); @@ -104,7 +104,6 @@ class VBaseFileSystem : public IDetour .FindPattern("48 89", CMemory::Direction::DOWN, 512, 2).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/filesystem/filesystem.h b/src/filesystem/filesystem.h index 4251669b..552fab50 100644 --- a/src/filesystem/filesystem.h +++ b/src/filesystem/filesystem.h @@ -58,8 +58,7 @@ class VFileSystem_Stdio : public IDetour .FindPattern("48 89", CMemory::Direction::DOWN, 512, 1).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/client/input.cpp b/src/game/client/input.cpp index 9b3ce9d7..6a2f4ced 100644 --- a/src/game/client/input.cpp +++ b/src/game/client/input.cpp @@ -18,12 +18,7 @@ void CInput::SetCustomWeaponActivity(CInput* pInput, int weaponActivity) v_CInput__SetCustomWeaponActivity(pInput, weaponActivity); } -void VInput::Attach(void) const +void VInput::Detour(const bool bAttach) const { - DetourAttach(&v_CInput__SetCustomWeaponActivity, CInput::SetCustomWeaponActivity); -} - -void VInput::Detach(void) const -{ - DetourDetach(&v_CInput__SetCustomWeaponActivity, CInput::SetCustomWeaponActivity); + DetourSetup(&v_CInput__SetCustomWeaponActivity, CInput::SetCustomWeaponActivity, bAttach); } diff --git a/src/game/client/input.h b/src/game/client/input.h index 21fab76e..d135564b 100644 --- a/src/game/client/input.h +++ b/src/game/client/input.h @@ -39,8 +39,7 @@ class VInput : public IDetour { g_pInput_VFTable = g_GameDll.GetVirtualMethodTable(".?AVCInput@@").RCast(); } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/client/movehelper_client.h b/src/game/client/movehelper_client.h index 03a18071..4d3b43cf 100644 --- a/src/game/client/movehelper_client.h +++ b/src/game/client/movehelper_client.h @@ -44,8 +44,7 @@ class VMoveHelperClient : public IDetour s_MoveHelperClient = pFunc.FindPattern("4C 8D 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/client/viewrender.h b/src/game/client/viewrender.h index 13a862f7..127ea0e1 100644 --- a/src/game/client/viewrender.h +++ b/src/game/client/viewrender.h @@ -53,7 +53,6 @@ class V_ViewRender : public IDetour { g_pViewRender_VFTable = g_GameDll.GetVirtualMethodTable(".?AVCViewRender@@"); } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/ai_network.cpp b/src/game/server/ai_network.cpp index c47519ea..6735b606 100644 --- a/src/game/server/ai_network.cpp +++ b/src/game/server/ai_network.cpp @@ -154,12 +154,7 @@ CAI_NodeLink* CAI_Network::CreateNodeLink(int srcID, int destID) } //----------------------------------------------------------------------------- -void VAI_Network::Attach() const +void VAI_Network::Detour(const bool bAttach) const { - DetourAttach(&v_CAI_Network__DebugConnectMsg, &CAI_Network::DebugConnectMsg); -} - -void VAI_Network::Detach() const -{ - DetourDetach(&v_CAI_Network__DebugConnectMsg, &CAI_Network::DebugConnectMsg); + DetourSetup(&v_CAI_Network__DebugConnectMsg, &CAI_Network::DebugConnectMsg, bAttach); } diff --git a/src/game/server/ai_network.h b/src/game/server/ai_network.h index 8172848c..bf1dc1a1 100644 --- a/src/game/server/ai_network.h +++ b/src/game/server/ai_network.h @@ -90,7 +90,6 @@ class VAI_Network : public IDetour g_pAINetwork = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 4C 63 91 ?? ?? ?? ??").FindPatternSelf("48 8B").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/ai_networkmanager.cpp b/src/game/server/ai_networkmanager.cpp index 8f59e008..3db1432e 100644 --- a/src/game/server/ai_networkmanager.cpp +++ b/src/game/server/ai_networkmanager.cpp @@ -546,14 +546,8 @@ void CAI_NetworkBuilder::Build(CAI_NetworkBuilder* pBuilder, CAI_Network* pAINet CAI_NetworkBuilder::SaveNetworkGraph(pAINetwork); } -void VAI_NetworkManager::Attach() const +void VAI_NetworkManager::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&CAI_NetworkManager__LoadNetworkGraph, &CAI_NetworkManager::LoadNetworkGraph); - DetourAttach((LPVOID*)&CAI_NetworkBuilder__Build, &CAI_NetworkBuilder::Build); -} - -void VAI_NetworkManager::Detach() const -{ - DetourDetach((LPVOID*)&CAI_NetworkManager__LoadNetworkGraph, &CAI_NetworkManager::LoadNetworkGraph); - DetourDetach((LPVOID*)&CAI_NetworkBuilder__Build, &CAI_NetworkBuilder::Build); + DetourSetup(&CAI_NetworkManager__LoadNetworkGraph, &CAI_NetworkManager::LoadNetworkGraph, bAttach); + DetourSetup(&CAI_NetworkBuilder__Build, &CAI_NetworkBuilder::Build, bAttach); } diff --git a/src/game/server/ai_networkmanager.h b/src/game/server/ai_networkmanager.h index 487b40bc..79b3c962 100644 --- a/src/game/server/ai_networkmanager.h +++ b/src/game/server/ai_networkmanager.h @@ -173,7 +173,6 @@ class VAI_NetworkManager : public IDetour .FindPatternSelf("48 8B 05", CMemory::Direction::DOWN).ResolveRelativeAddressSelf(0x3, 0x7).RCast*>(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/ai_utility.cpp b/src/game/server/ai_utility.cpp index e85bb44b..34b30d3d 100644 --- a/src/game/server/ai_utility.cpp +++ b/src/game/server/ai_utility.cpp @@ -133,14 +133,8 @@ void Detour_HotSwap() } /////////////////////////////////////////////////////////////////////////////// -void VRecast::Attach() const +void VRecast::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_dtNavMesh__isPolyReachable, &IsGoalPolyReachable); - DetourAttach((LPVOID*)&v_Detour_LevelInit, &Detour_LevelInit); + DetourSetup(&v_dtNavMesh__isPolyReachable, &IsGoalPolyReachable, bAttach); + DetourSetup(&v_Detour_LevelInit, &Detour_LevelInit, bAttach); } - -void VRecast::Detach() const -{ - DetourDetach((LPVOID*)&v_dtNavMesh__isPolyReachable, &IsGoalPolyReachable); - DetourDetach((LPVOID*)&v_Detour_LevelInit, &Detour_LevelInit); -} \ No newline at end of file diff --git a/src/game/server/baseanimating.cpp b/src/game/server/baseanimating.cpp index 353c9d6c..f474aed7 100644 --- a/src/game/server/baseanimating.cpp +++ b/src/game/server/baseanimating.cpp @@ -81,10 +81,3 @@ CStudioHdr* CBaseAnimating::GetModelPtr(void) } return (m_pStudioHdr && m_pStudioHdr->IsValid()) ? m_pStudioHdr : nullptr; } - -void BaseAnimating_Attach() -{ -} -void BaseAnimating_Detach() -{ -} \ No newline at end of file diff --git a/src/game/server/baseanimating.h b/src/game/server/baseanimating.h index 00eb11c4..6e918e2d 100644 --- a/src/game/server/baseanimating.h +++ b/src/game/server/baseanimating.h @@ -138,9 +138,6 @@ protected: inline CMemory p_CBaseAnimating__LockStudioHdr; inline CBaseAnimating*(*v_CBaseAnimating__LockStudioHdr)(CBaseAnimating* thisp); -void BaseAnimating_Attach(); -void BaseAnimating_Detach(); - /////////////////////////////////////////////////////////////////////////////// class VBaseAnimating : public IDetour { @@ -155,8 +152,7 @@ class VBaseAnimating : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/baseentity.h b/src/game/server/baseentity.h index f672eb6d..3ea72abf 100644 --- a/src/game/server/baseentity.h +++ b/src/game/server/baseentity.h @@ -297,8 +297,7 @@ class VBaseEntity : public IDetour g_pEntityList = p_CBaseEntity__GetBaseEntity.FindPattern("48 8D 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/detour_impl.h b/src/game/server/detour_impl.h index e10ac00f..be8a25c2 100644 --- a/src/game/server/detour_impl.h +++ b/src/game/server/detour_impl.h @@ -19,7 +19,7 @@ inline CMemory p_dtNavMesh__addTile; inline dtStatus(*v_dtNavMesh__addTile)(dtNavMesh* thisptr, unsigned char* data, dtMeshHeader* header, int dataSize, int flags, dtTileRef lastRef); inline CMemory p_dtNavMesh__isPolyReachable; -inline bool(*v_dtNavMesh__isPolyReachable)(dtNavMesh* thisptr, dtPolyRef poly_1, dtPolyRef poly_2, int hull_type); +inline uint8_t(*v_dtNavMesh__isPolyReachable)(dtNavMesh* thisptr, dtPolyRef poly_1, dtPolyRef poly_2, int hull_type); constexpr const char* NAVMESH_PATH = "maps/navmesh/"; @@ -84,7 +84,7 @@ class VRecast : public IDetour v_Detour_FreeNavMesh = p_Detour_FreeNavMesh.RCast(); v_dtNavMesh__Init = p_dtNavMesh__Init.RCast(); /*4C 89 44 24 ?? 53 41 56 48 81 EC ?? ?? ?? ?? 0F 10 11*/ v_dtNavMesh__addTile = p_dtNavMesh__addTile.RCast(); /*44 89 4C 24 ?? 41 55*/ - v_dtNavMesh__isPolyReachable = p_dtNavMesh__isPolyReachable.RCast(); /*48 89 6C 24 ?? 48 89 74 24 ?? 48 89 7C 24 ?? 41 56 49 63 F1*/ + v_dtNavMesh__isPolyReachable = p_dtNavMesh__isPolyReachable.RCast(); /*48 89 6C 24 ?? 48 89 74 24 ?? 48 89 7C 24 ?? 41 56 49 63 F1*/ } virtual void GetVar(void) const { @@ -94,7 +94,6 @@ class VRecast : public IDetour .FindPatternSelf("48 89 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/gameinterface.cpp b/src/game/server/gameinterface.cpp index e1cf4582..cccbed21 100644 --- a/src/game/server/gameinterface.cpp +++ b/src/game/server/gameinterface.cpp @@ -169,22 +169,13 @@ void RunFrameServer(double flFrameTime, bool bRunOverlays, bool bUniformUpdate) v_RunFrameServer(flFrameTime, bRunOverlays, bUniformUpdate); } -void VServerGameDLL::Attach() const +void VServerGameDLL::Detour(const bool bAttach) const { #if defined(GAMEDLL_S3) - DetourAttach((LPVOID*)&CServerGameDLL__OnReceivedSayTextMessage, &CServerGameDLL::OnReceivedSayTextMessage); - DetourAttach(&v_CServerGameClients__ProcessUserCmds, CServerGameClients::ProcessUserCmds); + DetourSetup(&CServerGameDLL__OnReceivedSayTextMessage, &CServerGameDLL::OnReceivedSayTextMessage, bAttach); + DetourSetup(&v_CServerGameClients__ProcessUserCmds, CServerGameClients::ProcessUserCmds, bAttach); #endif - DetourAttach(&v_RunFrameServer, &RunFrameServer); -} - -void VServerGameDLL::Detach() const -{ -#if defined(GAMEDLL_S3) - DetourDetach((LPVOID*)&CServerGameDLL__OnReceivedSayTextMessage, &CServerGameDLL::OnReceivedSayTextMessage); - DetourDetach(&v_CServerGameClients__ProcessUserCmds, CServerGameClients::ProcessUserCmds); -#endif - DetourDetach(&v_RunFrameServer, &RunFrameServer); + DetourSetup(&v_RunFrameServer, &RunFrameServer, bAttach); } CServerGameDLL* g_pServerGameDLL = nullptr; diff --git a/src/game/server/gameinterface.h b/src/game/server/gameinterface.h index 68861596..93de7325 100644 --- a/src/game/server/gameinterface.h +++ b/src/game/server/gameinterface.h @@ -95,8 +95,7 @@ class VServerGameDLL : public IDetour g_pGlobals = g_GameDll.FindPatternSIMD("4C 8B 0D ?? ?? ?? ?? 48 8B D1").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/movehelper_server.h b/src/game/server/movehelper_server.h index 83604fe8..684fac5c 100644 --- a/src/game/server/movehelper_server.h +++ b/src/game/server/movehelper_server.h @@ -43,8 +43,7 @@ class VMoveHelperServer : public IDetour s_MoveHelperServer = pFunc.FindPattern("48 8D 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/physics_main.cpp b/src/game/server/physics_main.cpp index f3ee0e49..c9c10300 100644 --- a/src/game/server/physics_main.cpp +++ b/src/game/server/physics_main.cpp @@ -45,12 +45,7 @@ void Physics_RunThinkFunctions(bool bSimulating) } /////////////////////////////////////////////////////////////////////////////// -void VPhysics_Main::Attach() const +void VPhysics_Main::Detour(const bool bAttach) const { - DetourAttach(&v_Physics_RunThinkFunctions, &Physics_RunThinkFunctions); + DetourSetup(&v_Physics_RunThinkFunctions, &Physics_RunThinkFunctions, bAttach); } - -void VPhysics_Main::Detach() const -{ - DetourDetach(&v_Physics_RunThinkFunctions, &Physics_RunThinkFunctions); -} \ No newline at end of file diff --git a/src/game/server/physics_main.h b/src/game/server/physics_main.h index 091d38e6..5e2b10a3 100644 --- a/src/game/server/physics_main.h +++ b/src/game/server/physics_main.h @@ -24,8 +24,7 @@ class VPhysics_Main : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/server/player.h b/src/game/server/player.h index 8e896c7c..0f387794 100644 --- a/src/game/server/player.h +++ b/src/game/server/player.h @@ -818,8 +818,7 @@ class VPlayer : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/shared/animation.cpp b/src/game/shared/animation.cpp index d69d2a54..fbafcb0d 100644 --- a/src/game/shared/animation.cpp +++ b/src/game/shared/animation.cpp @@ -19,12 +19,7 @@ int CStudioHdr::LookupSequence(CStudioHdr* pStudio, const char* pszName) return v_CStudioHdr__LookupSequence(pStudio, pszName); } -void VAnimation::Attach() const +void VAnimation::Detour(const bool bAttach) const { - DetourAttach(&v_CStudioHdr__LookupSequence, &CStudioHdr::LookupSequence); -} - -void VAnimation::Detach() const -{ - DetourDetach(&v_CStudioHdr__LookupSequence, &CStudioHdr::LookupSequence); + DetourSetup(&v_CStudioHdr__LookupSequence, &CStudioHdr::LookupSequence, bAttach); } diff --git a/src/game/shared/animation.h b/src/game/shared/animation.h index 0b9c0e13..5cb3d5f2 100644 --- a/src/game/shared/animation.h +++ b/src/game/shared/animation.h @@ -99,8 +99,7 @@ class VAnimation : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/shared/r1/weapon_bolt.cpp b/src/game/shared/r1/weapon_bolt.cpp index 6eefe12c..74985793 100644 --- a/src/game/shared/r1/weapon_bolt.cpp +++ b/src/game/shared/r1/weapon_bolt.cpp @@ -27,12 +27,7 @@ CBaseEntity* CreateWeaponBolt(Vector3D* origin, Vector3D* end, __int64 unused, f } //----------------------------------------------------------------------------- -void V_Weapon_Bolt::Attach() const +void V_Weapon_Bolt::Detour(const bool bAttach) const { - DetourAttach(&v_CreateWeaponBolt, &CreateWeaponBolt); -} - -void V_Weapon_Bolt::Detach() const -{ - DetourDetach(&v_CreateWeaponBolt, &CreateWeaponBolt); + DetourSetup(&v_CreateWeaponBolt, &CreateWeaponBolt, bAttach); } diff --git a/src/game/shared/r1/weapon_bolt.h b/src/game/shared/r1/weapon_bolt.h index 777d2c5d..1dadc18d 100644 --- a/src/game/shared/r1/weapon_bolt.h +++ b/src/game/shared/r1/weapon_bolt.h @@ -39,8 +39,7 @@ class V_Weapon_Bolt : public IDetour int, int, int, unsigned __int8, unsigned int, CBaseEntity*)>(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/shared/usercmd.cpp b/src/game/shared/usercmd.cpp index 3a35ef25..37362420 100644 --- a/src/game/shared/usercmd.cpp +++ b/src/game/shared/usercmd.cpp @@ -77,12 +77,7 @@ int ReadUserCmd(bf_read* buf, CUserCmd* move, CUserCmd* from) } //----------------------------------------------------------------------------- -void VUserCmd::Attach() const +void VUserCmd::Detour(const bool bAttach) const { - DetourAttach(&v_ReadUserCmd, &ReadUserCmd); -} - -void VUserCmd::Detach() const -{ - DetourDetach(&v_ReadUserCmd, &ReadUserCmd); + DetourSetup(&v_ReadUserCmd, &ReadUserCmd, bAttach); } diff --git a/src/game/shared/usercmd.h b/src/game/shared/usercmd.h index 896d41e4..a317719f 100644 --- a/src/game/shared/usercmd.h +++ b/src/game/shared/usercmd.h @@ -120,8 +120,7 @@ class VUserCmd : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/shared/util_shared.h b/src/game/shared/util_shared.h index 0b854aaf..bae7b809 100644 --- a/src/game/shared/util_shared.h +++ b/src/game/shared/util_shared.h @@ -57,8 +57,7 @@ class VUtil_Shared : public IDetour { g_pTraceFilterSimpleVFTable = g_GameDll.GetVirtualMethodTable(".?AVCTraceFilterSimple@@").RCast(); } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/game/shared/vscript_shared.h b/src/game/shared/vscript_shared.h index ba0224fe..726c5a38 100644 --- a/src/game/shared/vscript_shared.h +++ b/src/game/shared/vscript_shared.h @@ -54,8 +54,7 @@ class VScriptShared : public IDetour g_nClientRemoteChecksum = p_Script_Remote_BeginRegisteringFunctions.Offset(0x0).FindPatternSelf("89 05", CMemory::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x2, 0x6).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/inputsystem/inputsystem.h b/src/inputsystem/inputsystem.h index 60833501..1961b641 100644 --- a/src/inputsystem/inputsystem.h +++ b/src/inputsystem/inputsystem.h @@ -35,7 +35,6 @@ class VInputSystem : public IDetour .FindPatternSelf("48 89 05", CMemory::Direction::DOWN, 40).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/launcher/launcher.cpp b/src/launcher/launcher.cpp index d720dd62..11dbce38 100644 --- a/src/launcher/launcher.cpp +++ b/src/launcher/launcher.cpp @@ -79,19 +79,11 @@ LONG WINAPI TopLevelExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) return v_TopLevelExceptionFilter(pExceptionPointers); } -void VLauncher::Attach(void) const +void VLauncher::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_LauncherMain, &LauncherMain); - DetourAttach((LPVOID*)&v_TopLevelExceptionFilter, &TopLevelExceptionFilter); + DetourSetup(&v_LauncherMain, &LauncherMain, bAttach); + DetourSetup(&v_TopLevelExceptionFilter, &TopLevelExceptionFilter, bAttach); #if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) - DetourAttach((LPVOID*)&v_RemoveSpuriousGameParameters, &RemoveSpuriousGameParameters); + DetourSetup(&v_RemoveSpuriousGameParameters, &RemoveSpuriousGameParameters, bAttach); #endif } -void VLauncher::Detach(void) const -{ - DetourDetach((LPVOID*)&v_LauncherMain, &LauncherMain); - DetourDetach((LPVOID*)&v_TopLevelExceptionFilter, &TopLevelExceptionFilter); -#if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) - DetourDetach((LPVOID*)&v_RemoveSpuriousGameParameters, &RemoveSpuriousGameParameters); -#endif -} \ No newline at end of file diff --git a/src/launcher/launcher.h b/src/launcher/launcher.h index 5037b532..33345e88 100644 --- a/src/launcher/launcher.h +++ b/src/launcher/launcher.h @@ -9,7 +9,7 @@ inline LONG(*v_TopLevelExceptionFilter)(EXCEPTION_POINTERS* pExceptionPointer); #if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) inline CMemory p_RemoveSpuriousGameParameters; -inline void*(*v_RemoveSpuriousGameParameters)(void); +inline void(*v_RemoveSpuriousGameParameters)(void); #endif // !GAMEDLL_S0 || !GAMEDLL_S1 const char* ExitCodeToString(int nCode); @@ -35,13 +35,12 @@ class VLauncher : public IDetour #if !defined (GAMEDLL_S0) && !defined (GAMEDLL_S1) p_RemoveSpuriousGameParameters = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 81 EC ?? ?? ?? ?? 33 ED 48 8D 3D ?? ?? ?? ??"); - v_RemoveSpuriousGameParameters = p_RemoveSpuriousGameParameters.RCast(); + v_RemoveSpuriousGameParameters = p_RemoveSpuriousGameParameters.RCast(); #endif // !GAMEDLL_S0 || !GAMEDLL_S1 } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/launcher/prx.cpp b/src/launcher/prx.cpp index 1706020c..e8e42d2d 100644 --- a/src/launcher/prx.cpp +++ b/src/launcher/prx.cpp @@ -13,12 +13,7 @@ void h_exit_or_terminate_process(UINT uExitCode) TerminateProcess(h, uExitCode); } -void VPRX::Attach() const +void VPRX::Detour(const bool bAttach) const { - //DetourAttach(&v_exit_or_terminate_process, &h_exit_or_terminate_process); + //DetourSetup(&v_exit_or_terminate_process, &h_exit_or_terminate_process, bAttach); } - -void VPRX::Detach() const -{ - //DetourDetach(&v_exit_or_terminate_process, &h_exit_or_terminate_process); -} \ No newline at end of file diff --git a/src/launcher/prx.h b/src/launcher/prx.h index 3786691e..ac08192f 100644 --- a/src/launcher/prx.h +++ b/src/launcher/prx.h @@ -18,7 +18,6 @@ class VPRX : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/localize/localize.cpp b/src/localize/localize.cpp index d770831b..aaf1871d 100644 --- a/src/localize/localize.cpp +++ b/src/localize/localize.cpp @@ -41,12 +41,7 @@ bool Localize_IsLanguageSupported(const char* pLocaleName) return false; } -void VLocalize::Attach() const +void VLocalize::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_CLocalize__LoadLocalizationFileLists, &Localize_LoadLocalizationFileLists); + DetourSetup(&v_CLocalize__LoadLocalizationFileLists, &Localize_LoadLocalizationFileLists, bAttach); } - -void VLocalize::Detach() const -{ - DetourDetach((LPVOID*)&v_CLocalize__LoadLocalizationFileLists, &Localize_LoadLocalizationFileLists); -} \ No newline at end of file diff --git a/src/localize/localize.h b/src/localize/localize.h index b96b1a49..ea282b9e 100644 --- a/src/localize/localize.h +++ b/src/localize/localize.h @@ -46,7 +46,6 @@ class VLocalize : public IDetour g_ppLocalize = g_ppVGuiLocalize; // these are set to the same thing in CSourceAppSystemGroup::Create } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/materialsystem/cmaterialglue.h b/src/materialsystem/cmaterialglue.h index 02fc4104..a6819927 100644 --- a/src/materialsystem/cmaterialglue.h +++ b/src/materialsystem/cmaterialglue.h @@ -94,7 +94,6 @@ class VMaterialGlue : public IDetour { g_pMaterialGlueVFTable = g_GameDll.GetVirtualMethodTable(".?AVCMaterialGlue@@"); } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/materialsystem/cmaterialsystem.cpp b/src/materialsystem/cmaterialsystem.cpp index 60ab77f7..9e36abd7 100644 --- a/src/materialsystem/cmaterialsystem.cpp +++ b/src/materialsystem/cmaterialsystem.cpp @@ -121,22 +121,12 @@ Vector2D CMaterialSystem::GetScreenSize(CMaterialSystem* pMatSys) #endif // !MATERIALSYSTEM_NODX /////////////////////////////////////////////////////////////////////////////// -void VMaterialSystem::Attach() const +void VMaterialSystem::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&CMaterialSystem__Init, &CMaterialSystem::Init); + DetourSetup(&CMaterialSystem__Init, &CMaterialSystem::Init, bAttach); #ifndef MATERIALSYSTEM_NODX - DetourAttach((LPVOID*)&v_StreamDB_Init, &StreamDB_Init); - DetourAttach((LPVOID*)&v_DispatchDrawCall, &DispatchDrawCall); - DetourAttach((LPVOID*)&CMaterialSystem__FindMaterialEx, &CMaterialSystem::FindMaterialEx); + DetourSetup(&v_StreamDB_Init, &StreamDB_Init, bAttach); + DetourSetup(&v_DispatchDrawCall, &DispatchDrawCall, bAttach); + DetourSetup(&CMaterialSystem__FindMaterialEx, &CMaterialSystem::FindMaterialEx, bAttach); #endif // !MATERIALSYSTEM_NODX } - -void VMaterialSystem::Detach() const -{ - DetourDetach((LPVOID*)&CMaterialSystem__Init, &CMaterialSystem::Init); -#ifndef MATERIALSYSTEM_NODX - DetourDetach((LPVOID*)&v_StreamDB_Init, &StreamDB_Init); - DetourDetach((LPVOID*)&v_DispatchDrawCall, &DispatchDrawCall); - DetourDetach((LPVOID*)&CMaterialSystem__FindMaterialEx, &CMaterialSystem::FindMaterialEx); -#endif // !MATERIALSYSTEM_NODX -} \ No newline at end of file diff --git a/src/materialsystem/cmaterialsystem.h b/src/materialsystem/cmaterialsystem.h index 29acbefd..7a3bc470 100644 --- a/src/materialsystem/cmaterialsystem.h +++ b/src/materialsystem/cmaterialsystem.h @@ -149,8 +149,7 @@ class VMaterialSystem : public IDetour { g_pMaterialVFTable = g_GameDll.GetVirtualMethodTable(".?AVCMaterial@@").RCast(); } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/materialsystem/cshaderglue.cpp b/src/materialsystem/cshaderglue.cpp index 297dbd42..fe158458 100644 --- a/src/materialsystem/cshaderglue.cpp +++ b/src/materialsystem/cshaderglue.cpp @@ -10,14 +10,3 @@ int CShaderGlue::SetupShader(uint64_t nCount, uint64_t a3, void* pRawMaterialGlu { return CShaderGlue_SetupShader(this, nCount, a3, pRawMaterialGlueWithoutVTable); } - -/////////////////////////////////////////////////////////////////////////////// -void CShaderGlue_Attach() -{ - -} - -void CShaderGlue_Detach() -{ - -} \ No newline at end of file diff --git a/src/materialsystem/cshaderglue.h b/src/materialsystem/cshaderglue.h index d77fa290..cad94a68 100644 --- a/src/materialsystem/cshaderglue.h +++ b/src/materialsystem/cshaderglue.h @@ -36,8 +36,6 @@ inline int(*CShaderGlue_SetupShader)(CShaderGlue* thisptr, uint64_t nCount, uint inline CMemory CShaderGlue_VTable; inline void* g_pShaderGlueVFTable = nullptr; -void CShaderGlue_Attach(); -void CShaderGlue_Detach(); /////////////////////////////////////////////////////////////////////////////// class VShaderGlue : public IDetour { @@ -56,7 +54,6 @@ class VShaderGlue : public IDetour CShaderGlue_VTable = g_GameDll.GetVirtualMethodTable(".?AVCShaderGlue@@"); g_pShaderGlueVFTable = CShaderGlue_VTable.RCast(); } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/appframework/IAppSystemGroup.h b/src/public/appframework/IAppSystemGroup.h index e2c48ad5..c82d05d3 100644 --- a/src/public/appframework/IAppSystemGroup.h +++ b/src/public/appframework/IAppSystemGroup.h @@ -119,8 +119,7 @@ class VAppSystemGroup : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; #endif // APPSYSTEMGROUP_H diff --git a/src/public/edict.h b/src/public/edict.h index 19700a3a..d6800d1c 100644 --- a/src/public/edict.h +++ b/src/public/edict.h @@ -74,7 +74,6 @@ class VEdict : public IDetour #endif // !DEDICATED } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/tier0/jobthread.h b/src/public/tier0/jobthread.h index faa1b204..68f0783a 100644 --- a/src/public/tier0/jobthread.h +++ b/src/public/tier0/jobthread.h @@ -19,8 +19,6 @@ inline bool(*JT_AcquireFifoLock)(struct JobFifoLock_s* pFifo); inline CMemory p_JT_ReleaseFifoLock; inline void(*JT_ReleaseFifoLock)(struct JobFifoLock_s* pFifo); -void JT_Attach(); -void JT_Detach(); /////////////////////////////////////////////////////////////////////////////// class VJobThread : public IDetour { @@ -50,8 +48,7 @@ class VJobThread : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/tier0/platform_internal.h b/src/public/tier0/platform_internal.h index 237b9715..3712d4af 100644 --- a/src/public/tier0/platform_internal.h +++ b/src/public/tier0/platform_internal.h @@ -50,8 +50,7 @@ class VPlatform : public IDetour g_flErrorTimeStamp = g_GameDll.FindPatternSIMD("0F 57 C0 F2 0F 11 05 ?? ?? ?? ?? C3").FindPatternSelf("F2 0F").ResolveRelativeAddressSelf(0x4, 0x8).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/tier0/threadtools.h b/src/public/tier0/threadtools.h index 9bb258bf..e6c204fb 100644 --- a/src/public/tier0/threadtools.h +++ b/src/public/tier0/threadtools.h @@ -351,8 +351,7 @@ class VThreadTools : public IDetour g_ThreadServerFrameThreadID = g_GameDll.FindPatternSIMD("83 79 ?? ?? 75 28 8B").FindPatternSelf("8B 05").ResolveRelativeAddressSelf(0x2, 0x6).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool /*bAttach*/) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/tier0/tslist.h b/src/public/tier0/tslist.h index 058e5a82..631e434e 100644 --- a/src/public/tier0/tslist.h +++ b/src/public/tier0/tslist.h @@ -57,8 +57,7 @@ class VTSListBase : public IDetour #endif } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/tier1/convar.h b/src/public/tier1/convar.h index 919bb6b7..c7fc7789 100644 --- a/src/public/tier1/convar.h +++ b/src/public/tier1/convar.h @@ -284,8 +284,7 @@ class VConVar : public IDetour g_pConVarVBTable = g_GameDll.GetVirtualMethodTable(".?AVConVar@@", 0).RCast(); g_pConVarVFTable = g_GameDll.GetVirtualMethodTable(".?AVConVar@@", 1).RCast(); } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/public/tier1/cvar.h b/src/public/tier1/cvar.h index 22d67a5e..cc51db18 100644 --- a/src/public/tier1/cvar.h +++ b/src/public/tier1/cvar.h @@ -162,7 +162,7 @@ bool ConVar_ParseFlagString(const char* pszFlags, int& nFlags, const char* pszCo void ConVar_PrintDescription(ConCommandBase* pVar); inline CMemory p_ConVar_PrintDescription; -inline void* (*v_ConVar_PrintDescription)(ConCommandBase* pVar); +inline void (*v_ConVar_PrintDescription)(ConCommandBase* pVar); /////////////////////////////////////////////////////////////////////////////// class VCVar : public IDetour @@ -175,7 +175,7 @@ class VCVar : public IDetour virtual void GetFun(void) const { p_ConVar_PrintDescription = g_GameDll.FindPatternSIMD("B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 2B E0 48 8B 01 48 89 9C 24 ?? ?? ?? ??"); - v_ConVar_PrintDescription = p_ConVar_PrintDescription.RCast(); + v_ConVar_PrintDescription = p_ConVar_PrintDescription.RCast(); } virtual void GetVar(void) const { @@ -186,8 +186,7 @@ class VCVar : public IDetour //.FindPatternSelf("48 83 3D", CMemory::Direction::DOWN).ResolveRelativeAddressSelf(0x3, 0x8).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/rtech/rtech_game.cpp b/src/rtech/rtech_game.cpp index 52fe216a..311f6b72 100644 --- a/src/rtech/rtech_game.cpp +++ b/src/rtech/rtech_game.cpp @@ -586,27 +586,15 @@ LABEL_45: return memoryData->m_patchSrcSize == 0; }*/ -void V_RTechGame::Attach() const +void V_RTechGame::Detour(const bool bAttach) const { - DetourAttach(&v_Pak_OpenFile, &Pak_OpenFile); + DetourSetup(&v_Pak_OpenFile, &Pak_OpenFile, bAttach); - DetourAttach(&v_Pak_LoadAsync, &Pak_LoadAsync); - DetourAttach(&v_Pak_UnloadPak, &Pak_UnloadPak); + DetourSetup(&v_Pak_LoadAsync, &Pak_LoadAsync, bAttach); + DetourSetup(&v_Pak_UnloadPak, &Pak_UnloadPak, bAttach); #ifdef GAMEDLL_S3 - //DetourAttach(&RTech_Pak_ProcessGuidRelationsForAsset, &RTech::PakProcessGuidRelationsForAsset); -#endif -} - -void V_RTechGame::Detach() const -{ - DetourDetach(&v_Pak_OpenFile, &Pak_OpenFile); - - DetourDetach(&v_Pak_LoadAsync, &Pak_LoadAsync); - DetourDetach(&v_Pak_UnloadPak, &Pak_UnloadPak); - -#ifdef GAMEDLL_S3 - //DetourDetach(&RTech_Pak_ProcessGuidRelationsForAsset, &RTech::PakProcessGuidRelationsForAsset); + //DetourSetup(&RTech_Pak_ProcessGuidRelationsForAsset, &RTech::PakProcessGuidRelationsForAsset, bAttach); #endif } diff --git a/src/rtech/rtech_game.h b/src/rtech/rtech_game.h index 37c4239e..eb1081bc 100644 --- a/src/rtech/rtech_game.h +++ b/src/rtech/rtech_game.h @@ -118,7 +118,6 @@ class V_RTechGame : public IDetour { p_Pak_OpenFileOffset = g_GameDll.FindPatternSIMD("48 89 7C 24 30 C7 44 24 28 ?? ?? ?? 40"); } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/rtech/rtech_utils.cpp b/src/rtech/rtech_utils.cpp index 7b80b394..85ad20b6 100644 --- a/src/rtech/rtech_utils.cpp +++ b/src/rtech/rtech_utils.cpp @@ -682,11 +682,7 @@ const char* RTech::PakStatusToString(EPakStatus status) default: return "PAK_STATUS_UNKNOWN"; } } -void V_RTechUtils::Attach() const -{ -} - -void V_RTechUtils::Detach() const +void V_RTechUtils::Detour(const bool bAttach) const { } diff --git a/src/rtech/rtech_utils.h b/src/rtech/rtech_utils.h index 788001db..52ff7df9 100644 --- a/src/rtech/rtech_utils.h +++ b/src/rtech/rtech_utils.h @@ -98,7 +98,6 @@ class V_RTechUtils : public IDetour g_bPakFifoLockAcquired = p_JT_HelpWithAnything.Offset(0x50).FindPatternSelf("C6 05").ResolveRelativeAddressSelf(0x2, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/rtech/rui/rui.cpp b/src/rtech/rui/rui.cpp index d6d49a42..ce8a7729 100644 --- a/src/rtech/rui/rui.cpp +++ b/src/rtech/rui/rui.cpp @@ -22,14 +22,9 @@ bool __fastcall Rui_Draw(__int64* a1, __m128* a2, const __m128i* a3, __int64 a4, return v_Rui_Draw(a1, a2, a3, a4, a5); } -void V_Rui::Attach() const +void V_Rui::Detour(const bool bAttach) const { - DetourAttach(&v_Rui_Draw, &Rui_Draw); -} - -void V_Rui::Detach() const -{ - DetourDetach(&v_Rui_Draw, &Rui_Draw); + DetourSetup(&v_Rui_Draw, &Rui_Draw, bAttach); } #endif // !DEDICATED \ No newline at end of file diff --git a/src/rtech/rui/rui.h b/src/rtech/rui/rui.h index 021625c8..ff0f6a1c 100644 --- a/src/rtech/rui/rui.h +++ b/src/rtech/rui/rui.h @@ -32,7 +32,6 @@ class V_Rui : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/rtech/stryder/stryder.h b/src/rtech/stryder/stryder.h index 9e683999..3bd6e714 100644 --- a/src/rtech/stryder/stryder.h +++ b/src/rtech/stryder/stryder.h @@ -29,7 +29,6 @@ class VStryder : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/studiorender/studiorendercontext.h b/src/studiorender/studiorendercontext.h index 9df75d65..78889ee2 100644 --- a/src/studiorender/studiorendercontext.h +++ b/src/studiorender/studiorendercontext.h @@ -32,7 +32,6 @@ class VStudioRenderContext : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/thirdparty/detours/include/idetour.h b/src/thirdparty/detours/include/idetour.h index 6f794679..ff2b5bb7 100644 --- a/src/thirdparty/detours/include/idetour.h +++ b/src/thirdparty/detours/include/idetour.h @@ -13,14 +13,11 @@ public: virtual void GetVar(void) const = 0; virtual void GetCon(void) const = 0; - virtual void Attach(void) const = 0; - virtual void Detach(void) const = 0; - - //virtual void Detour(const bool bAttach) const = 0; + virtual void Detour(const bool bAttach) const = 0; template< typename T, typename std::enable_if::value, int>::type = 0> - LONG Setup(_Inout_ T* ppPointer, _In_ T pDetour, const bool bAttach) const + LONG DetourSetup(_Inout_ T* ppPointer, _In_ T pDetour, const bool bAttach) const { if (bAttach) return DetourAttach(ppPointer, pDetour); diff --git a/src/tier0/commandline.cpp b/src/tier0/commandline.cpp index 3fd09577..b812fa3b 100644 --- a/src/tier0/commandline.cpp +++ b/src/tier0/commandline.cpp @@ -89,12 +89,7 @@ void CCommandLine::AppendParametersFromFile(const char* const pszConfig) CCommandLine* g_pCmdLine = nullptr; -void VCommandLine::Attach() const +void VCommandLine::Detour(const bool bAttach) const { - DetourAttach(&v_CCommandLine__CreateCmdLine, &CCommandLine::StaticCreateCmdLine); + DetourSetup(&v_CCommandLine__CreateCmdLine, &CCommandLine::StaticCreateCmdLine, bAttach); } - -void VCommandLine::Detach() const -{ - DetourDetach(&v_CCommandLine__CreateCmdLine, &CCommandLine::StaticCreateCmdLine); -} \ No newline at end of file diff --git a/src/tier0/commandline.h b/src/tier0/commandline.h index 6977906e..9fdbe5f8 100644 --- a/src/tier0/commandline.h +++ b/src/tier0/commandline.h @@ -47,7 +47,6 @@ class VCommandLine : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/tier0/jobthread.cpp b/src/tier0/jobthread.cpp index b17a8fc4..c522d798 100644 --- a/src/tier0/jobthread.cpp +++ b/src/tier0/jobthread.cpp @@ -24,12 +24,7 @@ void* HJT_HelpWithAnything(bool bShouldLoadPak) return results; } -void JT_Attach() +void VJobThread::Detour(const bool bAttach) const { - //DetourAttach((LPVOID*)&JT_HelpWithAnything, &HJT_HelpWithAnything); -} - -void JT_Detach() -{ - //DetourDetach((LPVOID*)&JT_HelpWithAnything, &HJT_HelpWithAnything); + //DetourSetup(&JT_HelpWithAnything, &HJT_HelpWithAnything, bAttach); } diff --git a/src/tier1/cvar.cpp b/src/tier1/cvar.cpp index a19d5b51..83f07a89 100644 --- a/src/tier1/cvar.cpp +++ b/src/tier1/cvar.cpp @@ -679,11 +679,7 @@ int CCvarUtilities::CvarFindFlagsCompletionCallback(const char* partial, CCvar* g_pCVar = nullptr; /////////////////////////////////////////////////////////////////////////////// -void VCVar::Attach() const +void VCVar::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_ConVar_PrintDescription, &ConVar_PrintDescription); -} -void VCVar::Detach() const -{ - DetourDetach((LPVOID*)&v_ConVar_PrintDescription, &ConVar_PrintDescription); + DetourSetup(&v_ConVar_PrintDescription, &ConVar_PrintDescription, bAttach); } diff --git a/src/vgui/vgui_baseui_interface.cpp b/src/vgui/vgui_baseui_interface.cpp index 609b7279..06055203 100644 --- a/src/vgui/vgui_baseui_interface.cpp +++ b/src/vgui/vgui_baseui_interface.cpp @@ -28,14 +28,9 @@ int CEngineVGui::Paint(CEngineVGui* thisptr, PaintMode_t mode) } /////////////////////////////////////////////////////////////////////////////// -void VEngineVGui::Attach() const +void VEngineVGui::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&CEngineVGui_Paint, &CEngineVGui::Paint); -} - -void VEngineVGui::Detach() const -{ - DetourDetach((LPVOID*)&CEngineVGui_Paint, &CEngineVGui::Paint); + DetourSetup(&CEngineVGui_Paint, &CEngineVGui::Paint, bAttach); } /////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/vgui/vgui_baseui_interface.h b/src/vgui/vgui_baseui_interface.h index 580ba997..3801cf2c 100644 --- a/src/vgui/vgui_baseui_interface.h +++ b/src/vgui/vgui_baseui_interface.h @@ -121,7 +121,6 @@ class VEngineVGui : public IDetour .FindPatternSelf("48 8D ?? ?? ?? ?? 01", CMemory::Direction::DOWN, 150).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vgui/vgui_controls/RichText.cpp b/src/vgui/vgui_controls/RichText.cpp index 9b49a98f..55623470 100644 --- a/src/vgui/vgui_controls/RichText.cpp +++ b/src/vgui/vgui_controls/RichText.cpp @@ -43,14 +43,9 @@ void vgui::RichText::SetText(const char* text) } /////////////////////////////////////////////////////////////////////////////// -void VVGUIRichText::Attach() const +void VVGUIRichText::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&vgui_RichText_SetText, &RichText_SetText); -} - -void VVGUIRichText::Detach() const -{ - DetourDetach((LPVOID*)&vgui_RichText_SetText, &RichText_SetText); + DetourSetup(&vgui_RichText_SetText, &RichText_SetText, bAttach); } /////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/vgui/vgui_controls/RichText.h b/src/vgui/vgui_controls/RichText.h index 1c9ddecf..42b836ff 100644 --- a/src/vgui/vgui_controls/RichText.h +++ b/src/vgui/vgui_controls/RichText.h @@ -44,7 +44,6 @@ class VVGUIRichText : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vgui/vgui_fpspanel.cpp b/src/vgui/vgui_fpspanel.cpp index 02e2db87..babd8dba 100644 --- a/src/vgui/vgui_fpspanel.cpp +++ b/src/vgui/vgui_fpspanel.cpp @@ -20,12 +20,7 @@ ConVar* HCFPSPanel_Paint(void* thisptr) } /////////////////////////////////////////////////////////////////////////////// -void VFPSPanel::Attach() const +void VFPSPanel::Detour(const bool bAttach) const { - DetourAttach(&CFPSPanel_Paint, &HCFPSPanel_Paint); -} - -void VFPSPanel::Detach() const -{ - DetourDetach(&CFPSPanel_Paint, &HCFPSPanel_Paint); + DetourSetup(&CFPSPanel_Paint, &HCFPSPanel_Paint, bAttach); } diff --git a/src/vgui/vgui_fpspanel.h b/src/vgui/vgui_fpspanel.h index ac17cb5b..a5da3998 100644 --- a/src/vgui/vgui_fpspanel.h +++ b/src/vgui/vgui_fpspanel.h @@ -18,7 +18,6 @@ class VFPSPanel : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vguimatsurface/MatSystemSurface.h b/src/vguimatsurface/MatSystemSurface.h index 847ad32a..1ae30db3 100644 --- a/src/vguimatsurface/MatSystemSurface.h +++ b/src/vguimatsurface/MatSystemSurface.h @@ -38,7 +38,6 @@ class VMatSystemSurface : public IDetour .ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vpc/IAppSystem.h b/src/vpc/IAppSystem.h index 9a131b9e..7d5a3e0e 100644 --- a/src/vpc/IAppSystem.h +++ b/src/vpc/IAppSystem.h @@ -18,7 +18,6 @@ class VAppSystem : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vpc/interfaces.h b/src/vpc/interfaces.h index 2b8ac3f8..143f3068 100644 --- a/src/vpc/interfaces.h +++ b/src/vpc/interfaces.h @@ -81,7 +81,6 @@ class VFactory : public IDetour .FollowNearCallSelf().FindPatternSelf("48 8B 1D", CMemory::Direction::DOWN).ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vpc/keyvalues.cpp b/src/vpc/keyvalues.cpp index f63d8cf6..b980fbb7 100644 --- a/src/vpc/keyvalues.cpp +++ b/src/vpc/keyvalues.cpp @@ -1445,18 +1445,11 @@ KeyValues* KeyValues::ReadKeyValuesFile(CFileSystem_Stdio* pFileSystem, const ch } /////////////////////////////////////////////////////////////////////////////// -void VKeyValues::Attach() const +void VKeyValues::Detour(const bool bAttach) const { - DetourAttach(&KeyValues_LoadPlaylists, &KeyValues::LoadPlaylists); - DetourAttach(&KeyValues_ParsePlaylists, &KeyValues::ParsePlaylists); - DetourAttach(&KeyValues_ReadKeyValuesFile, &KeyValues::ReadKeyValuesFile); -} - -void VKeyValues::Detach() const -{ - DetourDetach(&KeyValues_LoadPlaylists, &KeyValues::LoadPlaylists); - DetourDetach(&KeyValues_ParsePlaylists, &KeyValues::ParsePlaylists); - DetourDetach(&KeyValues_ReadKeyValuesFile, &KeyValues::ReadKeyValuesFile); + DetourSetup(&KeyValues_LoadPlaylists, &KeyValues::LoadPlaylists, bAttach); + DetourSetup(&KeyValues_ParsePlaylists, &KeyValues::ParsePlaylists, bAttach); + DetourSetup(&KeyValues_ReadKeyValuesFile, &KeyValues::ReadKeyValuesFile, bAttach); } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vpc/keyvalues.h b/src/vpc/keyvalues.h index a86001e2..aac810ad 100644 --- a/src/vpc/keyvalues.h +++ b/src/vpc/keyvalues.h @@ -236,7 +236,6 @@ class VKeyValues : public IDetour #endif } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vpc/rson.h b/src/vpc/rson.h index cbba16d8..d7074816 100644 --- a/src/vpc/rson.h +++ b/src/vpc/rson.h @@ -108,8 +108,7 @@ class VRSON : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vphysics/QHull.cpp b/src/vphysics/QHull.cpp index 37b478b6..03fe01d9 100644 --- a/src/vphysics/QHull.cpp +++ b/src/vphysics/QHull.cpp @@ -18,12 +18,8 @@ int QHull_PrintFunc(const char* fmt, ...) } /////////////////////////////////////////////////////////////////////////////// -void VQHull::Attach() const +void VQHull::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_QHull_PrintFunc, &QHull_PrintFunc); + DetourSetup(&v_QHull_PrintFunc, &QHull_PrintFunc, bAttach); } -void VQHull::Detach() const -{ - DetourDetach((LPVOID*)&v_QHull_PrintFunc, &QHull_PrintFunc); -} diff --git a/src/vphysics/QHull.h b/src/vphysics/QHull.h index 6b346845..85ffc89c 100644 --- a/src/vphysics/QHull.h +++ b/src/vphysics/QHull.h @@ -27,7 +27,6 @@ class VQHull : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vscript/languages/squirrel_re/include/sqstdaux.h b/src/vscript/languages/squirrel_re/include/sqstdaux.h index 3b63f208..d41109ed 100644 --- a/src/vscript/languages/squirrel_re/include/sqstdaux.h +++ b/src/vscript/languages/squirrel_re/include/sqstdaux.h @@ -34,7 +34,6 @@ class VSquirrelAUX : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vscript/languages/squirrel_re/include/squirrel.h b/src/vscript/languages/squirrel_re/include/squirrel.h index e6ea5930..2cf7fda9 100644 --- a/src/vscript/languages/squirrel_re/include/squirrel.h +++ b/src/vscript/languages/squirrel_re/include/squirrel.h @@ -132,8 +132,7 @@ class VSquirrelAPI : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// #endif // SQTYPE_H diff --git a/src/vscript/languages/squirrel_re/include/sqvm.h b/src/vscript/languages/squirrel_re/include/sqvm.h index ffd6de85..2f8ea34d 100644 --- a/src/vscript/languages/squirrel_re/include/sqvm.h +++ b/src/vscript/languages/squirrel_re/include/sqvm.h @@ -144,7 +144,6 @@ class VSquirrelVM : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vscript/languages/squirrel_re/sqstdlib/sqstdaux.cpp b/src/vscript/languages/squirrel_re/sqstdlib/sqstdaux.cpp index 785fbe0f..0ec5f82b 100644 --- a/src/vscript/languages/squirrel_re/sqstdlib/sqstdaux.cpp +++ b/src/vscript/languages/squirrel_re/sqstdlib/sqstdaux.cpp @@ -29,14 +29,8 @@ SQInteger sqstd_aux_badlogic(HSQUIRRELVM v, __m128i* a2, __m128i* a3) return results; } -void VSquirrelAUX::Attach() const +void VSquirrelAUX::Detour(const bool bAttach) const { - DetourAttach(&v_sqstd_aux_printerror, &sqstd_aux_printerror); - DetourAttach(&v_sqstd_aux_badlogic, &sqstd_aux_badlogic); + DetourSetup(&v_sqstd_aux_printerror, &sqstd_aux_printerror, bAttach); + DetourSetup(&v_sqstd_aux_badlogic, &sqstd_aux_badlogic, bAttach); } - -void VSquirrelAUX::Detach() const -{ - DetourDetach(&v_sqstd_aux_printerror, &sqstd_aux_printerror); - DetourDetach(&v_sqstd_aux_badlogic, &sqstd_aux_badlogic); -} \ No newline at end of file diff --git a/src/vscript/languages/squirrel_re/squirrel/sqapi.cpp b/src/vscript/languages/squirrel_re/squirrel/sqapi.cpp index debefeaa..4da272df 100644 --- a/src/vscript/languages/squirrel_re/squirrel/sqapi.cpp +++ b/src/vscript/languages/squirrel_re/squirrel/sqapi.cpp @@ -86,32 +86,17 @@ SQRESULT sq_call(HSQUIRRELVM v, SQInteger params, SQBool retval, SQBool raiseerr return v_sq_call(v, params, retval, raiseerror); } -void VSquirrelAPI::Attach() const +void VSquirrelAPI::Detour(const bool bAttach) const { - DetourAttach(&v_sq_pushroottable, &sq_pushroottable); - DetourAttach(&v_sq_pushbool, &sq_pushbool); - DetourAttach(&v_sq_pushstring, &sq_pushstring); - DetourAttach(&v_sq_pushinteger, &sq_pushinteger); - DetourAttach(&v_sq_newarray, &sq_newarray); - DetourAttach(&v_sq_newtable, &sq_newtable); - DetourAttach(&v_sq_newslot, &sq_newslot); - DetourAttach(&v_sq_arrayappend, &sq_arrayappend); - DetourAttach(&v_sq_pushstructure, &sq_pushstructure); - DetourAttach(&v_sq_compilebuffer, &sq_compilebuffer); - DetourAttach(&v_sq_call, &sq_call); -} - -void VSquirrelAPI::Detach() const -{ - DetourDetach(&v_sq_pushroottable, &sq_pushroottable); - DetourDetach(&v_sq_pushbool, &sq_pushbool); - DetourDetach(&v_sq_pushstring, &sq_pushstring); - DetourDetach(&v_sq_pushinteger, &sq_pushinteger); - DetourDetach(&v_sq_newarray, &sq_newarray); - DetourDetach(&v_sq_newtable, &sq_newtable); - DetourDetach(&v_sq_newslot, &sq_newslot); - DetourDetach(&v_sq_arrayappend, &sq_arrayappend); - DetourDetach(&v_sq_pushstructure, &sq_pushstructure); - DetourDetach(&v_sq_compilebuffer, &sq_compilebuffer); - DetourDetach(&v_sq_call, &sq_call); + DetourSetup(&v_sq_pushroottable, &sq_pushroottable, bAttach); + DetourSetup(&v_sq_pushbool, &sq_pushbool, bAttach); + DetourSetup(&v_sq_pushstring, &sq_pushstring, bAttach); + DetourSetup(&v_sq_pushinteger, &sq_pushinteger, bAttach); + DetourSetup(&v_sq_newarray, &sq_newarray, bAttach); + DetourSetup(&v_sq_newtable, &sq_newtable, bAttach); + DetourSetup(&v_sq_newslot, &sq_newslot, bAttach); + DetourSetup(&v_sq_arrayappend, &sq_arrayappend, bAttach); + DetourSetup(&v_sq_pushstructure, &sq_pushstructure, bAttach); + DetourSetup(&v_sq_compilebuffer, &sq_compilebuffer, bAttach); + DetourSetup(&v_sq_call, &sq_call, bAttach); } diff --git a/src/vscript/languages/squirrel_re/squirrel/sqvm.cpp b/src/vscript/languages/squirrel_re/squirrel/sqvm.cpp index 6bc30e2f..2db3db6f 100644 --- a/src/vscript/languages/squirrel_re/squirrel/sqvm.cpp +++ b/src/vscript/languages/squirrel_re/squirrel/sqvm.cpp @@ -208,18 +208,10 @@ const SQCONTEXT SQVM_GetContextIndex(HSQUIRRELVM v) } //--------------------------------------------------------------------------------- -void VSquirrelVM::Attach() const +void VSquirrelVM::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_SQVM_PrintFunc, &SQVM_PrintFunc); - DetourAttach((LPVOID*)&v_SQVM_sprintf, &SQVM_sprintf); - DetourAttach((LPVOID*)&v_SQVM_CompileError, &SQVM_CompileError); - DetourAttach((LPVOID*)&v_SQVM_LogicError, &SQVM_LogicError); -} -//--------------------------------------------------------------------------------- -void VSquirrelVM::Detach() const -{ - DetourDetach((LPVOID*)&v_SQVM_PrintFunc, &SQVM_PrintFunc); - DetourDetach((LPVOID*)&v_SQVM_sprintf, &SQVM_sprintf); - DetourDetach((LPVOID*)&v_SQVM_CompileError, &SQVM_CompileError); - DetourDetach((LPVOID*)&v_SQVM_LogicError, &SQVM_LogicError); + DetourSetup(&v_SQVM_PrintFunc, &SQVM_PrintFunc, bAttach); + DetourSetup(&v_SQVM_sprintf, &SQVM_sprintf, bAttach); + DetourSetup(&v_SQVM_CompileError, &SQVM_CompileError, bAttach); + DetourSetup(&v_SQVM_LogicError, &SQVM_LogicError, bAttach); } diff --git a/src/vscript/languages/squirrel_re/vsquirrel.cpp b/src/vscript/languages/squirrel_re/vsquirrel.cpp index 797cf510..fe51cba3 100644 --- a/src/vscript/languages/squirrel_re/vsquirrel.cpp +++ b/src/vscript/languages/squirrel_re/vsquirrel.cpp @@ -24,7 +24,7 @@ void(*ScriptConstantRegister_Callback)(CSquirrelVM* s) = nullptr; // Purpose: Initialises a Squirrel VM instance // Output : True on success, false on failure //--------------------------------------------------------------------------------- -SQBool CSquirrelVM::Init(CSquirrelVM* s, SQCONTEXT context, SQFloat curTime) +bool CSquirrelVM::Init(CSquirrelVM* s, SQCONTEXT context, SQFloat curTime) { // original func always returns true, added check just in case. if (!v_CSquirrelVM_Init(s, context, curTime)) @@ -74,7 +74,7 @@ SQBool CSquirrelVM::Init(CSquirrelVM* s, SQCONTEXT context, SQFloat curTime) // f - // Output : true on success, false otherwise //--------------------------------------------------------------------------------- -SQBool CSquirrelVM::DestroySignalEntryListHead(CSquirrelVM* s, HSQUIRRELVM v, SQFloat f) +bool CSquirrelVM::DestroySignalEntryListHead(CSquirrelVM* s, HSQUIRRELVM v, SQFloat f) { SQBool result = v_CSquirrelVM_DestroySignalEntryListHead(s, v, f); s->RegisterConstant("DEVELOPER", developer->GetInt()); @@ -225,14 +225,8 @@ void CSquirrelVM::CompileModScripts() } //--------------------------------------------------------------------------------- -void VSquirrel::Attach() const +void VSquirrel::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_CSquirrelVM_Init, &CSquirrelVM::Init); - DetourAttach((LPVOID*)&v_CSquirrelVM_DestroySignalEntryListHead, &CSquirrelVM::DestroySignalEntryListHead); -} -//--------------------------------------------------------------------------------- -void VSquirrel::Detach() const -{ - DetourDetach((LPVOID*)&v_CSquirrelVM_Init, &CSquirrelVM::Init); - DetourDetach((LPVOID*)&v_CSquirrelVM_DestroySignalEntryListHead, &CSquirrelVM::DestroySignalEntryListHead); + DetourSetup(&v_CSquirrelVM_Init, &CSquirrelVM::Init, bAttach); + DetourSetup(&v_CSquirrelVM_DestroySignalEntryListHead, &CSquirrelVM::DestroySignalEntryListHead, bAttach); } diff --git a/src/vscript/languages/squirrel_re/vsquirrel.h b/src/vscript/languages/squirrel_re/vsquirrel.h index 7198b64c..3c083322 100644 --- a/src/vscript/languages/squirrel_re/vsquirrel.h +++ b/src/vscript/languages/squirrel_re/vsquirrel.h @@ -12,8 +12,8 @@ class CSquirrelVM { public: - static SQBool Init(CSquirrelVM* s, SQCONTEXT context, float curtime); - static SQBool DestroySignalEntryListHead(CSquirrelVM* s, HSQUIRRELVM v, SQFloat f); + static bool Init(CSquirrelVM* s, SQCONTEXT context, float curtime); + static bool DestroySignalEntryListHead(CSquirrelVM* s, HSQUIRRELVM v, SQFloat f); void CompileModScripts(); void SetAsCompiler(RSON::Node_t* rson); @@ -56,7 +56,7 @@ inline CMemory p_CSquirrelVM_Init; inline bool(*v_CSquirrelVM_Init)(CSquirrelVM* s, SQCONTEXT context, SQFloat curtime); inline CMemory p_CSquirrelVM_DestroySignalEntryListHead; -inline SQBool(*v_CSquirrelVM_DestroySignalEntryListHead)(CSquirrelVM* s, HSQUIRRELVM v, SQFloat f); +inline bool(*v_CSquirrelVM_DestroySignalEntryListHead)(CSquirrelVM* s, HSQUIRRELVM v, SQFloat f); inline CMemory p_CSquirrelVM_RegisterFunction; inline SQRESULT(*v_CSquirrelVM_RegisterFunction)(CSquirrelVM* s, ScriptFunctionBinding_t* binding, SQInteger a1); @@ -107,7 +107,7 @@ class VSquirrel : public IDetour v_CSquirrelVM_Init = p_CSquirrelVM_Init.RCast(); p_CSquirrelVM_DestroySignalEntryListHead = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 56 57 41 56 48 83 EC 50 44 8B 42"); - v_CSquirrelVM_DestroySignalEntryListHead = p_CSquirrelVM_DestroySignalEntryListHead.RCast(); + v_CSquirrelVM_DestroySignalEntryListHead = p_CSquirrelVM_DestroySignalEntryListHead.RCast(); p_CSquirrelVM_RegisterConstant = g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 83 EC 30 4C 8B"); v_CSquirrelVM_RegisterConstant = p_CSquirrelVM_RegisterConstant.RCast(); @@ -129,8 +129,7 @@ class VSquirrel : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; #endif // VSQUIRREL_H diff --git a/src/vscript/vscript.cpp b/src/vscript/vscript.cpp index 6bb5cd8f..804b3e9d 100644 --- a/src/vscript/vscript.cpp +++ b/src/vscript/vscript.cpp @@ -171,18 +171,10 @@ void Script_Execute(const SQChar* code, const SQCONTEXT context) } //--------------------------------------------------------------------------------- -void VScript::Attach() const +void VScript::Detour(const bool bAttach) const { - DetourAttach((LPVOID*)&v_Script_LoadScriptList, &Script_LoadScriptList); - DetourAttach((LPVOID*)&v_Script_LoadScriptFile, &Script_LoadScriptFile); - DetourAttach((LPVOID*)&v_Script_PrecompileServerScripts, &Script_PrecompileServerScripts); - DetourAttach((LPVOID*)&v_Script_PrecompileClientScripts, &Script_PrecompileClientScripts); -} -//--------------------------------------------------------------------------------- -void VScript::Detach() const -{ - DetourDetach((LPVOID*)&v_Script_LoadScriptList, &Script_LoadScriptList); - DetourDetach((LPVOID*)&v_Script_LoadScriptFile, &Script_LoadScriptFile); - DetourDetach((LPVOID*)&v_Script_PrecompileServerScripts, &Script_PrecompileServerScripts); - DetourDetach((LPVOID*)&v_Script_PrecompileClientScripts, &Script_PrecompileClientScripts); + DetourSetup(&v_Script_LoadScriptList, &Script_LoadScriptList, bAttach); + DetourSetup(&v_Script_LoadScriptFile, &Script_LoadScriptFile, bAttach); + DetourSetup(&v_Script_PrecompileServerScripts, &Script_PrecompileServerScripts, bAttach); + DetourSetup(&v_Script_PrecompileClientScripts, &Script_PrecompileClientScripts, bAttach); } diff --git a/src/vscript/vscript.h b/src/vscript/vscript.h index 3861280c..10f1ea97 100644 --- a/src/vscript/vscript.h +++ b/src/vscript/vscript.h @@ -82,8 +82,7 @@ class VScript : public IDetour } virtual void GetVar(void) const { } virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/vstdlib/keyvaluessystem.h b/src/vstdlib/keyvaluessystem.h index a778790d..9b3b0634 100644 --- a/src/vstdlib/keyvaluessystem.h +++ b/src/vstdlib/keyvaluessystem.h @@ -77,7 +77,6 @@ class HKeyValuesSystem : public IDetour g_pKeyValuesMemPool = g_GameDll.FindPatternSIMD("48 8B 05 ?? ?? ?? ?? C3 CC CC CC CC CC CC CC CC 48 85 D2").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } virtual void GetCon(void) const { } - virtual void Attach(void) const { } - virtual void Detach(void) const { } + virtual void Detour(const bool bAttach) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/src/windows/id3dx.cpp b/src/windows/id3dx.cpp index a0bcc337..5a12fa96 100644 --- a/src/windows/id3dx.cpp +++ b/src/windows/id3dx.cpp @@ -438,17 +438,10 @@ void VDXGI::GetVar(void) const g_ppSwapChain = pBase.FindPattern("48 8B 0D").ResolveRelativeAddressSelf(0x3, 0x7).RCast(); } -void VDXGI::Attach(void) const +void VDXGI::Detour(const bool bAttach) const { #ifdef GAMEDLL_S3 - DetourAttach(&v_CreateTextureResource, &CreateTextureResource); -#endif // GAMEDLL_S3 -} - -void VDXGI::Detach(void) const -{ -#ifdef GAMEDLL_S3 - DetourDetach(&v_CreateTextureResource, &CreateTextureResource); + DetourSetup(&v_CreateTextureResource, &CreateTextureResource, bAttach); #endif // GAMEDLL_S3 } diff --git a/src/windows/id3dx.h b/src/windows/id3dx.h index 7b94036b..83db0447 100644 --- a/src/windows/id3dx.h +++ b/src/windows/id3dx.h @@ -121,8 +121,7 @@ class VDXGI : public IDetour virtual void GetFun(void) const; virtual void GetVar(void) const; virtual void GetCon(void) const { } - virtual void Attach(void) const; - virtual void Detach(void) const; + virtual void Detour(const bool bAttach) const; /////////////////////////////////////////////////////////////////////////////// }; #endif // !BUILDING_LIBIMGUI