这篇教程C++ GetFirstMember函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetFirstMember函数的典型用法代码示例。如果您正苦于以下问题:C++ GetFirstMember函数的具体用法?C++ GetFirstMember怎么用?C++ GetFirstMember使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetFirstMember函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: GetMembersCountGroupJoinBattlegroundResult Group::CanJoinBattleGroundQueue(BattleGround const* bgOrTemplate, BattleGroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 /*MaxPlayerCount*/, bool isRated, uint32 arenaSlot){ BattlemasterListEntry const* bgEntry = sBattlemasterListStore.LookupEntry(bgOrTemplate->GetTypeID()); if (!bgEntry) return ERR_GROUP_JOIN_BATTLEGROUND_FAIL; // shouldn't happen // check for min / max count uint32 memberscount = GetMembersCount(); // only check for MinPlayerCount since MinPlayerCount == MaxPlayerCount for arenas... if (bgOrTemplate->isArena() && memberscount != MinPlayerCount) return ERR_ARENA_TEAM_PARTY_SIZE; if (memberscount > bgEntry->maxGroupSize) // no MinPlayerCount for battlegrounds return ERR_BATTLEGROUND_NONE; // ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY handled on client side // get a player as reference, to compare other players' stats to (arena team id, queue id based on level, etc.) Player* reference = GetFirstMember()->getSource(); // no reference found, can't join this way if (!reference) return ERR_BATTLEGROUND_JOIN_FAILED; PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bgOrTemplate->GetMapId(), reference->getLevel()); if (!bracketEntry) return ERR_BATTLEGROUND_JOIN_FAILED; uint32 arenaTeamId = reference->GetArenaTeamId(arenaSlot); Team team = reference->GetTeam(); // check every member of the group to be able to join for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->getSource(); // offline member? don't let join if (!member) return ERR_BATTLEGROUND_JOIN_FAILED; // don't allow cross-faction join as group if (member->GetTeam() != team) return ERR_BATTLEGROUND_JOIN_TIMED_OUT; // not in the same battleground level bracket, don't let join PvPDifficultyEntry const* memberBracketEntry = GetBattlegroundBracketByLevel(bracketEntry->mapId, member->getLevel()); if (memberBracketEntry != bracketEntry) return ERR_BATTLEGROUND_JOIN_RANGE_INDEX; // don't let join rated matches if the arena team id doesn't match if (isRated && member->GetArenaTeamId(arenaSlot) != arenaTeamId) return ERR_BATTLEGROUND_JOIN_FAILED; // don't let join if someone from the group is already in that bg queue if (member->InBattleGroundQueueForBattleGroundQueueType(bgQueueTypeId)) return ERR_BATTLEGROUND_JOIN_FAILED; // not blizz-like // check for deserter debuff in case not arena queue if (bgOrTemplate->GetTypeID() != BATTLEGROUND_AA && !member->CanJoinToBattleground()) return ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS; // check if member can join any more battleground queues if (!member->HasFreeBattleGroundQueueId()) return ERR_BATTLEGROUND_TOO_MANY_QUEUES; // not blizz-like } return GroupJoinBattlegroundResult(bgOrTemplate->GetTypeID());}
开发者ID:HerrTrigger,项目名称:mangos-wotlk,代码行数:58,
示例2: GetDataForXPAtKillvoid Group::GetDataForXPAtKill(Unit const* victim, uint32& count, uint32& sum_level, Player*& member_with_max_level, Player*& not_gray_member_with_max_level, Player* additional){ for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player* member = itr->getSource(); if (!member || !member->isAlive()) // only for alive continue; // will proccesed later if (member == additional) continue; if (!member->IsAtGroupRewardDistance(victim)) // at req. distance continue; ++count; GetDataForXPAtKill_helper(member, victim, sum_level, member_with_max_level, not_gray_member_with_max_level); } if (additional) { if (additional->IsAtGroupRewardDistance(victim)) // at req. distance { ++count; GetDataForXPAtKill_helper(additional, victim, sum_level, member_with_max_level, not_gray_member_with_max_level); } }}
开发者ID:jpiolho,项目名称:portalclassic,代码行数:28,
示例3: GetMembersCountuint32 Group::CanJoinBattleGroundQueue(BattleGroundTypeId bgTypeId, BattleGroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot){ // check for min / max count uint32 memberscount = GetMembersCount(); if (memberscount < MinPlayerCount) return BG_JOIN_ERR_GROUP_NOT_ENOUGH; if (memberscount > MaxPlayerCount) return BG_JOIN_ERR_GROUP_TOO_MANY; // get a player as reference, to compare other players' stats to (arena team id, queue id based on level, etc.) Player* reference = GetFirstMember()->getSource(); // no reference found, can't join this way if (!reference) return BG_JOIN_ERR_OFFLINE_MEMBER; BattleGroundBracketId bracket_id = reference->GetBattleGroundBracketIdFromLevel(bgTypeId); uint32 arenaTeamId = reference->GetArenaTeamId(arenaSlot); Team team = reference->GetTeam(); // check every member of the group to be able to join for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->getSource(); // offline member? don't let join if (!member) return BG_JOIN_ERR_OFFLINE_MEMBER; // don't allow cross-faction join as group if (member->GetTeam() != team) return BG_JOIN_ERR_MIXED_FACTION; // not in the same battleground level bracket, don't let join if (member->GetBattleGroundBracketIdFromLevel(bgTypeId) != bracket_id) return BG_JOIN_ERR_MIXED_LEVELS; // don't let join rated matches if the arena team id doesn't match if (isRated && member->GetArenaTeamId(arenaSlot) != arenaTeamId) return BG_JOIN_ERR_MIXED_ARENATEAM; // don't let join if someone from the group is already in that bg queue if (member->InBattleGroundQueueForBattleGroundQueueType(bgQueueTypeId)) return BG_JOIN_ERR_GROUP_MEMBER_ALREADY_IN_QUEUE; // check for deserter debuff in case not arena queue if (bgTypeId != BATTLEGROUND_AA && !member->CanJoinToBattleground()) return BG_JOIN_ERR_GROUP_DESERTER; // check if member can join any more battleground queues if (!member->HasFreeBattleGroundQueueId()) return BG_JOIN_ERR_ALL_QUEUES_USED; } return BG_JOIN_ERR_OK;}
开发者ID:AlexHjelm,项目名称:Core,代码行数:47,
示例4: InCombatToInstancebool Group::InCombatToInstance(uint32 instanceId){ for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player* pPlayer = itr->getSource(); if (pPlayer->getAttackers().size() && pPlayer->GetInstanceId() == instanceId) return true; } return false;}
开发者ID:jpiolho,项目名称:portalclassic,代码行数:10,
示例5: BroadcastReadyCheckvoid Group::BroadcastReadyCheck(WorldPacket* packet){ for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player* pl = itr->getSource(); if (pl && pl->GetSession()) if (IsLeader(pl->GetObjectGuid()) || IsAssistant(pl->GetObjectGuid())) pl->GetSession()->SendPacket(packet); }}
开发者ID:jpiolho,项目名称:portalclassic,代码行数:10,
示例6: BroadcastReadyCheckvoid Group::BroadcastReadyCheck(WorldPacket const& packet) const{ for (auto itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* pl = itr->getSource(); if (pl && pl->GetSession()) if (IsLeader(pl->GetObjectGuid()) || IsAssistant(pl->GetObjectGuid())) pl->GetSession()->SendPacket(packet); }}
开发者ID:lduguid,项目名称:mangos-tbc,代码行数:10,
示例7: BroadcastPacketvoid Group::BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group, ObjectGuid ignore){ for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player* pl = itr->getSource(); if (!pl || (ignore && pl->GetObjectGuid() == ignore) || (ignorePlayersInBGRaid && pl->GetGroup() != this)) continue; if (pl->GetSession() && (group == -1 || itr->getSubGroup() == group)) pl->GetSession()->SendPacket(packet); }}
开发者ID:jpiolho,项目名称:portalclassic,代码行数:12,
示例8: SetDifficultyvoid Group::SetDifficulty(Difficulty difficulty){ m_difficulty = difficulty; if (!isBGGroup()) CharacterDatabase.PExecute("UPDATE groups SET difficulty = %u WHERE groupId='%u'", m_difficulty, m_Id); for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* player = itr->getSource(); if (!player->GetSession() || player->getLevel() < LEVELREQUIREMENT_HEROIC) continue; player->SetDifficulty(difficulty); player->SendDungeonDifficulty(true); }}
开发者ID:AlexHjelm,项目名称:Core,代码行数:15,
示例9: UpdatePlayerOutOfRangevoid Group::UpdatePlayerOutOfRange(Player* pPlayer){ if (!pPlayer || !pPlayer->IsInWorld()) return; if (pPlayer->GetGroupUpdateFlag() == GROUP_UPDATE_FLAG_NONE) return; WorldPacket data; pPlayer->GetSession()->BuildPartyMemberStatsChangedPacket(pPlayer, &data); for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next()) if (Player* player = itr->getSource()) if (player != pPlayer && !player->HaveAtClient(pPlayer)) player->GetSession()->SendPacket(&data);}
开发者ID:jpiolho,项目名称:portalclassic,代码行数:16,
示例10: GetMaxSkillValueForGroupuint32 Group::GetMaxSkillValueForGroup(SkillType skill){ uint32 maxvalue = 0; for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->getSource(); if (!member) continue; uint32 value = member->GetSkillValue(skill); if (maxvalue < value) maxvalue = value; } return maxvalue;}
开发者ID:HerrTrigger,项目名称:mangos-wotlk,代码行数:17,
示例11: KilledCreaturevoid LfgGroup::KilledCreature(Creature *creature){ if ((creature->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_INSTANCE_BIND) && m_instanceStatus == INSTANCE_NOT_SAVED) { m_instanceStatus = INSTANCE_SAVED; } if (!m_awarded && creature->GetEntry() == sLfgMgr.GetDungeonInfo(m_dungeonInfo->ID)->lastBossId) { //Last boss m_instanceStatus = INSTANCE_COMPLETED; //Reward here for (GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player *plr = itr->getSource(); if (!plr || !plr->IsInWorld()) continue; WorldPacket data(SMSG_LFG_PLAYER_REWARD); data << uint32(GetDungeonInfo((IsRandom() || IsFromRnd(plr->GetGUID())))->Entry()); data << uint32(m_dungeonInfo->Entry()); uint32 ID = GetDungeonInfo((IsRandom() || IsFromRnd(plr->GetGUID())))->ID; sLfgMgr.BuildRewardBlock(&data, ID, plr); plr->GetSession()->SendPacket(&data); LfgReward *reward = sLfgMgr.GetDungeonReward(ID, plr->m_lookingForGroup.DoneDungeon(ID, plr), plr->getLevel()); if (!reward) continue; plr->CompleteQuest(reward->questInfo->GetQuestId()); if (IsRandom()) plr->RemoveAurasDueToSpell(LFG_RANDOM_COOLDOWN); } m_awarded = true; } SendUpdate();}
开发者ID:Tasssadar,项目名称:catcore,代码行数:36,
示例12: ifbool Group::_addMember(ObjectGuid guid, const char* name, bool isAssistant, uint8 group){ if (IsFull()) return false; if (!guid) return false; Player* player = sObjectMgr.GetPlayer(guid, false); uint32 lastMap = 0; if (player && player->IsInWorld()) lastMap = player->GetMapId(); else if (player && player->IsBeingTeleported()) lastMap = player->GetTeleportDest().mapid; MemberSlot member; member.guid = guid; member.name = name; member.group = group; member.assistant = isAssistant; member.lastMap = lastMap; m_memberSlots.push_back(member); SubGroupCounterIncrease(group); if (player) { player->SetGroupInvite(nullptr); // if player is in group and he is being added to BG raid group, then call SetBattleGroundRaid() if (player->GetGroup() && isBattleGroup()) player->SetBattleGroundRaid(this, group); // if player is in bg raid and we are adding him to normal group, then call SetOriginalGroup() else if (player->GetGroup()) player->SetOriginalGroup(this, group); // if player is not in group, then call set group else player->SetGroup(this, group); if (player->IsInWorld()) { // if the same group invites the player back, cancel the homebind timer if (InstanceGroupBind* bind = GetBoundInstance(player->GetMapId())) if (bind->state->GetInstanceId() == player->GetInstanceId()) player->m_InstanceValid = true; } if (player->IsPvPFreeForAll()) { player->ForceHealthAndPowerUpdate(); for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* groupMember = itr->getSource(); if (groupMember && groupMember->GetSession()) groupMember->ForceHealthAndPowerUpdate(); } } } if (!isRaidGroup()) // reset targetIcons for non-raid-groups { for (auto& m_targetIcon : m_targetIcons) m_targetIcon.Clear(); } if (!isBattleGroup()) { // insert into group table CharacterDatabase.PExecute("INSERT INTO group_member(groupId,memberGuid,assistant,subgroup) VALUES('%u','%u','%u','%u')", m_Id, member.guid.GetCounter(), ((member.assistant == 1) ? 1 : 0), member.group); } return true;}
开发者ID:Ghaster,项目名称:mangos-classic,代码行数:74,
示例13: WorldLocation//.........这里部分代码省略......... taxi_end = plr->m_taxi.GetTaxiDestination(); joinLoc = WorldLocation(plr->GetMapId(), plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), plr->GetOrientation()); } else { // Mount spell id storing if (plr->IsMounted()) { Unit::AuraList const& auras = plr->GetAurasByType(SPELL_AURA_MOUNTED); if (!auras.empty()) mount_spell = (*auras.begin())->GetId(); } if(!mount_spell && plr->getClass() == CLASS_DRUID) { Unit::AuraList const& auras = plr->GetAurasByType(SPELL_AURA_MOD_SHAPESHIFT); if (!auras.empty()) mount_spell = (*auras.begin())->GetId(); } //Nearest graveyard if in dungeon if (plr->GetMap()->IsDungeon()) { if (const WorldSafeLocsEntry* entry = sObjectMgr.GetClosestGraveYard(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), plr->GetMapId(), plr->GetTeam())) joinLoc = WorldLocation(entry->map_id, entry->x, entry->y, entry->z, 0.f); else joinLoc = plr->GetLocation(); } else joinLoc = plr->GetLocation(); } CharacterDatabase.PExecute("DELETE FROM group_member WHERE memberGuid='%u'", GUID_LOPART(plr->GetGUID())); CharacterDatabase.PExecute("INSERT INTO group_member(groupId,memberGuid,assistant,subgroup,lfg_join_x,lfg_join_y,lfg_join_z,lfg_join_o,lfg_join_map,taxi_start,taxi_end,mount_spell) " "VALUES('%u','%u','%u','%u','%f','%f','%f','%f','%u','%u','%u','%u')", m_Id, GUID_LOPART(plr->GetGUID()), 0, 1, joinLoc.x(), joinLoc.y(), joinLoc.z(), joinLoc.orientation, joinLoc.mapid, taxi_start, taxi_end, mount_spell); //Set info to player plr->m_lookingForGroup.joinLoc = joinLoc; plr->m_lookingForGroup.taxi_start = taxi_start; plr->m_lookingForGroup.taxi_end = taxi_end; plr->m_lookingForGroup.mount_spell = mount_spell; plr->m_lookingForGroup.roles = GetPlayerRole(plr->GetGUID()); if (IsRandom()) plr->CastSpell(plr, LFG_RANDOM_COOLDOWN, true); } // resurrect the player if (!plr->isAlive()) { plr->ResurrectPlayer(1.0f); plr->SpawnCorpseBones(); } // stop taxi flight at port if (plr->isInFlight()) { plr->GetMotionMaster()->MovementExpired(false); plr->GetMotionMaster()->Clear(false, true); plr->GetMotionMaster()->MoveIdle(); plr->m_taxi.ClearTaxiDestinations(); } plr->ScheduleDelayedOperation(DELAYED_LFG_ENTER_DUNGEON); plr->ScheduleDelayedOperation(DELAYED_SAVE_PLAYER); plr->ScheduleDelayedOperation(DELAYED_LFG_CLEAR_LOCKS); if(IsMixed()) { plr->m_lookingForGroup.SetMixedDungeon(dungeonInfo->start_map); if(newPlr) plr->setFaction(sWorld.getConfig(CONFIG_UINT32_TEAM_BG_FACTION_BLUE)); } if (IsInDungeon()) { if(newPlr) { for (GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) { Player *player = itr->getSource(); if (!player || player->GetMapId() != GetDungeonInfo()->map) continue; plr->TeleportTo(player->GetLocation()); return; } } plr->TeleportTo(dungeonInfo->start_map, dungeonInfo->start_x, dungeonInfo->start_y, dungeonInfo->start_z, dungeonInfo->start_o); return; } //Must re-add player to reset id... Map *map = plr->GetMap(); if(map->GetId() == dungeonInfo->start_map) { map->Remove(plr, false); map->Add(plr); } plr->TeleportTo(dungeonInfo->start_map, dungeonInfo->start_x, dungeonInfo->start_y, dungeonInfo->start_z, dungeonInfo->start_o);}
开发者ID:Tasssadar,项目名称:catcore,代码行数:101,
示例14: SendBootPlayer// return true = remove from update list, false = continuebool LfgGroup::UpdateVoteToKick(uint32 diff){ if (!m_voteToKick.isInProggres) return true; if (diff) { if (m_voteToKick.GetTimeLeft() <= 0) { m_voteToKick.isInProggres = false; for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) { Player *member = sObjectMgr.GetPlayer(citr->guid); if (!member || !member->GetSession()) continue; SendBootPlayer(member); } m_voteToKick.Reset(); return true; } return false; } //Send Update for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) { Player *member = sObjectMgr.GetPlayer(citr->guid); if (!member || !member->GetSession()) continue; SendBootPlayer(member); } if (m_voteToKick.GetVotesNum(false) < 3) return false; else if (m_voteToKick.GetVotesNum(true) >= 3) { Player *victim = sObjectMgr.GetPlayer(m_voteToKick.victim); sLfgMgr.LfgLog("Remove member - afk rolecheck"); RemoveMember(m_voteToKick.victim, 1); if (victim && victim->GetSession()) { victim->ScheduleDelayedOperation(DELAYED_LFG_MOUNT_RESTORE); victim->ScheduleDelayedOperation(DELAYED_LFG_TAXI_RESTORE); victim->ScheduleDelayedOperation(DELAYED_LFG_CLEAR_LOCKS); victim->RemoveAurasDueToSpell(LFG_BOOST); WorldLocation teleLoc = victim->m_lookingForGroup.joinLoc; if (!teleLoc.coords.isNULL()) victim->TeleportTo(teleLoc); else victim->TeleportToHomebind(); } else { AreaTrigger const *trigger = sObjectMgr.GetGoBackTrigger(GetDungeonInfo()->map); if(trigger) Player::SavePositionInDB(trigger->target_mapId, trigger->target_X, trigger->target_Y, trigger->target_Z, trigger->target_Orientation, sTerrainMgr.GetZoneId(trigger->target_mapId, trigger->target_X, trigger->target_Y, trigger->target_Z), m_voteToKick.victim); } //Change leader if (m_voteToKick.victim == m_leaderGuid) { for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) { Player *plr = sObjectMgr.GetPlayer(citr->guid); if (!plr || !plr->GetSession()) continue; if (plr->m_lookingForGroup.roles & LEADER) { ChangeLeader(plr->GetGUID()); break; } } if (m_voteToKick.victim == m_leaderGuid) ChangeLeader(GetFirstMember()->getSource()->GetGUID()); } m_voteToKick.Reset(); SendUpdate(); return true; } return false;}
开发者ID:Tasssadar,项目名称:catcore,代码行数:84,
示例15: RemoveMemberuint32 Group::RemoveMember(ObjectGuid guid, uint8 method){ Player* player = sObjectMgr.GetPlayer(guid);#ifdef BUILD_PLAYERBOT // if master leaves group, all bots leave group if (player && player->GetPlayerbotMgr()) player->GetPlayerbotMgr()->RemoveAllBotsFromGroup();#endif for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) { if (Player* groupMember = itr->getSource()) { if (groupMember->GetObjectGuid() == guid) continue; groupMember->RemoveAllGroupBuffsFromCaster(guid); if (player) player->RemoveAllGroupBuffsFromCaster(groupMember->GetObjectGuid()); } } // remove member and change leader (if need) only if strong more 2 members _before_ member remove if (GetMembersCount() > GetMembersMinCount()) { bool leaderChanged = _removeMember(guid); if (player) { // quest related GO state dependent from raid membership if (isRaidGroup()) player->UpdateForQuestWorldObjects(); WorldPacket data; if (method == 1) { data.Initialize(SMSG_GROUP_UNINVITE, 0); player->GetSession()->SendPacket(data); } // we already removed player from group and in player->GetGroup() is his original group! if (Group* group = player->GetGroup()) { group->SendUpdate(); } else { data.Initialize(SMSG_GROUP_LIST, 24); data << uint64(0) << uint64(0) << uint64(0); player->GetSession()->SendPacket(data); } _homebindIfInstance(player); } if (leaderChanged) { WorldPacket data(SMSG_GROUP_SET_LEADER, (m_leaderName.size() + 1)); data << m_leaderName; BroadcastPacket(data, true); } SendUpdate(); } // if group before remove <= 2 disband it else Disband(true); return m_memberSlots.size();}
开发者ID:lduguid,项目名称:mangos-tbc,代码行数:71,
注:本文中的GetFirstMember函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetFirstNode函数代码示例 C++ GetFirstImageInList函数代码示例 |