From e6bf59e0b822d0a36e9fea392c3ddcb2b616362f Mon Sep 17 00:00:00 2001 From: nordgaren Date: Tue, 30 Aug 2022 09:11:00 -0700 Subject: [PATCH 1/6] Added dll mod loading functionality via eldenring_mods.txt file --- .../launch_modded_eldenring.cpp | 26 +++++++++++++++++++ .../launch_modded_eldenring.h | 3 +++ 2 files changed, 29 insertions(+) diff --git a/launch_modded_eldenring/launch_modded_eldenring.cpp b/launch_modded_eldenring/launch_modded_eldenring.cpp index 1d56e4a..ad8d210 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.cpp +++ b/launch_modded_eldenring/launch_modded_eldenring.cpp @@ -1,5 +1,6 @@ #include "launch_modded_eldenring.h" + int main() { LaunchModdedEldenRing ModLauncher = LaunchModdedEldenRing(); ModLauncher.Run(); @@ -16,6 +17,13 @@ void LaunchModdedEldenRing::Run() { return; }; + + if (!InjectDLLMods()) { + should_run = false; + system("PAUSE"); + return; + }; + // Replace with anything else you'd like to do // doesn't have to be a dll injection /* @@ -60,6 +68,24 @@ bool LaunchModdedEldenRing::LaunchGame() { elden_ring_thread = process_info.hThread; elden_ring_handle = process_info.hProcess; + return true; +} + +bool LaunchModdedEldenRing::InjectDLLMods() { + std::ifstream file("eldenring_mods.txt"); + if (file.is_open()) { + std::string line; + while (std::getline(file, line)) { + //checking the whole string, because filenames shouldn't have this in them, either. Allows comments + if (line.find(std::string(";")) != std::string::npos) { + printf_s("Loading %s...\n", line.c_str()); + if (!InjectMod(line.c_str())) { + return false; + }; + } + } + file.close(); + } return true; }; diff --git a/launch_modded_eldenring/launch_modded_eldenring.h b/launch_modded_eldenring/launch_modded_eldenring.h index d8a1b3b..fe849d4 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.h +++ b/launch_modded_eldenring/launch_modded_eldenring.h @@ -1,11 +1,14 @@ #include #include #include +#include +#include class LaunchModdedEldenRing { public: void Run(); bool LaunchGame(); + bool InjectDLLMods(); bool InjectMod(const char* mod_name); LaunchModdedEldenRing() { From c455f9532a63c58b5814935ecc7ec0494740b6ae Mon Sep 17 00:00:00 2001 From: nordgaren Date: Tue, 30 Aug 2022 09:12:22 -0700 Subject: [PATCH 2/6] decided against comments --- .../launch_modded_eldenring.cpp | 211 +++++++++--------- 1 file changed, 104 insertions(+), 107 deletions(-) diff --git a/launch_modded_eldenring/launch_modded_eldenring.cpp b/launch_modded_eldenring/launch_modded_eldenring.cpp index ad8d210..d55cae4 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.cpp +++ b/launch_modded_eldenring/launch_modded_eldenring.cpp @@ -2,135 +2,132 @@ int main() { - LaunchModdedEldenRing ModLauncher = LaunchModdedEldenRing(); - ModLauncher.Run(); - return 0; + LaunchModdedEldenRing ModLauncher = LaunchModdedEldenRing(); + ModLauncher.Run(); + return 0; } void LaunchModdedEldenRing::Run() { - using namespace std::chrono_literals; - - if (!LaunchGame()) { - should_run = false; - system("PAUSE"); - return; - }; - - - if (!InjectDLLMods()) { - should_run = false; - system("PAUSE"); - return; - }; - - // Replace with anything else you'd like to do - // doesn't have to be a dll injection - /* - if (!InjectMod("ModName.dll")) { - should_run = false; - system("PAUSE"); - return; - }; - */ - - // Can also ust close as the launcher isn't needed anymore - printf_s("Elden Ring is running...\n"); - WaitForSingleObject(elden_ring_handle, INFINITE); - CloseHandle(elden_ring_thread); - CloseHandle(elden_ring_handle); - - return; + using namespace std::chrono_literals; + + if (!LaunchGame()) { + should_run = false; + system("PAUSE"); + return; + }; + + + if (!InjectDLLMods()) { + should_run = false; + system("PAUSE"); + return; + }; + + // Replace with anything else you'd like to do + // doesn't have to be a dll injection + /* + if (!InjectMod("ModName.dll")) { + should_run = false; + system("PAUSE"); + return; + }; + */ + + // Can also ust close as the launcher isn't needed anymore + printf_s("Elden Ring is running...\n"); + WaitForSingleObject(elden_ring_handle, INFINITE); + CloseHandle(elden_ring_thread); + CloseHandle(elden_ring_handle); + + return; }; bool LaunchModdedEldenRing::LaunchGame() { - OFSTRUCT file_struct = {}; - HFILE elden_ring_exe_handle = OpenFile("eldenring.exe", &file_struct, OF_EXIST); - if (elden_ring_exe_handle == HFILE_ERROR) { - printf_s("Failed to find \"eldenring.exe\"\n"); - return false; - }; - - if (!SetEnvironmentVariableA("SteamAppId", "1245620")) { - printf_s("Failed to create appropriate launch environment\n"); - return false; - }; - - STARTUPINFOA startup_info = {}; - PROCESS_INFORMATION process_info = {}; - if (!CreateProcessA("eldenring.exe", nullptr, nullptr, nullptr, - false, 0, nullptr, nullptr, &startup_info, &process_info)) { - printf_s("Failed to launch \"eldenring.exe\"\n"); - return false; - }; - - elden_ring_thread = process_info.hThread; - elden_ring_handle = process_info.hProcess; - - return true; + OFSTRUCT file_struct = {}; + HFILE elden_ring_exe_handle = OpenFile("eldenring.exe", &file_struct, OF_EXIST); + if (elden_ring_exe_handle == HFILE_ERROR) { + printf_s("Failed to find \"eldenring.exe\"\n"); + return false; + }; + + if (!SetEnvironmentVariableA("SteamAppId", "1245620")) { + printf_s("Failed to create appropriate launch environment\n"); + return false; + }; + + STARTUPINFOA startup_info = {}; + PROCESS_INFORMATION process_info = {}; + if (!CreateProcessA("eldenring.exe", nullptr, nullptr, nullptr, + false, 0, nullptr, nullptr, &startup_info, &process_info)) { + printf_s("Failed to launch \"eldenring.exe\"\n"); + return false; + }; + + elden_ring_thread = process_info.hThread; + elden_ring_handle = process_info.hProcess; + + return true; } bool LaunchModdedEldenRing::InjectDLLMods() { - std::ifstream file("eldenring_mods.txt"); - if (file.is_open()) { - std::string line; - while (std::getline(file, line)) { - //checking the whole string, because filenames shouldn't have this in them, either. Allows comments - if (line.find(std::string(";")) != std::string::npos) { - printf_s("Loading %s...\n", line.c_str()); - if (!InjectMod(line.c_str())) { - return false; - }; - } - } - file.close(); - } - return true; + std::ifstream file("eldenring_mods.txt"); + if (file.is_open()) { + std::string line; + while (std::getline(file, line)) { + printf_s("Loading %s...\n", line.c_str()); + if (!InjectMod(line.c_str())) { + return false; + }; + } + file.close(); + } + return true; }; bool LaunchModdedEldenRing::InjectMod(const char* mod_name) { - OFSTRUCT file_struct = {}; - HFILE elden_ring_exe_handle = OpenFile(mod_name, &file_struct, OF_EXIST); - if (elden_ring_exe_handle == HFILE_ERROR) { - printf_s("Failed to find \"%s\"\n", mod_name); - return false; - }; + OFSTRUCT file_struct = {}; + HFILE elden_ring_exe_handle = OpenFile(mod_name, &file_struct, OF_EXIST); + if (elden_ring_exe_handle == HFILE_ERROR) { + printf_s("Failed to find \"%s\"\n", mod_name); + return false; + }; - HANDLE elden_ring_handle_open = OpenProcess(PROCESS_ALL_ACCESS, false, GetProcessId(elden_ring_handle)); - if (elden_ring_handle_open == INVALID_HANDLE_VALUE) { - printf_s("Failed to open process: \"eldenring.exe\"\n"); - return false; - }; + HANDLE elden_ring_handle_open = OpenProcess(PROCESS_ALL_ACCESS, false, GetProcessId(elden_ring_handle)); + if (elden_ring_handle_open == INVALID_HANDLE_VALUE) { + printf_s("Failed to open process: \"eldenring.exe\"\n"); + return false; + }; - size_t memory_alloc = strlen(mod_name); - void* dll_path = VirtualAllocEx(elden_ring_handle_open, 0, memory_alloc, MEM_COMMIT, PAGE_READWRITE); - if (!dll_path) { - printf_s("Out of memory\n"); - return false; - }; + size_t memory_alloc = strlen(mod_name); + void* dll_path = VirtualAllocEx(elden_ring_handle_open, 0, memory_alloc, MEM_COMMIT, PAGE_READWRITE); + if (!dll_path) { + printf_s("Out of memory\n"); + return false; + }; - FARPROC load_library_a = GetProcAddress(GetModuleHandleA("Kernel32.dll"), "LoadLibraryA"); - if (!load_library_a) { - printf_s("Unable to load mod dll\n"); - return false; - }; + FARPROC load_library_a = GetProcAddress(GetModuleHandleA("Kernel32.dll"), "LoadLibraryA"); + if (!load_library_a) { + printf_s("Unable to load mod dll\n"); + return false; + }; - WriteProcessMemory(elden_ring_handle, dll_path, mod_name, memory_alloc, nullptr); + WriteProcessMemory(elden_ring_handle, dll_path, mod_name, memory_alloc, nullptr); - HANDLE dll_load_thread = CreateRemoteThread(elden_ring_handle, 0, 0, (LPTHREAD_START_ROUTINE)load_library_a, dll_path, 0, 0); - if (!dll_load_thread) { - printf_s("Unable to inject mod dll\n"); - return false; - }; + HANDLE dll_load_thread = CreateRemoteThread(elden_ring_handle, 0, 0, (LPTHREAD_START_ROUTINE)load_library_a, dll_path, 0, 0); + if (!dll_load_thread) { + printf_s("Unable to inject mod dll\n"); + return false; + }; - WaitForSingleObject(dll_load_thread, INFINITE); + WaitForSingleObject(dll_load_thread, INFINITE); - VirtualFreeEx(elden_ring_handle, dll_path, 0, MEM_RELEASE); + VirtualFreeEx(elden_ring_handle, dll_path, 0, MEM_RELEASE); - CloseHandle(dll_load_thread); + CloseHandle(dll_load_thread); - CloseHandle(elden_ring_handle_open); - return true; + CloseHandle(elden_ring_handle_open); + return true; }; \ No newline at end of file From 2f45c5a0402fbdd4ae353049fea1b2f50b15851e Mon Sep 17 00:00:00 2001 From: nordgaren Date: Tue, 30 Aug 2022 09:13:09 -0700 Subject: [PATCH 3/6] Readme update --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f3f03b5..6788c27 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Launches Elden Ring without Easy Anti-Cheat. By default the game will not connec Intended for convenience, and may be useful as launchers to inject dlls in order to run offline mods. +Users can inject dlls by creating a `eldenring_mods.txt` file and putting the name of each dll you want to load into the file on a new line. + The "launch_modded_eldenring.exe" launcher must be in the ELDENRING/Game directory (where eldenring.exe is located) Please don't attempt to play online without Easy Anti-Cheat. From f6f6ab081961d8675bd2d4ce5b800b07c9e14839 Mon Sep 17 00:00:00 2001 From: nordgaren Date: Tue, 30 Aug 2022 09:15:17 -0700 Subject: [PATCH 4/6] Failed to load message --- launch_modded_eldenring/launch_modded_eldenring.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launch_modded_eldenring/launch_modded_eldenring.cpp b/launch_modded_eldenring/launch_modded_eldenring.cpp index d55cae4..2b306b0 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.cpp +++ b/launch_modded_eldenring/launch_modded_eldenring.cpp @@ -78,6 +78,7 @@ bool LaunchModdedEldenRing::InjectDLLMods() { while (std::getline(file, line)) { printf_s("Loading %s...\n", line.c_str()); if (!InjectMod(line.c_str())) { + printf_s("Failed to load %s...\n", line.c_str()); return false; }; } From 4747dcf28577d4875b2de3d4c413647dac3b99b8 Mon Sep 17 00:00:00 2001 From: Nordgaren Date: Mon, 19 Dec 2022 16:15:26 -0700 Subject: [PATCH 5/6] Added some checks and output for bad configurations. --- README.md | 10 +- .../launch_modded_eldenring.cpp | 283 ++++++++++-------- .../launch_modded_eldenring.h | 3 + .../launch_modded_eldenring.vcxproj | 1 + 4 files changed, 178 insertions(+), 119 deletions(-) diff --git a/README.md b/README.md index 6788c27..7b675f6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,15 @@ Intended for convenience, and may be useful as launchers to inject dlls in order Users can inject dlls by creating a `eldenring_mods.txt` file and putting the name of each dll you want to load into the file on a new line. -The "launch_modded_eldenring.exe" launcher must be in the ELDENRING/Game directory (where eldenring.exe is located) +The "launch_modded_eldenring.exe" launcher must be in the `ELDEN RING/Game` directory (where eldenring.exe is located) + +You can prefix a mod with a folder name, and organize your mods, if you'd like. Example: + +``` +dllmods/elden_ring_seamless_coop.dll +``` + +this will look for `elden_ring_seamless_coop.dll` in the `ELDEN RING/Game/dllmods` folder. Please don't attempt to play online without Easy Anti-Cheat. diff --git a/launch_modded_eldenring/launch_modded_eldenring.cpp b/launch_modded_eldenring/launch_modded_eldenring.cpp index 2b306b0..f4a7f0d 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.cpp +++ b/launch_modded_eldenring/launch_modded_eldenring.cpp @@ -1,134 +1,181 @@ #include "launch_modded_eldenring.h" - int main() { - LaunchModdedEldenRing ModLauncher = LaunchModdedEldenRing(); - ModLauncher.Run(); - return 0; + LaunchModdedEldenRing ModLauncher = LaunchModdedEldenRing(); + ModLauncher.Run(); + return 0; } void LaunchModdedEldenRing::Run() { - - using namespace std::chrono_literals; - - if (!LaunchGame()) { - should_run = false; - system("PAUSE"); - return; - }; - - - if (!InjectDLLMods()) { - should_run = false; - system("PAUSE"); - return; - }; - - // Replace with anything else you'd like to do - // doesn't have to be a dll injection - /* - if (!InjectMod("ModName.dll")) { - should_run = false; - system("PAUSE"); - return; - }; - */ - - // Can also ust close as the launcher isn't needed anymore - printf_s("Elden Ring is running...\n"); - WaitForSingleObject(elden_ring_handle, INFINITE); - CloseHandle(elden_ring_thread); - CloseHandle(elden_ring_handle); - - return; + using namespace std::chrono_literals; + + if (!CheckConditions()) { + should_run = false; + system("PAUSE"); + return; + }; + + if (!LaunchGame()) { + should_run = false; + system("PAUSE"); + return; + }; + + if (!InjectDLLMods()) { + should_run = false; + system("PAUSE"); + return; + }; + + // Replace with anything else you'd like to do + // doesn't have to be a dll injection + /* + if (!InjectMod("ModName.dll")) { + should_run = false; + system("PAUSE"); + return; + }; + */ + + // Can also ust close as the launcher isn't needed anymore + printf_s("Elden Ring is running...\n"); + WaitForSingleObject(elden_ring_handle, INFINITE); + CloseHandle(elden_ring_thread); + CloseHandle(elden_ring_handle); + + return; }; -bool LaunchModdedEldenRing::LaunchGame() { +bool LaunchModdedEldenRing::CheckConditions() { + if (FileNotFound(L"eldenring.exe")) { + printf_s("Failed to find: \"eldenring.exe\". Make sure you put the mod files inside your \"ELDEN RING\\Game\\\" folder!\n"); + return false; + } + + std::string exe_path = GetExePath() + "eldenring.exe"; + if (exe_path.length() > MAX_PATH) { + printf_s("Cannot load path! Path is too long! %llu\\%d \n\"%s\"\n", exe_path.length(), MAX_PATH, exe_path.c_str()); + return false; + } + + //Warnings - These do not cause failure. + if (!FileNotFound(L"dinput8.dll")) { + printf_s("Warning: You are launching seamless with the launcher and there is a dinput8.dll.\n" + "If this dinput8.dll is a mod loader, it is recommended you use the dll mod loader included with this launcher\n" + "Check the README for details on how to add dll mods to the launcher via \"eldenring_mods.txt\"\n"); + } + + return true; +} - OFSTRUCT file_struct = {}; - HFILE elden_ring_exe_handle = OpenFile("eldenring.exe", &file_struct, OF_EXIST); - if (elden_ring_exe_handle == HFILE_ERROR) { - printf_s("Failed to find \"eldenring.exe\"\n"); - return false; - }; - - if (!SetEnvironmentVariableA("SteamAppId", "1245620")) { - printf_s("Failed to create appropriate launch environment\n"); - return false; - }; - - STARTUPINFOA startup_info = {}; - PROCESS_INFORMATION process_info = {}; - if (!CreateProcessA("eldenring.exe", nullptr, nullptr, nullptr, - false, 0, nullptr, nullptr, &startup_info, &process_info)) { - printf_s("Failed to launch \"eldenring.exe\"\n"); - return false; - }; - - elden_ring_thread = process_info.hThread; - elden_ring_handle = process_info.hProcess; - - return true; +bool LaunchModdedEldenRing::LaunchGame() { + OFSTRUCT file_struct = {}; + HFILE elden_ring_exe_handle = OpenFile("eldenring.exe", &file_struct, OF_EXIST); + if (elden_ring_exe_handle == HFILE_ERROR) { + printf_s("Failed to find \"eldenring.exe\"\n"); + return false; + }; + + if (!SetEnvironmentVariableA("SteamAppId", "1245620")) { + printf_s("Failed to create appropriate launch environment\n"); + return false; + }; + + STARTUPINFOA startup_info = {}; + PROCESS_INFORMATION process_info = {}; + if (!CreateProcessA("eldenring.exe", nullptr, nullptr, nullptr, + false, 0, nullptr, nullptr, &startup_info, &process_info)) { + printf_s("Failed to launch \"eldenring.exe\"\n"); + return false; + }; + + elden_ring_thread = process_info.hThread; + elden_ring_handle = process_info.hProcess; + + return true; } bool LaunchModdedEldenRing::InjectDLLMods() { - std::ifstream file("eldenring_mods.txt"); - if (file.is_open()) { - std::string line; - while (std::getline(file, line)) { - printf_s("Loading %s...\n", line.c_str()); - if (!InjectMod(line.c_str())) { - printf_s("Failed to load %s...\n", line.c_str()); - return false; - }; - } - file.close(); - } - return true; + std::ifstream file("eldenring_mods.txt"); + if (file.is_open()) { + std::string line; + while (std::getline(file, line)) { + printf_s("Loading %s...\n", line.c_str()); + if (!InjectMod(line.c_str())) { + printf_s("Failed to load %s...\n", line.c_str()); + return false; + }; + } + file.close(); + } + return true; }; bool LaunchModdedEldenRing::InjectMod(const char* mod_name) { + OFSTRUCT file_struct = {}; + HFILE elden_ring_exe_handle = OpenFile(mod_name, &file_struct, OF_EXIST); + if (elden_ring_exe_handle == HFILE_ERROR) { + std::string mod_path = GetExePath() + "eldenring.exe"; + printf_s("Failed to find: (%llu)\n\"%s\"\n", mod_path.length(), mod_path.c_str()); + return false; + }; + + HANDLE elden_ring_handle_open = OpenProcess(PROCESS_ALL_ACCESS, false, GetProcessId(elden_ring_handle)); + if (elden_ring_handle_open == INVALID_HANDLE_VALUE) { + printf_s("Failed to open process: \"eldenring.exe\"\n"); + return false; + }; + + size_t memory_alloc = strlen(mod_name); + void* dll_path = VirtualAllocEx(elden_ring_handle_open, 0, memory_alloc, MEM_COMMIT, PAGE_READWRITE); + if (!dll_path) { + printf_s("Out of memory\n"); + return false; + }; + + FARPROC load_library_a = GetProcAddress(GetModuleHandleA("Kernel32.dll"), "LoadLibraryA"); + if (!load_library_a) { + printf_s("Unable to load Kernel32.dll. Cannot call \"LoadLibraryA\" to load dll mods!\n"); + return false; + }; + + WriteProcessMemory(elden_ring_handle, dll_path, mod_name, memory_alloc, nullptr); + + HANDLE dll_load_thread = CreateRemoteThread(elden_ring_handle, 0, 0, (LPTHREAD_START_ROUTINE)load_library_a, + dll_path, 0, 0); + if (!dll_load_thread) { + std::string modPath = GetExePath() + mod_name; + printf_s("Unable to inject dll mod: (%llu)\n\"%s\"\n", modPath.length(), modPath.c_str()); + return false; + }; + + WaitForSingleObject(dll_load_thread, INFINITE); + + VirtualFreeEx(elden_ring_handle, dll_path, 0, MEM_RELEASE); + + CloseHandle(dll_load_thread); + + CloseHandle(elden_ring_handle_open); + return true; +}; + +bool LaunchModdedEldenRing::FileNotFound(const std::wstring& name) { + return INVALID_FILE_ATTRIBUTES == GetFileAttributes(name.c_str()) && GetLastError() == ERROR_FILE_NOT_FOUND; +} + +std::string LaunchModdedEldenRing::GetExePath() { + char module_dir[MAX_PATH + 1]; + HMODULE mod; + GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, + (LPCWSTR)&"", &mod); + GetModuleFileNameA(mod, module_dir, sizeof(module_dir)); + char* module_file_path_point = strrchr(module_dir, '\\'); + if (!module_file_path_point) { + MessageBoxA(0, "Failed to parse filepath string", "Item Randomiser Mod - Error", MB_ICONERROR); + throw std::runtime_error("Failed to parse filepath string"); + }; + *module_file_path_point = '\\\0'; //add slash and null terminator + return std::string(module_dir); +} - OFSTRUCT file_struct = {}; - HFILE elden_ring_exe_handle = OpenFile(mod_name, &file_struct, OF_EXIST); - if (elden_ring_exe_handle == HFILE_ERROR) { - printf_s("Failed to find \"%s\"\n", mod_name); - return false; - }; - - HANDLE elden_ring_handle_open = OpenProcess(PROCESS_ALL_ACCESS, false, GetProcessId(elden_ring_handle)); - if (elden_ring_handle_open == INVALID_HANDLE_VALUE) { - printf_s("Failed to open process: \"eldenring.exe\"\n"); - return false; - }; - - size_t memory_alloc = strlen(mod_name); - void* dll_path = VirtualAllocEx(elden_ring_handle_open, 0, memory_alloc, MEM_COMMIT, PAGE_READWRITE); - if (!dll_path) { - printf_s("Out of memory\n"); - return false; - }; - - FARPROC load_library_a = GetProcAddress(GetModuleHandleA("Kernel32.dll"), "LoadLibraryA"); - if (!load_library_a) { - printf_s("Unable to load mod dll\n"); - return false; - }; - - WriteProcessMemory(elden_ring_handle, dll_path, mod_name, memory_alloc, nullptr); - - HANDLE dll_load_thread = CreateRemoteThread(elden_ring_handle, 0, 0, (LPTHREAD_START_ROUTINE)load_library_a, dll_path, 0, 0); - if (!dll_load_thread) { - printf_s("Unable to inject mod dll\n"); - return false; - }; - - WaitForSingleObject(dll_load_thread, INFINITE); - - VirtualFreeEx(elden_ring_handle, dll_path, 0, MEM_RELEASE); - - CloseHandle(dll_load_thread); - - CloseHandle(elden_ring_handle_open); - return true; -}; \ No newline at end of file diff --git a/launch_modded_eldenring/launch_modded_eldenring.h b/launch_modded_eldenring/launch_modded_eldenring.h index fe849d4..33c13a3 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.h +++ b/launch_modded_eldenring/launch_modded_eldenring.h @@ -10,6 +10,9 @@ class LaunchModdedEldenRing { bool LaunchGame(); bool InjectDLLMods(); bool InjectMod(const char* mod_name); + bool FileNotFound(const std::wstring& name); + bool CheckConditions(); + std::string GetExePath(); LaunchModdedEldenRing() { should_run = true; diff --git a/launch_modded_eldenring/launch_modded_eldenring.vcxproj b/launch_modded_eldenring/launch_modded_eldenring.vcxproj index 18aac4c..69b5d45 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.vcxproj +++ b/launch_modded_eldenring/launch_modded_eldenring.vcxproj @@ -78,6 +78,7 @@ true + G:\Steam\steamapps\common\ELDEN RING\Game\ false From 9909db805115b30dc2e05210a400550703a22460 Mon Sep 17 00:00:00 2001 From: nordgaren Date: Tue, 30 Aug 2022 09:15:17 -0700 Subject: [PATCH 6/6] Reverted OutDir for debugging --- launch_modded_eldenring/launch_modded_eldenring.vcxproj | 1 - 1 file changed, 1 deletion(-) diff --git a/launch_modded_eldenring/launch_modded_eldenring.vcxproj b/launch_modded_eldenring/launch_modded_eldenring.vcxproj index 69b5d45..18aac4c 100644 --- a/launch_modded_eldenring/launch_modded_eldenring.vcxproj +++ b/launch_modded_eldenring/launch_modded_eldenring.vcxproj @@ -78,7 +78,6 @@ true - G:\Steam\steamapps\common\ELDEN RING\Game\ false