diff --git a/src/Components/Modules/Dedicated.cpp b/src/Components/Modules/Dedicated.cpp index 6043607a..582bebb0 100644 --- a/src/Components/Modules/Dedicated.cpp +++ b/src/Components/Modules/Dedicated.cpp @@ -3,7 +3,9 @@ namespace Components { SteamID Dedicated::PlayerGuids[18][2]; + Dvar::Var Dedicated::SVRandomMapRotation; + Dvar::Var Dedicated::SVLanOnly; bool Dedicated::IsEnabled() { @@ -250,9 +252,15 @@ namespace Components } void Dedicated::Heartbeat() - { - int masterPort = Dvar::Var("masterPort").get(); - const char* masterServerName = Dvar::Var("masterServerName").get(); + { + // Do not send a heartbeat if sv_lanOnly is set to true + if (Dedicated::SVLanOnly.get()) + { + return; + } + + auto masterPort = Dvar::Var("masterPort").get(); + const auto* masterServerName = Dvar::Var("masterServerName").get(); Network::Address master(Utils::String::VA("%s:%u", masterServerName, masterPort)); @@ -290,7 +298,11 @@ namespace Components // Make sure all callbacks are handled Scheduler::OnFrame(Steam::SteamAPI_RunCallbacks); - Dvar::Register("sv_lanOnly", false, Game::dvar_flag::DVAR_NONE, "Don't act as node"); + Dvar::OnInit([] + { + Dedicated::SVLanOnly = Dvar::Register("sv_lanOnly", false, + Game::dvar_flag::DVAR_NONE, "Don't act as node"); + }); Utils::Hook(0x60BE98, Dedicated::InitDedicatedServer, HOOK_CALL).install()->quick(); diff --git a/src/Components/Modules/Dedicated.hpp b/src/Components/Modules/Dedicated.hpp index cfcbc539..80b39795 100644 --- a/src/Components/Modules/Dedicated.hpp +++ b/src/Components/Modules/Dedicated.hpp @@ -8,6 +8,7 @@ namespace Components Dedicated(); static SteamID PlayerGuids[18][2]; + static Dvar::Var SVLanOnly; static bool IsEnabled(); diff --git a/src/Components/Modules/Node.cpp b/src/Components/Modules/Node.cpp index 60d1d18b..9ed8e9c9 100644 --- a/src/Components/Modules/Node.cpp +++ b/src/Components/Modules/Node.cpp @@ -114,7 +114,7 @@ namespace Components void Node::StoreNodes(bool force) { - if (Dedicated::IsEnabled() && Dvar::Var("sv_lanOnly").get()) return; + if (Dedicated::IsEnabled() && Dedicated::SVLanOnly.get()) return; static Utils::Time::Interval interval; if (!force && !interval.elapsed(1min)) return; @@ -168,7 +168,7 @@ namespace Components void Node::RunFrame() { if (ServerList::useMasterServer) return; - if (Dedicated::IsEnabled() && Dvar::Var("sv_lanOnly").get()) return; + if (Dedicated::IsEnabled() && Dedicated::SVLanOnly.get()) return; if (!Dedicated::IsEnabled() && *Game::clcState > 0) {