diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp | 3 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSession.h | 10 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp index 866cdf91746..a28bee60c76 100755 --- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp @@ -205,6 +205,7 @@ void WorldSession::HandleCharEnum(QueryResult result) data << num; + _allowedCharsToLogin.clear(); if (result) { do @@ -213,7 +214,7 @@ void WorldSession::HandleCharEnum(QueryResult result) sLog->outDetail("Loading char guid %u from account %u.",guidlow,GetAccountId()); if (Player::BuildEnumData(result, &data)) { - m_AllowedCharsToLogin.push_back(guidlow); + _allowedCharsToLogin.insert(guidlow); ++num; } } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b881b0b4140..a295d285403 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -883,17 +883,13 @@ class WorldSession void LogUnprocessedTail(WorldPacket *packet); // EnumData helpers - bool CharCanLogin(uint32 LowGUID) + bool CharCanLogin(uint32 lowGUID) { - if (find(m_AllowedCharsToLogin.begin(), - m_AllowedCharsToLogin.end(), - LowGUID) == m_AllowedCharsToLogin.end()) - return false; - return true; + return _allowedCharsToLogin.find(lowGUID) != _allowedCharsToLogin.end(); } // this stores the GUIDs of the characters who can login // characters who failed on Player::BuildEnumData shouldn't login - std::list<uint32> m_AllowedCharsToLogin; + std::set<uint32> _allowedCharsToLogin; uint32 m_GUIDLow; // set loggined or recently logout player (while m_playerRecentlyLogout set) Player *_player; |
