diff --git a/src/mod_server_idler.cpp b/src/mod_server_idler.cpp index 8f5f6ee..f9de9f5 100644 --- a/src/mod_server_idler.cpp +++ b/src/mod_server_idler.cpp @@ -2,20 +2,21 @@ #include "Config.h" #include "World.h" #include "Player.h" +#include "WorldSessionMgr.h" namespace { bool sEnabled = true; uint32 sIntervalIdle = 200u; uint32 sIntervalActive = 10u; - uint32 sPlayersOnline = 0u; void ApplyInterval() { if (!sEnabled) return; - uint32 newInterval = (sPlayersOnline > 0) ? sIntervalActive : sIntervalIdle; + bool hasRealPlayer = sWorldSessionMgr->GetActiveAndQueuedSessionCount() > 0; + uint32 newInterval = hasRealPlayer ? sIntervalActive : sIntervalIdle; sWorld->setIntConfig(CONFIG_INTERVAL_MAPUPDATE, newInterval); } } @@ -36,7 +37,6 @@ public: if (sIntervalActive == 0u) sIntervalActive = 1u; - sPlayersOnline = sWorld->GetPlayerCount(); ApplyInterval(); } }; @@ -48,21 +48,11 @@ public: void OnLogin(Player*) override { - if (!sEnabled) - return; - - ++sPlayersOnline; ApplyInterval(); } void OnLogout(Player*) override { - if (!sEnabled) - return; - - if (sPlayersOnline > 0) - --sPlayersOnline; - ApplyInterval(); } };