From 3abb40181b279bcc016d93c6cc607dd210de58c6 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Fri, 15 Nov 2024 22:35:24 -0330 Subject: [PATCH] Add command to allow adding/changing/removing server password (#289) --- docs/CHANGELOG.md | 1 + game_patch/multi/server.cpp | 1 + game_patch/os/commands.cpp | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 1522e9ad..b2bf227c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -45,6 +45,7 @@ Version 1.9.0 (not released yet) - Properly handle WM_PAINT in dedicated server, may improve performance (DF bug) - Fix crash when `verify_level` command is run without a level being loaded - Fix cockpit not rendering for any jeeps after the first one entered each level load +- Add `server_password` command Version 1.8.0 (released 2022-09-17) ----------------------------------- diff --git a/game_patch/multi/server.cpp b/game_patch/multi/server.cpp index e5a53307..d63dd608 100644 --- a/game_patch/multi/server.cpp +++ b/game_patch/multi/server.cpp @@ -33,6 +33,7 @@ const char* g_rcon_cmd_whitelist[] = { "kick", "level", + "server_password", "map", "ban", "ban_ip", diff --git a/game_patch/os/commands.cpp b/game_patch/os/commands.cpp index a1586ad8..3a87daeb 100644 --- a/game_patch/os/commands.cpp +++ b/game_patch/os/commands.cpp @@ -92,6 +92,27 @@ DcCommandAlias map_info_cmd{ level_info_cmd, }; +ConsoleCommand2 server_password_cmd{ + "server_password", + [](std::optional new_password) { + if (!rf::is_multi || !rf::is_server) { + rf::console::print("This command can only be run as a server!"); + return; + } + + if (new_password) { + rf::netgame.password = new_password.value().c_str(); + rf::console::print("Server password set to: {}", rf::netgame.password); + } + else { + rf::netgame.password = ""; + rf::console::print("Server password removed."); + } + }, + "Set or remove the server password.", + "server_password ", +}; + // only allow verify_level if a level is loaded (avoid a crash if command is run in menu) FunHook verify_level_cmd_hook{ 0x0045E1F0, @@ -205,5 +226,6 @@ void console_commands_init() map_cmd.register_cmd(); level_info_cmd.register_cmd(); map_info_cmd.register_cmd(); + server_password_cmd.register_cmd(); verify_level_cmd_hook.install(); }