本文整理汇总了C++中WorldSession::SendLfgJoinResult方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldSession::SendLfgJoinResult方法的具体用法?C++ WorldSession::SendLfgJoinResult怎么用?C++ WorldSession::SendLfgJoinResult使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldSession
的用法示例。
在下文中一共展示了WorldSession::SendLfgJoinResult方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateRoleCheck
//.........这里部分代码省略.........
plrg = itr->getSource();
if (!plrg)
continue;
session = plrg->GetSession();
if (!newRoleCheck && plr)
session->SendLfgRoleChosen(plr->GetGUID(), plr->m_lookingForGroup.roles);
session->SendPacket(&data);
switch (pRoleCheck->result)
{
case LFG_ROLECHECK_INITIALITING:
continue;
case LFG_ROLECHECK_FINISHED:
if (!playersLockMap)
{
session->SendLfgUpdateParty(LFG_UPDATETYPE_ADDED_TO_QUEUE);
}
else
{
if (grp->IsLeader(plrg->GetGUID()))
{
uint32 size = 0;
for (LfgLockStatusMap::const_iterator it = playersLockMap->begin(); it != playersLockMap->end(); ++it)
size += 8 + 4 + it->second->size() * (4 + 4);
WorldPacket data(SMSG_LFG_JOIN_RESULT, 4 + 4 + size);
DEBUG_LOG("SMSG_LFG_JOIN_RESULT");
data << uint32(LFG_JOIN_PARTY_NOT_MEET_REQS); // Check Result
data << uint32(0); // Check Value (always 0 when PartyNotMeetReqs
BuildPartyLockDungeonBlock(data, playersLockMap);
session->SendPacket(&data);
}
session->SendLfgUpdateParty(LFG_UPDATETYPE_ROLECHECK_FAILED);
plrg->m_lookingForGroup.applyDungeons.clear();
plrg->m_lookingForGroup.roles = 0;
}
break;
default:
if (grp->IsLeader(plrg->GetGUID()))
session->SendLfgJoinResult(LFG_JOIN_FAILED, pRoleCheck->result);
session->SendLfgUpdateParty(LFG_UPDATETYPE_ROLECHECK_FAILED);
plrg->m_lookingForGroup.applyDungeons.clear();
plrg->m_lookingForGroup.roles = 0;
break;
}
}
if (pRoleCheck->result == LFG_ROLECHECK_FINISHED)
{
// Add qroup to queue
LfgQueueInfo *pqInfo;
uint8 groupType = 0;
uint8 tanks = LFG_TANKS_NEEDED;
uint8 healers = LFG_HEALERS_NEEDED;
uint8 dps = LFG_DPS_NEEDED;
for (LfgRolesMap::const_iterator it = check_roles.begin(); it != check_roles.end(); ++it)
{
if (it->second & ROLE_TANK)
--tanks;
else if (it->second & ROLE_HEALER)
--healers;
else
--dps;
}
uint64 guid = grp->GetGUID();
m_update = false;
for (LfgDungeonSet::const_iterator it = pRoleCheck->dungeons.begin(); it != pRoleCheck->dungeons.end(); ++it)
{
groupType = GetDungeonGroupType(*it);
pqInfo = m_Queues[groupType] ? m_Queues[groupType]->GetQueueInfo(guid) : NULL;
// if exist we have already added the player with another dungeon sharing same GroupType
if (pqInfo)
continue;
pqInfo = new LfgQueueInfo();
pqInfo->dungeonId = *it;
pqInfo->joinTime = time_t(time(NULL));
pqInfo->tanks = tanks;
pqInfo->healers = healers;
pqInfo->dps = dps;
for (GroupReference *itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())
{
if (Player *plrg = itr->getSource())
pqInfo->roles[plrg->GetGUID()] = plrg->m_lookingForGroup.roles;
}
if (!m_Queues[groupType])
m_Queues[groupType] = new LFGQueue();
m_Queues[groupType]->AddToQueue(guid, pqInfo);
}
m_update = true;
}
if (pRoleCheck->result != LFG_ROLECHECK_INITIALITING)
{
delete pRoleCheck;
if (!newRoleCheck)
m_RoleChecks.erase(itRoleCheck);
}
else if (newRoleCheck)
m_RoleChecks[rolecheckId] = pRoleCheck;
}