From b0232efab1845cd47c639ad3cbc4e6d6db42c81e Mon Sep 17 00:00:00 2001 From: BobTheBob <32057864+BobTheBob9@users.noreply.github.com> Date: Fri, 17 Dec 2021 21:54:03 +0000 Subject: change placeholder playerdata directory --- NorthstarDedicatedTest/dedicatedmaterialsystem.cpp | 41 ++++++++++++++++++++-- NorthstarDedicatedTest/serverauthentication.cpp | 6 ++-- 2 files changed, 42 insertions(+), 5 deletions(-) (limited to 'NorthstarDedicatedTest') diff --git a/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp b/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp index 758f0527..804e35cf 100644 --- a/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp +++ b/NorthstarDedicatedTest/dedicatedmaterialsystem.cpp @@ -135,11 +135,48 @@ void* RegisterRpakTypeHook(RpakTypeDefinition* rpakStruct, unsigned int a1, unsi return RegisterRpakType(rpakStruct, a1, a2); } +typedef void*(*PakLoadAPI__LoadRpakType)(char* filename, void* unknown, int flags); +PakLoadAPI__LoadRpakType PakLoadAPI__LoadRpak; + +void* PakLoadAPI__LoadRpakHook(char* filename, void* unknown, int flags) +{ + spdlog::info("PakLoadAPI__LoadRpakHook {}", filename); + + // on dedi, don't load any paks that aren't required + if (strncmp(filename, "common", 6)) + return 0; + + return PakLoadAPI__LoadRpak(filename, unknown, flags); +} + +typedef void* (*PakLoadAPI__LoadRpak2Type)(char* filename, void* unknown, int flags, void* callback, void* callback2); +PakLoadAPI__LoadRpak2Type PakLoadAPI__LoadRpak2; + +void* PakLoadAPI__LoadRpak2Hook(char* filename, void* unknown, int flags, void* callback, void* callback2) +{ + spdlog::info("PakLoadAPI__LoadRpak2Hook {}", filename); + + // on dedi, don't load any paks that aren't required + if (strncmp(filename, "common", 6)) + return 0; + + return PakLoadAPI__LoadRpak2(filename, unknown, flags, callback, callback2); +} + void InitialiseDedicatedRtechGame(HMODULE baseAddress) { - if (!IsDedicated() || !DisableDedicatedWindowCreation()) + if (!IsDedicated()) return; + baseAddress = GetModuleHandleA("rtech_game.dll"); + HookEnabler hook; - ENABLER_CREATEHOOK(hook, (char*)GetModuleHandleA("rtech_game.dll") + 0x7BE0, &RegisterRpakTypeHook, reinterpret_cast(&RegisterRpakType)); + // unfortunately this is unstable, seems to freeze when changing maps + //ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0xB0F0, &PakLoadAPI__LoadRpakHook, reinterpret_cast(&PakLoadAPI__LoadRpak)); + //ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0xB170, &PakLoadAPI__LoadRpak2Hook, reinterpret_cast(&PakLoadAPI__LoadRpak2)); + + if (DisableDedicatedWindowCreation()) + { + ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0x7BE0, &RegisterRpakTypeHook, reinterpret_cast(&RegisterRpakType)); + } } \ No newline at end of file diff --git a/NorthstarDedicatedTest/serverauthentication.cpp b/NorthstarDedicatedTest/serverauthentication.cpp index 7042e9c1..85dc700e 100644 --- a/NorthstarDedicatedTest/serverauthentication.cpp +++ b/NorthstarDedicatedTest/serverauthentication.cpp @@ -109,7 +109,7 @@ bool ServerAuthenticationManager::AuthenticatePlayer(void* player, int64_t uid, { // use stored auth data AuthData authData = m_authData[authToken]; - if (!strcmp(strUid.c_str(), authData.uid)) // connecting client's uid is different from auth's uid + if (!strcmp(strUid.c_str(), authData.uid)) // connecting client's uid is the same as auth's uid { authFail = false; // uuid @@ -134,13 +134,13 @@ bool ServerAuthenticationManager::AuthenticatePlayer(void* player, int64_t uid, strcpy((char*)player + 0xF500, strUid.c_str()); // try reading pdata file for player - std::string pdataPath = "playerdata/playerdata_"; + std::string pdataPath = "R2Northstar/playerdata_"; pdataPath += strUid; pdataPath += ".pdata"; std::fstream pdataStream(pdataPath, std::ios_base::in); if (pdataStream.fail()) // file doesn't exist, use placeholder - pdataStream = std::fstream("playerdata/placeholder_playerdata.pdata"); + pdataStream = std::fstream("R2Northstar/placeholder_playerdata.pdata"); // get file length pdataStream.seekg(0, pdataStream.end); -- cgit v1.2.3