aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpp <none@none>2010-12-16 04:20:22 +0100
committerSpp <none@none>2010-12-16 04:20:22 +0100
commit451a6f40d447d6257bd25b469de36ac6095d0332 (patch)
tree4a67a6d5cc63075060132a4ea4016f0912351dcb
parent1bc9b905f68959cad70dceb839f08fca4c8ec2b5 (diff)
Core/Dungeon Finder: Use full guid of players instead of lowguid
Note: This change is done in preparation of other changes that will come later. --HG-- branch : trunk
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.cpp125
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.h22
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/LFGHandler.cpp12
4 files changed, 79 insertions, 82 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 5f5d234a247..ee48fa2feb5 100755
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -215,10 +215,10 @@ void LFGMgr::Update(uint32 diff)
LfgRoleCheck* pRoleCheck = itRoleCheck->second;
if (currTime < pRoleCheck->cancelTime)
continue;
- pRoleCheck->result = LFG_ROLECHECK_MISSING_ROLE;
+ pRoleCheck->state = LFG_ROLECHECK_MISSING_ROLE;
for (LfgRolesMap::const_iterator itRoles = pRoleCheck->roles.begin(); itRoles != pRoleCheck->roles.end(); ++itRoles)
- if (Player* plr = sObjectMgr.GetPlayerByLowGUID(itRoles->first))
+ if (Player* plr = sObjectMgr.GetPlayer(itRoles->first))
{
plr->GetSession()->SendLfgRoleCheckUpdate(pRoleCheck);
plr->ClearLfgState();
@@ -247,8 +247,8 @@ void LFGMgr::Update(uint32 diff)
{
pBoot->inProgress = false;
for (LfgAnswerMap::const_iterator itVotes = pBoot->votes.begin(); itVotes != pBoot->votes.end(); ++itVotes)
- if (Player* plrg = sObjectMgr.GetPlayerByLowGUID(itVotes->first))
- if (plrg->GetGUIDLow() != pBoot->victimLowGuid)
+ if (Player* plrg = sObjectMgr.GetPlayer(itVotes->first))
+ if (plrg->GetGUID() != pBoot->victim)
plrg->GetSession()->SendLfgBootPlayer(pBoot);
delete pBoot;
m_Boots.erase(itBoot);
@@ -276,11 +276,11 @@ void LFGMgr::Update(uint32 diff)
}
m_Proposals[++m_lfgProposalId] = pProposal;
- uint32 lowGuid = 0;
+ uint64 guid = 0;
for (LfgProposalPlayerMap::const_iterator itPlayers = pProposal->players.begin(); itPlayers != pProposal->players.end(); ++itPlayers)
{
- lowGuid = itPlayers->first;
- if (Player* plr = sObjectMgr.GetPlayerByLowGUID(itPlayers->first))
+ guid = itPlayers->first;
+ if (Player* plr = sObjectMgr.GetPlayer(itPlayers->first))
{
plr->SetLfgState(LFG_STATE_PROPOSAL);
LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_PROPOSAL_BEGIN, plr->GetLfgDungeons(), plr->GetLfgComment());
@@ -296,7 +296,7 @@ void LFGMgr::Update(uint32 diff)
}
if (pProposal->state == LFG_PROPOSAL_SUCCESS)
- UpdateProposal(m_lfgProposalId, lowGuid, true);
+ UpdateProposal(m_lfgProposalId, guid, true);
}
else
{
@@ -348,7 +348,7 @@ void LFGMgr::Update(uint32 diff)
}
for (LfgRolesMap::const_iterator itPlayer = queue->roles.begin(); itPlayer != queue->roles.end(); ++itPlayer)
- if (Player* plr = sObjectMgr.GetPlayerByLowGUID(itPlayer->first))
+ if (Player* plr = sObjectMgr.GetPlayer(itPlayer->first))
plr->GetSession()->SendLfgQueueStatus(dungeonId, waitTime, m_WaitTimeAvg, m_WaitTimeTank, m_WaitTimeHealer, m_WaitTimeDps, queuedTime, queue->tanks, queue->healers, queue->dps);
}
}
@@ -587,8 +587,8 @@ void LFGMgr::Join(Player* plr, uint8 roles, LfgDungeonSet& dungeons, std::string
// Create new rolecheck
LfgRoleCheck* pRoleCheck = new LfgRoleCheck();
pRoleCheck->cancelTime = time_t(time(NULL)) + LFG_TIME_ROLECHECK;
- pRoleCheck->result = LFG_ROLECHECK_INITIALITING;
- pRoleCheck->leader = plr->GetGUIDLow();
+ pRoleCheck->state = LFG_ROLECHECK_INITIALITING;
+ pRoleCheck->leader = plr->GetGUID();
pRoleCheck->dungeons = dungeons;
pRoleCheck->rDungeonId = rDungeonId;
m_RoleChecks[grp->GetLowGUID()] = pRoleCheck;
@@ -614,7 +614,7 @@ void LFGMgr::Join(Player* plr, uint8 roles, LfgDungeonSet& dungeons, std::string
for (LfgDungeonSet::const_iterator it = dungeons.begin(); it != dungeons.end(); ++it)
plrg->GetLfgDungeons()->insert(*it);
}
- pRoleCheck->roles[plrg->GetGUIDLow()] = 0;
+ pRoleCheck->roles[plrg->GetGUID()] = 0;
}
}
// Update leader role
@@ -640,9 +640,8 @@ void LFGMgr::Join(Player* plr, uint8 roles, LfgDungeonSet& dungeons, std::string
// Queue player
LfgQueueInfo* pqInfo = new LfgQueueInfo();
pqInfo->joinTime = time_t(time(NULL));
- pqInfo->roles[plr->GetGUIDLow()] = plr->GetLfgRoles();
+ pqInfo->roles[plr->GetGUID()] = roles;
pqInfo->dungeons = dungeons;
- uint8 roles = plr->GetLfgRoles();
if (roles & ROLE_TANK)
--pqInfo->tanks;
else if (roles & ROLE_HEALER)
@@ -714,10 +713,10 @@ void LFGMgr::Leave(Player* plr, Group* grp /* = NULL*/)
{
// Remove from Proposals
LfgProposalMap::iterator it = m_Proposals.begin();
- uint32 lowguid = plr ? plr->GetGUIDLow() : GUID_LOPART(grp->GetLeaderGUID());
+ uint64 guid = plr ? plr->GetGUID() : grp->GetLeaderGUID();
while (it != m_Proposals.end())
{
- LfgProposalPlayerMap::iterator itPlayer = it->second->players.find(lowguid);
+ LfgProposalPlayerMap::iterator itPlayer = it->second->players.find(guid);
if (itPlayer != it->second->players.end())
{
// Mark the player/leader of group who left as didn't accept the proposal
@@ -869,14 +868,14 @@ bool LFGMgr::CheckCompatibility(LfgGuidList check, LfgProposal*& pProposal)
// ----- Player checks -----
LfgRolesMap rolesMap;
- uint32 newLeaderLowGuid = 0;
+ uint64 leader = 0;
for (LfgQueueInfoMap::const_iterator it = pqInfoMap.begin(); it != pqInfoMap.end(); ++it)
{
for (LfgRolesMap::const_iterator itRoles = it->second->roles.begin(); itRoles != it->second->roles.end(); ++itRoles)
{
// Assign new leader
- if (itRoles->second & ROLE_LEADER && (!newLeaderLowGuid || urand(0, 1)))
- newLeaderLowGuid = itRoles->first;
+ if (itRoles->second & ROLE_LEADER && (!leader || urand(0, 1)))
+ leader = itRoles->first;
rolesMap[itRoles->first] = itRoles->second;
}
@@ -888,7 +887,7 @@ bool LFGMgr::CheckCompatibility(LfgGuidList check, LfgProposal*& pProposal)
PlayerSet players;
for (LfgRolesMap::const_iterator it = rolesMap.begin(); it != rolesMap.end(); ++it)
{
- Player* plr = sObjectMgr.GetPlayerByLowGUID(it->first);
+ Player* plr = sObjectMgr.GetPlayer(it->first);
if (!plr)
sLog.outDebug("LFGMgr::CheckCompatibility: (%s) Warning! %u offline! Marking as not compatibles!", strGuids.c_str(), it->first);
else
@@ -968,19 +967,19 @@ bool LFGMgr::CheckCompatibility(LfgGuidList check, LfgProposal*& pProposal)
// Assign new roles to players and assign new leader
PlayerSet::const_iterator itPlayers = players.begin();
- if (!newLeaderLowGuid)
+ if (!leader)
{
uint8 pos = urand(0, players.size() - 1);
for (uint8 i = 0; i < pos; ++i)
++itPlayers;
- newLeaderLowGuid = (*itPlayers)->GetGUIDLow();
+ leader = (*itPlayers)->GetGUID();
}
- pProposal->leaderLowGuid = newLeaderLowGuid;
+ pProposal->leader = leader;
uint8 numAccept = 0;
for (itPlayers = players.begin(); itPlayers != players.end(); ++itPlayers)
{
- uint32 lowGuid = (*itPlayers)->GetGUIDLow();
+ uint64 guid = (*itPlayers)->GetGUID();
LfgProposalPlayer* ppPlayer = new LfgProposalPlayer();
if (Group* grp = (*itPlayers)->GetGroup())
{
@@ -991,8 +990,8 @@ bool LFGMgr::CheckCompatibility(LfgGuidList check, LfgProposal*& pProposal)
++numAccept;
}
}
- ppPlayer->role = rolesMap[lowGuid];
- pProposal->players[lowGuid] = ppPlayer;
+ ppPlayer->role = rolesMap[guid];
+ pProposal->players[guid] = ppPlayer;
}
if (numAccept == MAXGROUPSIZE)
pProposal->state = LFG_PROPOSAL_SUCCESS;
@@ -1019,12 +1018,12 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh
LfgRoleCheck* pRoleCheck = itRoleCheck->second;
if (!plr)
- pRoleCheck->result = LFG_ROLECHECK_ABORTED;
+ pRoleCheck->state = LFG_ROLECHECK_ABORTED;
else if (plr->GetLfgRoles() < ROLE_TANK) // Player selected no role.
- pRoleCheck->result = LFG_ROLECHECK_NO_ROLE;
+ pRoleCheck->state = LFG_ROLECHECK_NO_ROLE;
else
{
- pRoleCheck->roles[plr->GetGUIDLow()] = plr->GetLfgRoles();
+ pRoleCheck->roles[plr->GetGUID()] = plr->GetLfgRoles();
// Check if all players have selected a role
LfgRolesMap::const_iterator itRoles = pRoleCheck->roles.begin();
@@ -1035,7 +1034,7 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh
{
// use temporal var to check roles, CheckGroupRoles modifies the roles
check_roles = pRoleCheck->roles;
- pRoleCheck->result = CheckGroupRoles(check_roles) ? LFG_ROLECHECK_FINISHED : LFG_ROLECHECK_WRONG_ROLES;
+ pRoleCheck->state = CheckGroupRoles(check_roles) ? LFG_ROLECHECK_FINISHED : LFG_ROLECHECK_WRONG_ROLES;
}
}
@@ -1048,7 +1047,7 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh
LfgJoinResultData joinData;
joinData.result = LFG_JOIN_FAILED;
- joinData.state = pRoleCheck->result;
+ joinData.state = pRoleCheck->state;
for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* plrg = itr->getSource();
@@ -1061,7 +1060,7 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh
session->SendLfgRoleChosen(plr->GetGUID(), plr->GetLfgRoles());
session->SendLfgRoleCheckUpdate(pRoleCheck);
- switch(pRoleCheck->result)
+ switch(pRoleCheck->state)
{
case LFG_ROLECHECK_INITIALITING:
continue;
@@ -1084,7 +1083,7 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh
}
}
- if (pRoleCheck->result == LFG_ROLECHECK_FINISHED)
+ if (pRoleCheck->state == LFG_ROLECHECK_FINISHED)
{
grp->SetLfgState(LFG_STATE_QUEUED);
LfgQueueInfo* pqInfo = new LfgQueueInfo();
@@ -1109,9 +1108,9 @@ void LFGMgr::UpdateRoleCheck(Group* grp, Player* plr /* = NULL*/, bool newRoleCh
AddToQueue(guid, team);
}
- if (pRoleCheck->result != LFG_ROLECHECK_INITIALITING)
+ if (pRoleCheck->state != LFG_ROLECHECK_INITIALITING)
{
- if (pRoleCheck->result != LFG_ROLECHECK_FINISHED)
+ if (pRoleCheck->state != LFG_ROLECHECK_FINISHED)
grp->RestoreLfgState();
delete pRoleCheck;
m_RoleChecks.erase(itRoleCheck);
@@ -1283,10 +1282,10 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true
Update Proposal info with player answer
@param[in] proposalId Proposal id to be updated
- @param[in] lowguid Player low guid to update answer
+ @param[in] guid Player guid to update answer
@param[in] accept Player answer
*/
-void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept)
+void LFGMgr::UpdateProposal(uint32 proposalId, const uint64& guid, bool accept)
{
// Check if the proposal exists
LfgProposalMap::iterator itProposal = m_Proposals.find(proposalId);
@@ -1295,13 +1294,13 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept)
LfgProposal* pProposal = itProposal->second;
// Check if proposal have the current player
- LfgProposalPlayerMap::iterator itProposalPlayer = pProposal->players.find(lowGuid);
+ LfgProposalPlayerMap::iterator itProposalPlayer = pProposal->players.find(guid);
if (itProposalPlayer == pProposal->players.end())
return;
LfgProposalPlayer* ppPlayer = itProposalPlayer->second;
ppPlayer->accept = LfgAnswer(accept);
- sLog.outDebug("LFGMgr::UpdateProposal: Player [" UI64FMTD "] of proposal %u selected: %u", MAKE_NEW_GUID(lowGuid, 0, HIGHGUID_PLAYER), proposalId, accept);
+ sLog.outDebug("LFGMgr::UpdateProposal: Player [" UI64FMTD "] of proposal %u selected: %u", guid, proposalId, accept);
if (!accept)
{
RemoveProposal(itProposal, LFG_UPDATETYPE_PROPOSAL_DECLINED);
@@ -1315,9 +1314,9 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept)
bool allAnswered = true;
for (LfgProposalPlayerMap::const_iterator itPlayers = pProposal->players.begin(); itPlayers != pProposal->players.end(); ++itPlayers)
{
- if (Player* plr = sObjectMgr.GetPlayerByLowGUID(itPlayers->first))
+ if (Player* plr = sObjectMgr.GetPlayer(itPlayers->first))
{
- if (itPlayers->first == pProposal->leaderLowGuid)
+ if (itPlayers->first == pProposal->leader)
players.push_front(plr);
else
players.push_back(plr);
@@ -1346,7 +1345,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept)
// Save wait times before redoing groups
for (LfgPlayerList::const_iterator it = players.begin(); it != players.end(); ++it)
{
- LfgProposalPlayer* pPlayer = pProposal->players[(*it)->GetGUIDLow()];
+ LfgProposalPlayer* pPlayer = pProposal->players[(*it)->GetGUID()];
uint32 lowgroupguid = (*it)->GetGroup() ? (*it)->GetGroup()->GetLowGUID() : 0;
if (pPlayer->groupLowGuid != lowgroupguid)
sLog.outError("LFGMgr::UpdateProposal: [" UI64FMTD "] group mismatch: actual (%u) - queued (%u)", (*it)->GetGUID(), lowgroupguid, pPlayer->groupLowGuid);
@@ -1409,7 +1408,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept)
m_WaitTimeAvg = int32((m_WaitTimeAvg * m_NumWaitTimeAvg + waitTimesMap[plr->GetGUID()]) / ++m_NumWaitTimeAvg);
break;
}
- grp->SetLfgRoles(plr->GetGUID(), pProposal->players[plr->GetGUIDLow()]->role);
+ grp->SetLfgRoles(plr->GetGUID(), pProposal->players[plr->GetGUID()]->role);
plr->SetLfgState(LFG_STATE_DUNGEON);
}
@@ -1464,7 +1463,7 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
if (it->second->accept == LFG_ANSWER_AGREE)
continue;
- uint64 guid = it->second->groupLowGuid ? MAKE_NEW_GUID(it->second->groupLowGuid, 0, HIGHGUID_GROUP) : MAKE_NEW_GUID(it->first, 0, HIGHGUID_PLAYER);
+ uint64 guid = it->second->groupLowGuid ? MAKE_NEW_GUID(it->second->groupLowGuid, 0, HIGHGUID_GROUP) : it->first;
// Player didn't accept or still pending when no secs left
if (it->second->accept == LFG_ANSWER_DENY || type == LFG_UPDATETYPE_PROPOSAL_FAILED)
{
@@ -1477,7 +1476,7 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
// Notify players
for (LfgProposalPlayerMap::const_iterator it = pProposal->players.begin(); it != pProposal->players.end(); ++it)
{
- Player* plr = sObjectMgr.GetPlayerByLowGUID(it->first);
+ Player* plr = sObjectMgr.GetPlayer(it->first);
if (!plr)
continue;
@@ -1548,11 +1547,11 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
Initialize a boot kick vote
@param[in] grp Group the vote kicks belongs to
- @param[in] kicker Kicker low guid
- @param[in] victim Victim low guid
+ @param[in] kicker Kicker guid
+ @param[in] victim Victim guid
@param[in] reason Kick reason
*/
-void LFGMgr::InitBoot(Group* grp, uint32 kicker, uint32 victim, std::string reason)
+void LFGMgr::InitBoot(Group* grp, uint64& kicker, uint64& victim, std::string reason)
{
if (!grp)
return;
@@ -1563,7 +1562,7 @@ void LFGMgr::InitBoot(Group* grp, uint32 kicker, uint32 victim, std::string reas
pBoot->inProgress = true;
pBoot->cancelTime = time_t(time(NULL)) + LFG_TIME_BOOT;
pBoot->reason = reason;
- pBoot->victimLowGuid = victim;
+ pBoot->victim = victim;
pBoot->votedNeeded = GROUP_LFG_KICK_VOTES_NEEDED;
PlayerSet players;
@@ -1573,14 +1572,14 @@ void LFGMgr::InitBoot(Group* grp, uint32 kicker, uint32 victim, std::string reas
if (Player* plrg = itr->getSource())
{
plrg->SetLfgState(LFG_STATE_BOOT);
- uint32 pLowGuid = plrg->GetGUIDLow();
- if (pLowGuid == victim)
- pBoot->votes[pLowGuid] = LFG_ANSWER_DENY; // Victim auto vote NO
- else if (pLowGuid == kicker)
- pBoot->votes[pLowGuid] = LFG_ANSWER_AGREE; // Kicker auto vote YES
+ uint64 guid = plrg->GetGUID();
+ if (guid == victim)
+ pBoot->votes[victim] = LFG_ANSWER_DENY; // Victim auto vote NO
+ else if (guid == kicker)
+ pBoot->votes[kicker] = LFG_ANSWER_AGREE; // Kicker auto vote YES
else
{
- pBoot->votes[pLowGuid] = LFG_ANSWER_PENDING; // Other members need to vote
+ pBoot->votes[guid] = LFG_ANSWER_PENDING; // Other members need to vote
players.insert(plrg);
}
}
@@ -1606,7 +1605,7 @@ void LFGMgr::UpdateBoot(Player* plr, bool accept)
return;
uint32 bootId = grp->GetLowGUID();
- uint32 lowGuid = plr->GetGUIDLow();
+ uint64 guid = plr->GetGUID();
LfgPlayerBootMap::iterator itBoot = m_Boots.find(bootId);
if (itBoot == m_Boots.end())
@@ -1616,10 +1615,10 @@ void LFGMgr::UpdateBoot(Player* plr, bool accept)
if (!pBoot)
return;
- if (pBoot->votes[lowGuid] != LFG_ANSWER_PENDING) // Cheat check: Player can't vote twice
+ if (pBoot->votes[guid] != LFG_ANSWER_PENDING) // Cheat check: Player can't vote twice
return;
- pBoot->votes[lowGuid] = LfgAnswer(accept);
+ pBoot->votes[guid] = LfgAnswer(accept);
uint8 votesNum = 0;
uint8 agreeNum = 0;
@@ -1640,8 +1639,8 @@ void LFGMgr::UpdateBoot(Player* plr, bool accept)
// Send update info to all players
pBoot->inProgress = false;
for (LfgAnswerMap::const_iterator itVotes = pBoot->votes.begin(); itVotes != pBoot->votes.end(); ++itVotes)
- if (Player* plrg = sObjectMgr.GetPlayerByLowGUID(itVotes->first))
- if (plrg->GetGUIDLow() != pBoot->victimLowGuid)
+ if (Player* plrg = sObjectMgr.GetPlayer(itVotes->first))
+ if (plrg->GetGUID() != pBoot->victim)
{
plrg->SetLfgState(LFG_STATE_DUNGEON);
plrg->GetSession()->SendLfgBootPlayer(pBoot);
@@ -1650,8 +1649,8 @@ void LFGMgr::UpdateBoot(Player* plr, bool accept)
grp->SetLfgState(LFG_STATE_DUNGEON);
if (agreeNum == pBoot->votedNeeded) // Vote passed - Kick player
{
- Player::RemoveFromGroup(grp, MAKE_NEW_GUID(pBoot->victimLowGuid, 0, HIGHGUID_PLAYER));
- if (Player* victim = sObjectMgr.GetPlayerByLowGUID(pBoot->victimLowGuid))
+ Player::RemoveFromGroup(grp, pBoot->victim);
+ if (Player* victim = sObjectMgr.GetPlayer(pBoot->victim))
{
TeleportPlayer(victim, true, false);
victim->SetLfgState(LFG_STATE_NONE);
@@ -1891,7 +1890,7 @@ LfgLockStatusMap* LFGMgr::GetGroupLockStatusDungeons(PlayerSet& players, LfgDung
LfgLockStatusMap* dungeonMap = new LfgLockStatusMap();
for (PlayerSet::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (LfgLockStatusSet* dungeonSet = GetPlayerLockStatusDungeons(*itr, dungeons, useEntry))
- (*dungeonMap)[(*itr)->GetGUIDLow()] = dungeonSet;
+ (*dungeonMap)[(*itr)->GetGUID()] = dungeonSet;
if (!dungeonMap->size())
{
diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h
index 6ca476d68e6..e56764543d8 100755
--- a/src/server/game/DungeonFinding/LFGMgr.h
+++ b/src/server/game/DungeonFinding/LFGMgr.h
@@ -150,13 +150,13 @@ typedef std::pair<LfgRewardMap::const_iterator, LfgRewardMap::const_iterator> Lf
typedef std::map<std::string, LfgAnswer> LfgCompatibleMap;
typedef std::map<uint64, LfgDungeonSet> LfgDungeonMap;
typedef std::set<LfgLockStatus*> LfgLockStatusSet;
-typedef std::map<uint32, LfgLockStatusSet*> LfgLockStatusMap;
-typedef std::map<uint32, uint8> LfgRolesMap;
-typedef std::map<uint32, LfgAnswer> LfgAnswerMap;
+typedef std::map<uint64, LfgLockStatusSet*> LfgLockStatusMap;
+typedef std::map<uint64, uint8> LfgRolesMap;
+typedef std::map<uint64, LfgAnswer> LfgAnswerMap;
typedef std::map<uint32, LfgRoleCheck*> LfgRoleCheckMap;
typedef std::map<uint64, LfgQueueInfo*> LfgQueueInfoMap;
typedef std::map<uint32, LfgProposal*> LfgProposalMap;
-typedef std::map<uint32, LfgProposalPlayer*> LfgProposalPlayerMap;
+typedef std::map<uint64, LfgProposalPlayer*> LfgProposalPlayerMap;
typedef std::map<uint32, LfgPlayerBoot*> LfgPlayerBootMap;
/// Dungeon and reason why player can't join
@@ -234,7 +234,7 @@ struct LfgProposalPlayer
/// Stores group data related to proposal to join
struct LfgProposal
{
- LfgProposal(uint32 dungeon): dungeonId(dungeon), state(LFG_PROPOSAL_INITIATING), groupLowGuid(0), leaderLowGuid(0) {}
+ LfgProposal(uint32 dungeon): dungeonId(dungeon), state(LFG_PROPOSAL_INITIATING), groupLowGuid(0), leader(0) {}
~LfgProposal()
{
@@ -246,7 +246,7 @@ struct LfgProposal
uint32 dungeonId; ///< Dungeon to join
LfgProposalState state; ///< State of the proposal
uint32 groupLowGuid; ///< Proposal group (0 if new)
- uint32 leaderLowGuid; ///< Leader guid.
+ uint64 leader; ///< Leader guid.
time_t cancelTime; ///< Time when we will cancel this proposal
LfgGuidList queues; ///< Queue Ids to remove/readd
LfgProposalPlayerMap players; ///< Players data
@@ -258,10 +258,10 @@ struct LfgRoleCheck
{
time_t cancelTime; ///< Time when the rolecheck will fail
LfgRolesMap roles; ///< Player selected roles
- LfgRoleCheckState result; ///< State of the rolecheck
+ LfgRoleCheckState state; ///< State of the rolecheck
LfgDungeonSet dungeons; ///< Dungeons group is applying for (expanded random dungeons)
uint32 rDungeonId; ///< Random Dungeon Id.
- uint32 leader; ///< Leader of the group
+ uint64 leader; ///< Leader of the group
};
/// Stores information of a current vote to kick someone from a group
@@ -270,7 +270,7 @@ struct LfgPlayerBoot
time_t cancelTime; ///< Time left to vote
bool inProgress; ///< Vote in progress
LfgAnswerMap votes; ///< Player votes (-1 not answer | 0 Not agree | 1 agree)
- uint32 victimLowGuid; ///< Player guid to be kicked (can't vote)
+ uint64 victim; ///< Player guid to be kicked (can't vote)
uint8 votedNeeded; ///< Votes needed to kick the player
std::string reason; ///< kick reason
};
@@ -298,13 +298,13 @@ class LFGMgr
void UpdateRoleCheck(Group* grp, Player* plr = NULL, bool newRoleCheck = false);
// Proposals
- void UpdateProposal(uint32 proposalId, uint32 lowGuid, bool accept);
+ void UpdateProposal(uint32 proposalId, const uint64& guid, bool accept);
// Teleportation
void TeleportPlayer(Player* plr, bool out, bool fromOpcode = false);
// Vote kick
- void InitBoot(Group* grp, uint32 plowGuid, uint32 vlowGuid, std::string reason);
+ void InitBoot(Group* grp, uint64& kguid, uint64& vguid, std::string reason);
void UpdateBoot(Player* plr, bool accept);
void OfferContinue(Group* grp);
diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp
index 04d00c52164..d3c32b5364c 100644
--- a/src/server/game/DungeonFinding/LFGScripts.cpp
+++ b/src/server/game/DungeonFinding/LFGScripts.cpp
@@ -77,7 +77,7 @@ void LFGScripts::OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method,
std::string str_reason = "";
if (reason)
str_reason = std::string(reason);
- sLFGMgr.InitBoot(group, GUID_LOPART(kicker), GUID_LOPART(guid), str_reason);
+ sLFGMgr.InitBoot(group, kicker, guid, str_reason);
return;
}
diff --git a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
index 399dabc2103..fb5423a1d7e 100755
--- a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
@@ -113,7 +113,7 @@ void WorldSession::HandleLfgProposalResultOpcode(WorldPacket &recv_data)
recv_data >> accept;
sLog.outDebug("CMSG_LFG_PROPOSAL_RESULT [" UI64FMTD "] proposal: %u accept: %u", GetPlayer()->GetGUID(), lfgGroupID, accept ? 1 : 0);
- sLFGMgr.UpdateProposal(lfgGroupID, GetPlayer()->GetGUIDLow(), accept);
+ sLFGMgr.UpdateProposal(lfgGroupID, GetPlayer()->GetGUID(), accept);
}
void WorldSession::HandleLfgSetRolesOpcode(WorldPacket &recv_data)
@@ -397,8 +397,8 @@ void WorldSession::SendLfgRoleCheckUpdate(LfgRoleCheck* pRoleCheck)
Player* plr;
uint8 roles;
- data << uint32(pRoleCheck->result); // Check result
- data << uint8(pRoleCheck->result == LFG_ROLECHECK_INITIALITING);
+ data << uint32(pRoleCheck->state); // Check result
+ data << uint8(pRoleCheck->state == LFG_ROLECHECK_INITIALITING);
data << uint8(dungeons.size()); // Number of dungeons
if (dungeons.size())
{
@@ -525,15 +525,13 @@ void WorldSession::SendLfgBootPlayer(LfgPlayerBoot* pBoot)
++agreeNum;
}
}
- uint64 victimguid = MAKE_NEW_GUID(pBoot->victimLowGuid, 0, HIGHGUID_PLAYER);
-
sLog.outDebug("SMSG_LFG_BOOT_PLAYER [" UI64FMTD "] inProgress: %u - didVote: %u - agree: %u - victim: [" UI64FMTD "] votes: %u - agrees: %u - left: %u - needed: %u - reason %s",
- GetPlayer()->GetGUID(), uint8(pBoot->inProgress), uint8(playerVote != LFG_ANSWER_PENDING), uint8(playerVote == LFG_ANSWER_AGREE), victimguid, votesNum, agreeNum, secsleft, pBoot->votedNeeded, pBoot->reason.c_str());
+ GetPlayer()->GetGUID(), uint8(pBoot->inProgress), uint8(playerVote != LFG_ANSWER_PENDING), uint8(playerVote == LFG_ANSWER_AGREE), pBoot->victim, votesNum, agreeNum, secsleft, pBoot->votedNeeded, pBoot->reason.c_str());
WorldPacket data(SMSG_LFG_BOOT_PLAYER, 1 + 1 + 1 + 8 + 4 + 4 + 4 + 4 + pBoot->reason.length());
data << uint8(pBoot->inProgress); // Vote in progress
data << uint8(playerVote != LFG_ANSWER_PENDING); // Did Vote
data << uint8(playerVote == LFG_ANSWER_AGREE); // Agree
- data << uint64(victimguid); // Victim GUID
+ data << uint64(pBoot->victim); // Victim GUID
data << uint32(votesNum); // Total Votes
data << uint32(agreeNum); // Agree Count
data << uint32(secsleft); // Time Left