aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NorthstarDedicatedTest/dedicatedmaterialsystem.cpp41
-rw-r--r--NorthstarDedicatedTest/serverauthentication.cpp6
2 files changed, 42 insertions, 5 deletions
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<LPVOID*>(&RegisterRpakType));
+ // unfortunately this is unstable, seems to freeze when changing maps
+ //ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0xB0F0, &PakLoadAPI__LoadRpakHook, reinterpret_cast<LPVOID*>(&PakLoadAPI__LoadRpak));
+ //ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0xB170, &PakLoadAPI__LoadRpak2Hook, reinterpret_cast<LPVOID*>(&PakLoadAPI__LoadRpak2));
+
+ if (DisableDedicatedWindowCreation())
+ {
+ ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0x7BE0, &RegisterRpakTypeHook, reinterpret_cast<LPVOID*>(&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);