diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Chat/Chat.cpp | 35 | ||||
| -rw-r--r-- | src/server/game/Chat/Chat.h | 1 | ||||
| -rw-r--r-- | src/server/game/World/World.cpp | 3 | 
3 files changed, 23 insertions, 16 deletions
| diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 146410f0fbc..3a0e77bd294 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -47,27 +47,30 @@ static Optional<std::vector<ChatCommand>> commandTableCache;  std::vector<ChatCommand> const& ChatHandler::getCommandTable()  {      if (!commandTableCache) -    { -        // We need to initialize this at top since SetDataForCommandInTable -        // calls getCommandTable() recursively. -        commandTableCache = sScriptMgr->GetChatCommands(); +        InitializeCommandTable(); + +    return *commandTableCache; +} + +void ChatHandler::InitializeCommandTable() +{ +    // We need to initialize this at top since SetDataForCommandInTable +    // calls getCommandTable() recursively. +    commandTableCache = sScriptMgr->GetChatCommands(); -        WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_COMMANDS); -        PreparedQueryResult result = WorldDatabase.Query(stmt); -        if (result) +    WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_COMMANDS); +    PreparedQueryResult result = WorldDatabase.Query(stmt); +    if (result) +    { +        do          { -            do -            { -                Field* fields = result->Fetch(); -                std::string name = fields[0].GetString(); +            Field* fields = result->Fetch(); +            std::string name = fields[0].GetString(); -                SetDataForCommandInTable(*commandTableCache, name.c_str(), fields[1].GetUInt16(), fields[2].GetString(), name); -            } -            while (result->NextRow()); +            SetDataForCommandInTable(*commandTableCache, name.c_str(), fields[1].GetUInt16(), fields[2].GetString(), name);          } +        while (result->NextRow());      } - -    return *commandTableCache;  }  void ChatHandler::invalidateCommandTable() diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 3f8bc30522c..7abf8452a3a 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -74,6 +74,7 @@ class TC_GAME_API ChatHandler          virtual bool ParseCommands(char const* text);          static std::vector<ChatCommand> const& getCommandTable(); +        static void InitializeCommandTable();          static void invalidateCommandTable();          void SendGlobalSysMessage(const char *str); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index a2931e2f70a..6c535b1d421 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2309,6 +2309,9 @@ void World::SetInitialWorldSettings()      TC_LOG_INFO("server.loading", "Initialize query data...");      sObjectMgr->InitializeQueriesData(QUERY_DATA_ALL); +    TC_LOG_INFO("server.loading", "Initialize commands..."); +    ChatHandler::InitializeCommandTable(); +      ///- Initialize game time and timers      TC_LOG_INFO("server.loading", "Initialize game time and timers");      GameTime::UpdateGameTimers(); | 
