diff options
| author | jackpoz <giacomopoz@gmail.com> | 2015-09-05 21:18:52 +0200 |
|---|---|---|
| committer | Carbenium <carbenium@outlook.com> | 2015-09-24 23:53:20 +0200 |
| commit | 97f9a3f816a4a2470ffc949e1ffd4f411129a310 (patch) | |
| tree | 33dea1ce29204703fd54162b2586d4fd83d7bd07 | |
| parent | 2f0079410d725cd93c58570227fbe1244e028e86 (diff) | |
Core/Dungeon Finder: Fix groups queuing broken by 1e71aba2ee656a8407dec63a69d0879e16a070e2
Fix queuing in LFG with 5-men groups leaving the party in queue forever, caused by group GUID being added to list of party members.
(cherry picked from commit 42a71133fa32a1414dc52241c99430178b24422e)
Conflicts:
src/server/game/DungeonFinding/LFGQueue.cpp
| -rw-r--r-- | src/server/game/DungeonFinding/LFGQueue.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/DungeonFinding/LFGQueue.h | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp index 3ec8b233c2c..78496185a42 100644 --- a/src/server/game/DungeonFinding/LFGQueue.cpp +++ b/src/server/game/DungeonFinding/LFGQueue.cpp @@ -80,7 +80,7 @@ char const* GetCompatibleString(LfgCompatibility compatibles) } } -std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) +std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) const { if (check.empty()) return ""; @@ -92,11 +92,13 @@ std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) GuidSet::const_iterator it = guids.begin(); o << it->ToString(); - LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(*it); + LfgQueueDataContainer::const_iterator itQueue = QueueDataStore.find(*it); if (itQueue != QueueDataStore.end()) { // skip leader flag, log only dps/tank/healer - o << ' ' << GetRolesString(itQueue->second.roles[*it] & uint8(~PLAYER_ROLE_LEADER)); + auto role = itQueue->second.roles.find(*it); + if (role != itQueue->second.roles.end()) + o << ' ' << GetRolesString(itQueue->second.roles.at(*it) & uint8(~PLAYER_ROLE_LEADER)); } for (++it; it != guids.end(); ++it) @@ -106,7 +108,9 @@ std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) if (itQueue != QueueDataStore.end()) { // skip leader flag, log only dps/tank/healer - o << ' ' << GetRolesString(itQueue->second.roles[*it] & uint8(~PLAYER_ROLE_LEADER)); + auto role = itQueue->second.roles.find(*it); + if (role != itQueue->second.roles.end()) + o << ' ' << GetRolesString(itQueue->second.roles.at(*it) & uint8(~PLAYER_ROLE_LEADER)); } } diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h index 386eeb4024d..d609406d73d 100644 --- a/src/server/game/DungeonFinding/LFGQueue.h +++ b/src/server/game/DungeonFinding/LFGQueue.h @@ -88,7 +88,7 @@ class LFGQueue public: // Add/Remove from queue - std::string GetDetailedMatchRoles(GuidList const& check); + std::string GetDetailedMatchRoles(GuidList const& check) const; void AddToQueue(ObjectGuid guid); void RemoveFromQueue(ObjectGuid guid); void AddQueueData(ObjectGuid guid, time_t joinTime, LfgDungeonSet const& dungeons, LfgRolesMap const& rolesMap); |
