From a42c452bedafa2778924a7e360fb50aa67de92ae Mon Sep 17 00:00:00 2001 From: ASpoonPlaysGames <66967891+ASpoonPlaysGames@users.noreply.github.com> Date: Sun, 15 Dec 2024 17:48:45 +0000 Subject: [PATCH 1/2] scripts/client: Manually hook OpenExternalWebBrowser --- primedev/scripts/client/scriptbrowserhooks.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/primedev/scripts/client/scriptbrowserhooks.cpp b/primedev/scripts/client/scriptbrowserhooks.cpp index dcf051d22..430657720 100644 --- a/primedev/scripts/client/scriptbrowserhooks.cpp +++ b/primedev/scripts/client/scriptbrowserhooks.cpp @@ -3,17 +3,15 @@ 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; } @@ -21,5 +19,8 @@ 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(); } From a777b3b33f8f009e46ba6adc18e00ea3df5629d2 Mon Sep 17 00:00:00 2001 From: ASpoonPlaysGames <66967891+ASpoonPlaysGames@users.noreply.github.com> Date: Sun, 15 Dec 2024 17:49:06 +0000 Subject: [PATCH 2/2] scripts/client: Remove AUTOHOOK_INIT and AUTOHOOK_DISPATCH --- primedev/scripts/client/scriptbrowserhooks.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/primedev/scripts/client/scriptbrowserhooks.cpp b/primedev/scripts/client/scriptbrowserhooks.cpp index 430657720..3c4af1b57 100644 --- a/primedev/scripts/client/scriptbrowserhooks.cpp +++ b/primedev/scripts/client/scriptbrowserhooks.cpp @@ -1,6 +1,4 @@ -AUTOHOOK_INIT() - bool* bIsOriginOverlayEnabled; static void(__fastcall* o_pOpenExternalWebBrowser)(char* pUrl, char flags) = nullptr; @@ -17,8 +15,6 @@ static void __fastcall h_OpenExternalWebBrowser(char* pUrl, char flags) ON_DLL_LOAD_CLIENT("engine.dll", ScriptExternalBrowserHooks, (CModule module)) { - AUTOHOOK_DISPATCH() - o_pOpenExternalWebBrowser = module.Offset(0x184E40).RCast(); HookAttach(&(PVOID&)o_pOpenExternalWebBrowser, (PVOID)h_OpenExternalWebBrowser);