Update sdklauncher and reflect to readme

This commit is contained in:
Amos 2022-01-16 12:48:56 +01:00
parent fc4a426ca2
commit f695abc03f
3 changed files with 84 additions and 42 deletions

View File

@ -25,10 +25,10 @@ All preconfigured launch parameters are available from the release page of this
The `startup_*.cfg` files are loaded from `<gamedir>\platform\cfg\startup_*.cfg` The `startup_*.cfg` files are loaded from `<gamedir>\platform\cfg\startup_*.cfg`
* Launch option 1 [RELEASE GAME] loads `startup_retail.cfg` * Launch option 1 [DEBUG GAME] loads `startup_debug.cfg`
* Launch option 2 [DEBUG GAME] loads `startup_debug.cfg` * Launch option 2 [RELEASE GAME] loads `startup_retail.cfg`
* Launch option 3 [RELEASE DEDICATED] loads `startup_dedi_retail.cfg` * Launch option 3 [DEBUG DEDICATED] loads `startup_dedi_debug.cfg`
* Launch option 4 [DEBUG DEDICATED] loads `startup_dedi_debug.cfg` * Launch option 4 [RELEASE DEDICATED] loads `startup_dedi_retail.cfg`
You can add or remove launch parameters from these files. Be carefull, as some are necessary to run the SDK with the game. You can add or remove launch parameters from these files. Be carefull, as some are necessary to run the SDK with the game.

View File

@ -24,7 +24,7 @@ void PrintLastError()
// * Load specified command line arguments from a file on the disk. // * Load specified command line arguments from a file on the disk.
// * Format the file paths for the game exe and specified hook dll. // * Format the file paths for the game exe and specified hook dll.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState) bool LaunchR5Apex(eLaunchMode lMode, eLaunchState lState)
{ {
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Initialize strings. // Initialize strings.
@ -38,7 +38,7 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
// Determine launch mode. // Determine launch mode.
switch (lMode) switch (lMode)
{ {
case LAUNCHMODE::LM_DEBUG: case eLaunchMode::LM_DEBUG_GAME:
{ {
std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_debug.cfg"; // Get cfg path for debug startup. std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_debug.cfg"; // Get cfg path for debug startup.
std::ifstream cfgFile(cfgPath); // Read the cfg file. std::ifstream cfgFile(cfgPath); // Read the cfg file.
@ -50,7 +50,7 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
} }
else else
{ {
spdlog::error("File 'platform\\cfg\\startup_debug.cfg' does not exist.\n"); spdlog::error("File 'platform\\cfg\\startup_debug.cfg' does not exist!\n");
cfgFile.close(); cfgFile.close();
return false; return false;
} }
@ -63,7 +63,7 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
spdlog::info("*** LAUNCHING GAME [DEBUG] ***\n"); spdlog::info("*** LAUNCHING GAME [DEBUG] ***\n");
break; break;
} }
case LAUNCHMODE::LM_RELEASE: case eLaunchMode::LM_RELEASE_GAME:
{ {
std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_retail.cfg"; // Get cfg path for release startup. std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_retail.cfg"; // Get cfg path for release startup.
std::ifstream cfgFile(cfgPath); // Read the cfg file. std::ifstream cfgFile(cfgPath); // Read the cfg file.
@ -75,7 +75,7 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
} }
else else
{ {
spdlog::error("File 'platform\\cfg\\startup_retail.cfg' does not exist.\n"); spdlog::error("File 'platform\\cfg\\startup_retail.cfg' does not exist!\n");
cfgFile.close(); cfgFile.close();
return false; return false;
} }
@ -88,9 +88,9 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
spdlog::info("*** LAUNCHING GAME [RELEASE] ***\n"); spdlog::info("*** LAUNCHING GAME [RELEASE] ***\n");
break; break;
} }
case LAUNCHMODE::LM_DEDI: case eLaunchMode::LM_DEBUG_DEDI:
{ {
std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_dedi.cfg"; // Get cfg path for dedicated startup. std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_dedi_debug.cfg"; // Get cfg path for dedicated startup.
std::ifstream cfgFile(cfgPath); // Read the cfg file. std::ifstream cfgFile(cfgPath); // Read the cfg file.
if (cfgFile.good() && cfgFile) // Does the cfg file exist? if (cfgFile.good() && cfgFile) // Does the cfg file exist?
{ {
@ -100,7 +100,7 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
} }
else else
{ {
spdlog::error("File 'platform\\cfg\\startup_dedi.cfg' does not exist.\n"); spdlog::error("File 'platform\\cfg\\startup_dedi_debug.cfg' does not exist!\n");
cfgFile.close(); cfgFile.close();
return false; return false;
} }
@ -110,7 +110,32 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
GameDirectory = currentDirectory + "\\r5apex_ds.exe"; // Get path to game executeable. GameDirectory = currentDirectory + "\\r5apex_ds.exe"; // Get path to game executeable.
StartupCommandLine = currentDirectory + "\\r5apex_ds.exe " + CommandLineArguments; // Setup startup command line string. StartupCommandLine = currentDirectory + "\\r5apex_ds.exe " + CommandLineArguments; // Setup startup command line string.
spdlog::info("*** LAUNCHING GAME [DEDICATED] ***\n"); spdlog::info("*** LAUNCHING DEDICATED [DEBUG] ***\n");
break;
}
case eLaunchMode::LM_RELEASE_DEDI:
{
std::filesystem::path cfgPath = std::filesystem::current_path() /= "platform\\cfg\\startup_dedi_retail.cfg"; // Get cfg path for dedicated startup.
std::ifstream cfgFile(cfgPath); // Read the cfg file.
if (cfgFile.good() && cfgFile) // Does the cfg file exist?
{
std::stringstream ss;
ss << cfgFile.rdbuf(); // Read ifstream buffer into stringstream.
CommandLineArguments = ss.str(); // Get all the contents of the cfg file.
}
else
{
spdlog::error("File 'platform\\cfg\\startup_dedi_retail.cfg' does not exist!\n");
cfgFile.close();
return false;
}
cfgFile.close(); // Close cfg file.
WorkerDll = currentDirectory + "\\dedicated.dll"; // Get path to worker dll.
GameDirectory = currentDirectory + "\\r5apex_ds.exe"; // Get path to game executeable.
StartupCommandLine = currentDirectory + "\\r5apex_ds.exe " + CommandLineArguments; // Setup startup command line string.
spdlog::info("*** LAUNCHING DEDICATED [RELEASE] ***\n");
break; break;
} }
default: default:
@ -122,12 +147,12 @@ bool LaunchR5Apex(LAUNCHMODE lMode, LAUNCHSTATE lState)
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Print the file paths and arguments. // Print the file paths and arguments.
std::cout << "--------------------------------------------------------------------------------------------------------" << std::endl; std::cout << "----------------------------------------------------------------------------------------------------------------------" << std::endl;
spdlog::debug("- CWD: {}\n", currentDirectory); spdlog::debug("- CWD: {}\n", currentDirectory);
spdlog::debug("- EXE: {}\n", GameDirectory); spdlog::debug("- EXE: {}\n", GameDirectory);
spdlog::debug("- DLL: {}\n", WorkerDll); spdlog::debug("- DLL: {}\n", WorkerDll);
spdlog::debug("- CLI: {}\n", CommandLineArguments); spdlog::debug("- CLI: {}\n", CommandLineArguments);
std::cout << "--------------------------------------------------------------------------------------------------------" << std::endl; std::cout << "----------------------------------------------------------------------------------------------------------------------" << std::endl;
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Build our list of dlls to inject. // Build our list of dlls to inject.
@ -194,66 +219,82 @@ int main(int argc, char* argv[], char* envp[])
std::string arg = argv[i]; std::string arg = argv[i];
if ((arg == "-debug") || (arg == "-dbg")) if ((arg == "-debug") || (arg == "-dbg"))
{ {
LaunchR5Apex(LAUNCHMODE::LM_DEBUG, LAUNCHSTATE::LS_CHEATS); LaunchR5Apex(eLaunchMode::LM_DEBUG_GAME, eLaunchState::LS_CHEATS);
Sleep(2000); Sleep(2000);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
if ((arg == "-release") || (arg == "-rel")) if ((arg == "-release") || (arg == "-rel"))
{ {
LaunchR5Apex(LAUNCHMODE::LM_RELEASE, LAUNCHSTATE::LS_CHEATS); LaunchR5Apex(eLaunchMode::LM_RELEASE_GAME, eLaunchState::LS_CHEATS);
Sleep(2000); Sleep(2000);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
if ((arg == "-dedicated") || (arg == "-dedi")) if ((arg == "-dedicated") || (arg == "-dedi"))
{ {
LaunchR5Apex(LAUNCHMODE::LM_DEDI, LAUNCHSTATE::LS_CHEATS); LaunchR5Apex(eLaunchMode::LM_DEBUG_DEDI, eLaunchState::LS_CHEATS);
Sleep(2000);
return EXIT_SUCCESS;
}
if ((arg == "-dedicated_dev") || (arg == "-dedid"))
{
LaunchR5Apex(eLaunchMode::LM_DEBUG_DEDI, eLaunchState::LS_CHEATS);
Sleep(2000); Sleep(2000);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
} }
std::cout << "--------------------------------------------------------------------------------------------------------" << std::endl; std::cout << "----------------------------------------------------------------------------------------------------------------------" << std::endl;
spdlog::warn("If DEBUG has been choosen as launch parameter, do not broadcast servers to the Server Browser.\n"); spdlog::warn("If a DEBUG option has been choosen as launch parameter, do not broadcast servers to the Server Browser!\n");
spdlog::warn("All FCVAR_CHEAT | FCVAR_DEVELOPMENTONLY ConVar's/ConCommand's will be enabled.\n"); spdlog::warn("All FCVAR_CHEAT | FCVAR_DEVELOPMENTONLY ConVar's/ConCommand's will be enabled.\n");
spdlog::warn("Connected clients will be able to set and execute anything flagged FCVAR_CHEAT | FCVAR_DEVELOPMENTONLY.\n"); spdlog::warn("Connected clients will be able to set and execute anything flagged FCVAR_CHEAT | FCVAR_DEVELOPMENTONLY.\n");
std::cout << "--------------------------------------------------------------------------------------------------------" << std::endl; std::cout << "----------------------------------------------------------------------------------------------------------------------" << std::endl;
spdlog::warn("Use DEBUG [1] for research and development purposes.\n"); spdlog::warn("Use DEBUG GAME [1] for research and development purposes.\n");
spdlog::warn("Use RELEASE [2] for playing and server hosting purposes.\n"); spdlog::warn("Use RELEASE GAME [2] for playing the game and creating servers.\n");
spdlog::warn("Use DEDICATED [3] for running and hosting a dedicated server.\n"); spdlog::warn("Use DEBUG DEDICATED [3] for research and development purposes.\n");
std::cout << "--------------------------------------------------------------------------------------------------------" << std::endl; spdlog::warn("Use RELEASE DEDICATED [3] for running and hosting dedicated servers.\n");
spdlog::info("Enter 1 for DEBUG. Enter 2 for RELEASE. Enter 3 for DEDICATED: "); std::cout << "----------------------------------------------------------------------------------------------------------------------" << std::endl;
spdlog::info("Enter '1' for 'DEBUG GAME'.\n");
spdlog::info("Enter '2' for 'RELEASE GAME'.\n");
spdlog::info("Enter '3' for 'DEBUG DEDICATED'.\n");
spdlog::info("Enter '4' for 'RELEASE DEDICATED'.\n");
std::cout << "----------------------------------------------------------------------------------------------------------------------" << std::endl;
std::cout << "User input: ";
std::string input = std::string(); std::string input = std::string();
if (std::cin >> input) if (std::cin >> input)
{ {
try try
{ {
LAUNCHMODE iinput = (LAUNCHMODE)std::stoi(input); eLaunchMode iinput = (eLaunchMode)std::stoi(input);
switch (iinput) switch (iinput)
{ {
case LAUNCHMODE::LM_DEBUG: case eLaunchMode::LM_DEBUG_GAME:
{ {
LaunchR5Apex(LAUNCHMODE::LM_DEBUG, LAUNCHSTATE::LS_CHEATS); LaunchR5Apex(eLaunchMode::LM_DEBUG_GAME, eLaunchState::LS_CHEATS);
Sleep(2000); Sleep(2000);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
case LAUNCHMODE::LM_RELEASE: case eLaunchMode::LM_RELEASE_GAME:
{ {
LaunchR5Apex(LAUNCHMODE::LM_RELEASE, LAUNCHSTATE::LS_CHEATS); LaunchR5Apex(eLaunchMode::LM_RELEASE_GAME, eLaunchState::LS_CHEATS);
Sleep(2000); Sleep(2000);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
case LAUNCHMODE::LM_DEDI: case eLaunchMode::LM_DEBUG_DEDI:
{ {
LaunchR5Apex(LAUNCHMODE::LM_DEDI, LAUNCHSTATE::LS_CHEATS); LaunchR5Apex(eLaunchMode::LM_DEBUG_DEDI, eLaunchState::LS_CHEATS);
Sleep(2000);
return EXIT_SUCCESS;
}
case eLaunchMode::LM_RELEASE_DEDI:
{
LaunchR5Apex(eLaunchMode::LM_DEBUG_DEDI, eLaunchState::LS_CHEATS);
Sleep(2000); Sleep(2000);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
default: default:
{ {
spdlog::error("R5Reloaded requires '1' for DEBUG mode, '2' for RELEASE mode, '3' for DEDICATED mode.\n"); spdlog::error("R5Reloaded requires '1' for DEBUG GAME mode, '2' for RELEASE GAME mode, '3' for DEBUG DEDICATED mode, '4' for RELEASE DEDICATED mode.\n");
Sleep(5000); Sleep(5000);
return EXIT_FAILURE; return EXIT_FAILURE;
} }

View File

@ -3,18 +3,19 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Launch and inject specified dll based on launchmode // Launch and inject specified dll based on launchmode
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
enum class LAUNCHMODE : int enum class eLaunchMode : int
{ {
LM_NULL, LM_NULL,
LM_DEBUG, // Debug DLL LM_DEBUG_GAME, // Debug worker DLL.
LM_RELEASE, // Release DLL LM_RELEASE_GAME, // Release worker DLL.
LM_DEDI // Dedicated DLL LM_DEBUG_DEDI, // Debug dedicated DLL.
LM_RELEASE_DEDI // Release dedicated DLL.
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// [TODO] Launch with FCVAR_DEVELOPMENTONLY and FCVAR_CHEATS disabled/enabled // [TODO] Launch with FCVAR_DEVELOPMENTONLY and FCVAR_CHEATS disabled/enabled
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
enum class LAUNCHSTATE : int enum class eLaunchState : int
{ {
LS_NULL, LS_NULL,
LS_NOCHEATS, // Disabled cheats LS_NOCHEATS, // Disabled cheats