diff --git a/src/client/component/gsc/script_extension.cpp b/src/client/component/gsc/script_extension.cpp index bab3816..df0d59f 100644 --- a/src/client/component/gsc/script_extension.cpp +++ b/src/client/component/gsc/script_extension.cpp @@ -293,6 +293,17 @@ namespace gsc game::Scr_AddInt(game::environment::is_dedi()); } + void scr_bot_auto_connect_enabled() + { + if (game::environment::is_dedi() && dvars::sv_botsAutoJoin->current.enabled) + { + game::Scr_AddInt(1); // 2 seems to be unused (incomplete GSC/game mode) + return; + } + + game::Scr_AddInt(1); + } + const char* get_code_pos(const int index) { if (static_cast(index) >= game::scr_VmPub->outparamcount) @@ -391,6 +402,9 @@ namespace gsc utils::hook::set(0x1409E6E20, assert_cmd); utils::hook::set(0x1409E94D0, scr_cmd_is_dedicated_server); + + dvars::sv_botsAutoJoin = game::Dvar_RegisterBool("sv_botsAutoJoin", false, game::DVAR_FLAG_NONE, ""); + utils::hook::set(0x1409E92F0, scr_bot_auto_connect_enabled); } }; } diff --git a/src/client/game/dvars.cpp b/src/client/game/dvars.cpp index 19a64c1..e5a1e23 100644 --- a/src/client/game/dvars.cpp +++ b/src/client/game/dvars.cpp @@ -16,6 +16,7 @@ namespace dvars game::dvar_t* con_inputCmdMatchColor = nullptr; game::dvar_t* sv_cheats = nullptr; + game::dvar_t* sv_botsAutoJoin = nullptr; game::dvar_t* g_playerEjection = nullptr; game::dvar_t* g_playerCollision = nullptr; diff --git a/src/client/game/dvars.hpp b/src/client/game/dvars.hpp index f25e287..b805a63 100644 --- a/src/client/game/dvars.hpp +++ b/src/client/game/dvars.hpp @@ -15,6 +15,7 @@ namespace dvars extern game::dvar_t* con_inputCmdMatchColor; extern game::dvar_t* sv_cheats; + extern game::dvar_t* sv_botsAutoJoin; extern game::dvar_t* g_playerCollision; extern game::dvar_t* g_playerEjection;