From 0c583d7522d2733825818a8b7aba68708b704481 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sat, 6 Aug 2022 22:17:47 +0200 Subject: [PATCH] Temporary fix for rpaks not loading from override dir --- r5dev/resource/batch/clean_sdk.bat | 3 ++- r5dev/rtech/rtech_game.cpp | 10 +++++----- r5dev/rtech/rtech_game.h | 1 + r5dev/rtech/rtech_utils.cpp | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/r5dev/resource/batch/clean_sdk.bat b/r5dev/resource/batch/clean_sdk.bat index 4308293e..57e4fc23 100644 --- a/r5dev/resource/batch/clean_sdk.bat +++ b/r5dev/resource/batch/clean_sdk.bat @@ -1,7 +1,7 @@ REM Remove log files ('log' is no longer used. 'logs' contains current logs, these get automatically cleaned if they exceed 10mb). rd /S /Q "%~dp0log" rd /S /Q "%~dp0logs" -REM Remove old navmesh files which where included as an attempt to debug/suppress warnings. +REM Remove old NavMesh files which where included as an attempt to debug/suppress warnings. rd /S /Q "%~dp0platform\maps\graphs" rd /S /Q "%~dp0platform\maps\navmesh" REM Remove deprecated binary and configuration files (these are no longer used). @@ -12,3 +12,4 @@ del /Q "%~dp0..\r5reloaded.exe" del /Q "%~dp0..\r5apexsdkd64.dll" del /Q "%~dp0..\r5detours.dll" del /Q "%~dp0..\r5dev.dll" +del /Q "%~dp0..\paks\Win32\common_empty.rpak" diff --git a/r5dev/rtech/rtech_game.cpp b/r5dev/rtech/rtech_game.cpp index e07d5f14..bd3bfb07 100644 --- a/r5dev/rtech/rtech_game.cpp +++ b/r5dev/rtech/rtech_game.cpp @@ -18,17 +18,17 @@ vector g_vLoadedPakHandle; // *pMalloc - // nIdx - // bUnk - -// Output : pak file handle on success, -1 (INVALID_PAK_HANDLE) on failure +// Output : pak file handle on success, INVALID_PAK_HANDLE on failure //----------------------------------------------------------------------------- RPakHandle_t CPakFile::LoadAsync(const char* szPakFileName, uintptr_t pMalloc, int nIdx, bool bUnk) { - RPakHandle_t pakHandle = -1; + RPakHandle_t pakHandle = INVALID_PAK_HANDLE; #ifdef DEDICATED // Extraneous files (useless on the dedicated server). if (strcmp(szPakFileName, "ui.rpak") == 0) { - static const char* szReplacement = "common_empty.rpak"; - // Returning -1 (invalid handle) triggers engine error, call is inline. + static const char* szReplacement = "empty.rpak"; + // Returning INVALID_PAK_HANDLE triggers engine error, call is inline. // Replacing the ui.rpak file here with a stub to avoid having to patch. DevMsg(eDLL_T::RTECH, "Loading pak file: '%s' for '%s'\n", szReplacement, szPakFileName); return pakHandle = CPakFile_LoadAsync(szReplacement, pMalloc, nIdx, bUnk); @@ -49,7 +49,7 @@ RPakHandle_t CPakFile::LoadAsync(const char* szPakFileName, uintptr_t pMalloc, i DevMsg(eDLL_T::RTECH, "Loading pak file: '%s'\n", szPakFileName); pakHandle = CPakFile_LoadAsync(szPakFileName, pMalloc, nIdx, bUnk); - if (pakHandle == -1) + if (pakHandle == INVALID_PAK_HANDLE) { Error(eDLL_T::RTECH, "%s: Failed read '%s' results '%u'\n", __FUNCTION__, szPakFileName, pakHandle); } diff --git a/r5dev/rtech/rtech_game.h b/r5dev/rtech/rtech_game.h index def90028..62c1c93c 100644 --- a/r5dev/rtech/rtech_game.h +++ b/r5dev/rtech/rtech_game.h @@ -2,6 +2,7 @@ #include "tier0/tslist.h" typedef int RPakHandle_t; +constexpr int INVALID_PAK_HANDLE = -1; enum class ePakStatus : int { diff --git a/r5dev/rtech/rtech_utils.cpp b/r5dev/rtech/rtech_utils.cpp index e94c8843..bc2c4204 100644 --- a/r5dev/rtech/rtech_utils.cpp +++ b/r5dev/rtech/rtech_utils.cpp @@ -632,7 +632,7 @@ int32_t RTech::OpenFile(const char* szFilePath, void* unused, int64_t* fileSizeO const int32_t fileIdx = RTech_FindFreeSlotInFiles(s_pFileArray); ReleaseSRWLockExclusive(reinterpret_cast(&*g_pPakFileSlotLock)); - const int32_t fileHandleIdx = fileIdx & 0x3FF; // Something with ArraySize. + const int32_t fileHandleIdx = (fileIdx & 0x3FF); // Something with ArraySize. m_FileHandles->self[fileHandleIdx].m_nFileNumber = fileIdx; m_FileHandles->self[fileHandleIdx].m_hFileHandle = hFile; @@ -688,7 +688,7 @@ RPakLoadedInfo_t* RTech::GetPakLoadedInfo(const char* szPakName) void RTech_Utils_Attach() { - DetourAttach((LPVOID*)&RTech_OpenFile, &RTech::OpenFile); + //DetourAttach((LPVOID*)&RTech_OpenFile, &RTech::OpenFile); // !FIXME: Loading override rpaks doesn't work with this, disabled for now. #if not defined DEDICATED && defined (GAMEDLL_S3) DetourAttach((LPVOID*)&RTech_CreateDXTexture, &RTech::CreateDXTexture); @@ -698,7 +698,7 @@ void RTech_Utils_Attach() void RTech_Utils_Detach() { // [ PIXIE ]: Everything related to RTech::OpenFile should be compatible across seasons. - DetourDetach((LPVOID*)&RTech_OpenFile, &RTech::OpenFile); + //DetourDetach((LPVOID*)&RTech_OpenFile, &RTech::OpenFile); #if not defined DEDICATED && defined (GAMEDLL_S3) DetourDetach((LPVOID*)&RTech_CreateDXTexture, &RTech::CreateDXTexture);