aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDLL/miscclientfixes.cpp
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2022-08-24 00:32:31 +0100
committerGitHub <noreply@github.com>2022-08-24 00:32:31 +0100
commitf9bc3c9d1834cb8bd5f872b749b057c33e8b0102 (patch)
treee96e2da0d95798dd42eddf644a82a74555db858f /NorthstarDLL/miscclientfixes.cpp
parent812893d8219daa60f5b5b7fd22cbd6b175603399 (diff)
downloadNorthstarLauncher-f9bc3c9d1834cb8bd5f872b749b057c33e8b0102.tar.gz
NorthstarLauncher-f9bc3c9d1834cb8bd5f872b749b057c33e8b0102.zip
Adjust folder structure (#242)
* Adjust folder structure * change launcher directory name
Diffstat (limited to 'NorthstarDLL/miscclientfixes.cpp')
-rw-r--r--NorthstarDLL/miscclientfixes.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/NorthstarDLL/miscclientfixes.cpp b/NorthstarDLL/miscclientfixes.cpp
new file mode 100644
index 00000000..62ffd4a4
--- /dev/null
+++ b/NorthstarDLL/miscclientfixes.cpp
@@ -0,0 +1,49 @@
+#include "pch.h"
+#include "miscclientfixes.h"
+#include "hookutils.h"
+#include "dedicated.h"
+
+typedef void* (*CrashingWeaponActivityFuncType)(void* a1);
+CrashingWeaponActivityFuncType CrashingWeaponActivityFunc0;
+CrashingWeaponActivityFuncType CrashingWeaponActivityFunc1;
+
+void* CrashingWeaponActivityFunc0Hook(void* a1)
+{
+ // this return is safe, other functions that use this value seemingly dont care about it being null
+ if (!a1)
+ return 0;
+
+ return CrashingWeaponActivityFunc0(a1);
+}
+
+void* CrashingWeaponActivityFunc1Hook(void* a1)
+{
+ // this return is safe, other functions that use this value seemingly dont care about it being null
+ if (!a1)
+ return 0;
+
+ return CrashingWeaponActivityFunc1(a1);
+}
+
+void InitialiseMiscClientFixes(HMODULE baseAddress)
+{
+ if (IsDedicated())
+ return;
+
+ HookEnabler hook;
+
+ // these functions will occasionally pass a null pointer on respawn, unsure what causes this but seems easiest just to return null if
+ // null, which seems to work fine fucking sucks this has to be fixed like this but unsure what exactly causes this serverside, breaks
+ // vanilla compatibility to a degree tho will say i have about 0 clue what exactly these functions do, testing this it doesn't even seem
+ // like they do much of anything i can see tbh
+ ENABLER_CREATEHOOK(
+ hook, (char*)baseAddress + 0x5A92D0, &CrashingWeaponActivityFunc0Hook, reinterpret_cast<LPVOID*>(&CrashingWeaponActivityFunc0));
+ ENABLER_CREATEHOOK(
+ hook, (char*)baseAddress + 0x5A9310, &CrashingWeaponActivityFunc1Hook, reinterpret_cast<LPVOID*>(&CrashingWeaponActivityFunc1));
+
+ // experimental: allow cl_extrapolate to be enabled without cheats
+ {
+ void* ptr = (char*)baseAddress + 0x275F9D9;
+ *((char*)ptr) = (char)0;
+ }
+} \ No newline at end of file