From a5440616e24af9c974ac505203b08c435b816736 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 26 Feb 2023 22:22:45 +0100 Subject: [PATCH] Cleanup for dedicated server as result from recent patch Removed all checks for 'ui.rpak' and 'ui_mp.rpak'. None of these are useful for dedicated server. 'bUnconnected' has been changed to true (should had been in the first place). Promoted some integers to 64bit types to suppress compiler warnings, output code remained the same. --- r5dev/engine/cmodel_bsp.cpp | 20 ++++++++++++++------ r5dev/engine/cmodel_bsp.h | 4 ++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/r5dev/engine/cmodel_bsp.cpp b/r5dev/engine/cmodel_bsp.cpp index 224b6f66..4478d61e 100644 --- a/r5dev/engine/cmodel_bsp.cpp +++ b/r5dev/engine/cmodel_bsp.cpp @@ -136,12 +136,12 @@ void Mod_ProcessPakQueue() { char v0; // bl char** v1; // r10 - int i; // er9 + __int64 i; // er9 char* v3; // rcx signed __int64 v4; // r8 int v5; // eax int v6; // edx - int v7; // eax + __int64 v7; // eax __int64 v8; // rbp __int64 v9; // rsi char* v10; // rbx @@ -150,7 +150,7 @@ void Mod_ProcessPakQueue() int v13; // edi char v14; // al char* v15; // rbx - int v16; // edi + __int64 v16; // edi char* v17; // rsi char* v18; // rax int v19; // ecx @@ -164,7 +164,7 @@ void Mod_ProcessPakQueue() #ifndef DEDICATED bool bUnconnected = !(*g_pClientState_Shifted)->IsConnected(); #else // !DEDICATED - bool bUnconnected = false; // Always false for dedicated. + bool bUnconnected = true; // Always true for dedicated. #endif if (*(float*)&*dword_14B383420 == 1.0 && *qword_167ED7BB8 && bUnconnected) @@ -241,6 +241,7 @@ void Mod_ProcessPakQueue() g_pakLoadApi->UnloadPak(pLoadedSdkPak->m_nHandle); } +#ifndef DEDICATED else if (strcmp(pszLoadedPakName, "ui_mp.rpak") == 0) { const RPakLoadedInfo_t* pLoadedSdkPak = g_pRTech->GetPakLoadedInfo("ui_sdk.rpak"); @@ -248,6 +249,7 @@ void Mod_ProcessPakQueue() if (pLoadedSdkPak) // Only unload if sdk pak file is loaded. g_pakLoadApi->UnloadPak(pLoadedSdkPak->m_nHandle); } +#endif // !DEDICATED } g_pakLoadApi->UnloadPak(*(RPakHandle_t*)v10); @@ -340,8 +342,10 @@ void Mod_ProcessPakQueue() if (strcmp(v17, "common_mp.rpak") == 0 || strcmp(v17, "common_sp.rpak") == 0 || strcmp(v17, "common_pve.rpak") == 0) RPakHandle_t pakHandle = g_pakLoadApi->LoadAsync("common_sdk.rpak", g_pMallocPool, 4, 0); +#ifndef DEDICATED if (strcmp(v17, "ui_mp.rpak") == 0) RPakHandle_t pakHandle = g_pakLoadApi->LoadAsync("ui_sdk.rpak", g_pMallocPool, 4, 0); +#endif // !DEDICATED LABEL_37: v21 = *(_DWORD*)v15; @@ -366,13 +370,17 @@ void Mod_ProcessPakQueue() // Input : *szLevelName - // Output : true on success, false on failure //----------------------------------------------------------------------------- -bool Mod_LoadPakForMap(const char* pszLevelName) +void Mod_LoadPakForMap(const char* pszLevelName) { if (Mod_LevelHasChanged(pszLevelName)) s_bLevelResourceInitialized = false; s_svLevelName = pszLevelName; - return v_Mod_LoadPakForMap(pszLevelName); + + // Dedicated should not load loadscreens. +#ifndef DEDICATED + v_Mod_LoadPakForMap(pszLevelName); +#endif // !DEDICATED } //----------------------------------------------------------------------------- diff --git a/r5dev/engine/cmodel_bsp.h b/r5dev/engine/cmodel_bsp.h index 152f858c..6a6b645a 100644 --- a/r5dev/engine/cmodel_bsp.h +++ b/r5dev/engine/cmodel_bsp.h @@ -7,7 +7,7 @@ class KeyValues; inline CMemory p_Mod_LoadPakForMap; -inline auto v_Mod_LoadPakForMap = p_Mod_LoadPakForMap.RCast(); +inline auto v_Mod_LoadPakForMap = p_Mod_LoadPakForMap.RCast(); inline CMemory p_Mod_ProcessPakQueue; inline auto v_Mod_ProcessPakQueue = p_Mod_ProcessPakQueue.RCast(); @@ -63,7 +63,7 @@ class VModel_BSP : public IDetour v_MOD_LoadPakForMap = p_MOD_LoadPakForMap.RCast(); /*48 81 EC ? ? ? ? 4C 8B C1 48 8D 15 ? ? ? ? 48 8D 4C 24 ? E8 ? ? ? ? 4C 8D 0D ? ? ? ?*/ #elif defined (GAMEDLL_S2) || defined (GAMEDLL_S3) p_Mod_LoadPakForMap = g_GameDll.FindPatternSIMD("48 81 EC ?? ?? ?? ?? 0F B6 05 ?? ?? ?? ?? 4C 8D 05 ?? ?? ?? ?? 84 C0"); - v_Mod_LoadPakForMap = p_Mod_LoadPakForMap.RCast(); /*48 81 EC ? ? ? ? 0F B6 05 ? ? ? ? 4C 8D 05 ? ? ? ? 84 C0*/ + v_Mod_LoadPakForMap = p_Mod_LoadPakForMap.RCast(); /*48 81 EC ? ? ? ? 0F B6 05 ? ? ? ? 4C 8D 05 ? ? ? ? 84 C0*/ #endif p_Mod_ProcessPakQueue = g_GameDll.FindPatternSIMD("40 53 48 83 EC ?? F3 0F 10 05 ?? ?? ?? ?? 32 DB"); v_Mod_ProcessPakQueue = p_Mod_ProcessPakQueue.RCast(); /*40 53 48 83 EC ?? F3 0F 10 05 ? ? ? ? 32 DB*/