From 104547893807b2e961bee0dbf457ef35bd7bf80c Mon Sep 17 00:00:00 2001 From: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> Date: Sun, 15 Dec 2024 22:52:23 +0000 Subject: [PATCH] scripts/client: Remove uses of Autohook from `scriptbrowserhooks.cpp` (#833) * Manually hook OpenExternalWebBrowser * Remove AUTOHOOK_INIT and AUTOHOOK_DISPATCH --- primedev/scripts/client/scriptbrowserhooks.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/primedev/scripts/client/scriptbrowserhooks.cpp b/primedev/scripts/client/scriptbrowserhooks.cpp index dcf051d22..3c4af1b57 100644 --- a/primedev/scripts/client/scriptbrowserhooks.cpp +++ b/primedev/scripts/client/scriptbrowserhooks.cpp @@ -1,25 +1,22 @@ -AUTOHOOK_INIT() - bool* bIsOriginOverlayEnabled; -// clang-format off -AUTOHOOK(OpenExternalWebBrowser, engine.dll + 0x184E40, -void, __fastcall, (char* pUrl, char flags)) -// clang-format on +static void(__fastcall* o_pOpenExternalWebBrowser)(char* pUrl, char flags) = nullptr; +static void __fastcall h_OpenExternalWebBrowser(char* pUrl, char flags) { bool bIsOriginOverlayEnabledOriginal = *bIsOriginOverlayEnabled; bool isHttp = !strncmp(pUrl, "http://", 7) || !strncmp(pUrl, "https://", 8); if (flags & 2 && isHttp) // custom force external browser flag *bIsOriginOverlayEnabled = false; // if this bool is false, game will use an external browser rather than the origin overlay one - OpenExternalWebBrowser(pUrl, flags); + o_pOpenExternalWebBrowser(pUrl, flags); *bIsOriginOverlayEnabled = bIsOriginOverlayEnabledOriginal; } ON_DLL_LOAD_CLIENT("engine.dll", ScriptExternalBrowserHooks, (CModule module)) { - AUTOHOOK_DISPATCH() + o_pOpenExternalWebBrowser = module.Offset(0x184E40).RCast(); + HookAttach(&(PVOID&)o_pOpenExternalWebBrowser, (PVOID)h_OpenExternalWebBrowser); bIsOriginOverlayEnabled = module.Offset(0x13978255).RCast(); }