Index: src/game/Chat.cpp =================================================================== --- src/game/Chat.cpp (revision 76) +++ src/game/Chat.cpp (working copy) @@ -239,6 +239,8 @@ { "commands", 1, &ChatHandler::HandleCommandsCommand, "Shows Commands", NULL, 0, 0, 0}, { "help", 1, &ChatHandler::HandleHelpCommand, "Shows help for command", NULL, 0, 0, 0}, + { "reloadaccounts", 'z', &ChatHandler::HandleReloadAccountsCommand, "Reloads the accounts on the realm server.", NULL, 0, 0, 0}, + { "announce", 'u', &ChatHandler::HandleAnnounceCommand, "Sends Msg To All", NULL, 0, 0, 0}, { "wannounce", 'u', &ChatHandler::HandleWAnnounceCommand, "Sends Widescreen Msg To All", NULL, 0, 0, 0}, Index: src/game/Chat.h =================================================================== --- src/game/Chat.h (revision 76) +++ src/game/Chat.h (working copy) @@ -235,6 +235,7 @@ bool HandleListAIAgentCommand(const char* args, WorldSession *m_session); // Level 3 commands + bool HandleReloadAccountsCommand(const char* args, WorldSession *m_session); bool HandleSecurityCommand(const char* args, WorldSession *m_session); bool HandleWorldPortCommand(const char* args, WorldSession *m_session); bool HandleAddWeaponCommand(const char* args, WorldSession *m_session); Index: src/game/Level3.cpp =================================================================== --- src/game/Level3.cpp (revision 76) +++ src/game/Level3.cpp (working copy) @@ -1077,6 +1077,13 @@ return true; } +bool ChatHandler::HandleReloadAccountsCommand(const char* args, WorldSession *m_session) +{ + sLogonCommHandler.LogonReloadAccounts(); + GreenSystemMessage(m_session, "Accounts reloaded."); + return true; +} + bool ChatHandler::HandleResetTalentsCommand(const char* args, WorldSession *m_session) { Player *plr = this->getSelectedChar(m_session); Index: src/game/LogonCommHandler.cpp =================================================================== --- src/game/LogonCommHandler.cpp (revision 76) +++ src/game/LogonCommHandler.cpp (working copy) @@ -263,6 +263,18 @@ itr->second->SendPacket(&data); } +void LogonCommHandler::LogonReloadAccounts() +{ + WorldPacket data(RCMSG_ACCT_RELOAD); + map::iterator itr = logons.begin(); + if(logons.size() == 0 || itr->second == 0) + { + // No valid logonserver is connected. + return; + } + itr->second->SendPacket(&data); +} + void LogonCommHandler::LoadRealmConfiguration() { uint32 logoncount = Config.RealmConfig.GetIntDefault("LogonServerCount", 0); Index: src/game/LogonCommHandler.h =================================================================== --- src/game/LogonCommHandler.h (revision 76) +++ src/game/LogonCommHandler.h (working copy) @@ -74,6 +74,7 @@ void UpdateSockets(); void Connect(LogonServer * server); void LogonDatabaseSQLExecute(const char* str, ...); + void LogonReloadAccounts(); void LoadRealmConfiguration(); void AddServer(string Name, string Address, uint32 Port); Index: src/logonserver/LogonCommServer.cpp =================================================================== --- src/logonserver/LogonCommServer.cpp (revision 76) +++ src/logonserver/LogonCommServer.cpp (working copy) @@ -98,12 +98,22 @@ HandleSQLExecute(recvData); break; + case RCMSG_ACCT_RELOAD: + HandleAcctReload(recvData); + break; + default: printf("Got unknwon packet from logoncomm: %u\n", recvData.GetOpcode()); break; } } +void LogonCommServerSocket::HandleAcctReload(WorldPacket & recvData) +{ + sLog.outBasic("Reloading accounts by request of World Server"); + sAccountMgr.ReloadAccounts(true); +} + void LogonCommServerSocket::HandleRegister(WorldPacket & recvData) { Realm realm; Index: src/logonserver/LogonCommServer.h =================================================================== --- src/logonserver/LogonCommServer.h (revision 76) +++ src/logonserver/LogonCommServer.h (working copy) @@ -32,6 +32,7 @@ void HandlePing(WorldPacket & recvData); void HandleSessionRequest(WorldPacket & recvData); void HandleSQLExecute(WorldPacket & recvData); + void HandleAcctReload(WorldPacket & recvData); uint32 last_ping; bool removed; Index: src/logonserver/LogonOpcodes.h =================================================================== --- src/logonserver/LogonOpcodes.h (revision 76) +++ src/logonserver/LogonOpcodes.h (working copy) @@ -31,6 +31,9 @@ // SQL Query Execute RCMSG_SQL_EXECUTE = 7, + + // Reload accounts + RCMSG_ACCT_RELOAD = 8, }; #endif