diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-08-24 00:32:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-24 00:32:31 +0100 |
commit | f9bc3c9d1834cb8bd5f872b749b057c33e8b0102 (patch) | |
tree | e96e2da0d95798dd42eddf644a82a74555db858f /NorthstarDLL/miscclientfixes.cpp | |
parent | 812893d8219daa60f5b5b7fd22cbd6b175603399 (diff) | |
download | NorthstarLauncher-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.cpp | 49 |
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 |