Core/Dungeon Finder: Fix groups queuing broken by 1e71aba2ee

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 42a71133fa)

Conflicts:
	src/server/game/DungeonFinding/LFGQueue.cpp
This commit is contained in:
jackpoz
2015-09-05 21:18:52 +02:00
committed by Carbenium
parent 2f0079410d
commit 97f9a3f816
2 changed files with 9 additions and 5 deletions

View File

@@ -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));
}
}

View File

@@ -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);