From 42a71133fa32a1414dc52241c99430178b24422e Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 5 Sep 2015 21:18:52 +0200 Subject: 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. --- src/server/game/DungeonFinding/LFGQueue.cpp | 12 ++++++++---- src/server/game/DungeonFinding/LFGQueue.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp index f4974e0938b..86b010a9ace 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->GetRawValue(); - 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 77683614d49..f72e9b4fd6d 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); -- cgit v1.2.3