这篇教程C++ GetPlayerBotsBegin函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetPlayerBotsBegin函数的典型用法代码示例。如果您正苦于以下问题:C++ GetPlayerBotsBegin函数的具体用法?C++ GetPlayerBotsBegin怎么用?C++ GetPlayerBotsBegin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetPlayerBotsBegin函数的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: OnPlayerLoginvoid RandomPlayerbotMgr::OnPlayerLogin(Player* player){ for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { Player* const bot = it->second; if (player == bot || player->GetPlayerbotAI()) continue; Group* group = bot->GetGroup(); if (!group) continue; for (GroupReference *gref = group->GetFirstMember(); gref; gref = gref->next()) { Player* member = gref->getSource(); PlayerbotAI* ai = bot->GetPlayerbotAI(); if (member == player && (!ai->GetMaster() || ai->GetMaster()->GetPlayerbotAI())) { ai->SetMaster(player); ai->ResetStrategies(); ai->TellMaster("Hello"); break; } } } if (!player->GetPlayerbotAI()) players.push_back(player);}
开发者ID:billy1arm,项目名称:serverZero,代码行数:29,
示例2: PlayerbotAIvoid PlayerbotMgr::OnBotLogin(Player * const bot){ // give the bot some AI, object is owned by the player class PlayerbotAI* ai = new PlayerbotAI(this, bot); bot->SetPlayerbotAI(ai); // tell the world session that they now manage this new bot m_playerBots[bot->GetObjectGuid()] = bot; // if bot is in a group and master is not in group then // have bot leave their group if (bot->GetGroup() && (m_master->GetGroup() == nullptr || m_master->GetGroup()->IsMember(bot->GetObjectGuid()) == false)) bot->RemoveFromGroup(); // sometimes master can lose leadership, pass leadership to master check const ObjectGuid masterGuid = m_master->GetObjectGuid(); if (m_master->GetGroup() && !m_master->GetGroup()->IsLeader(masterGuid)) // But only do so if one of the master's bots is leader for (PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); itr != GetPlayerBotsEnd(); itr++) { Player* bot = itr->second; if (m_master->GetGroup()->IsLeader(bot->GetObjectGuid())) { m_master->GetGroup()->ChangeLeader(masterGuid); break; } }}
开发者ID:YggDrazil,项目名称:FrozenWoW-AiBot,代码行数:31,
示例3: Stayvoid PlayerbotMgr::Stay(){ for (PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); itr != GetPlayerBotsEnd(); ++itr) { Player* bot = itr->second; bot->GetMotionMaster()->Clear(); }}
开发者ID:cmangos,项目名称:mangos-tbc,代码行数:8,
示例4: HandleCommandvoid RandomPlayerbotMgr::HandleCommand(uint32 type, const string& text, Player& fromPlayer){ for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { Player* const bot = it->second; bot->GetPlayerbotAI()->HandleCommand(type, text, fromPlayer); }}
开发者ID:billy1arm,项目名称:serverZero,代码行数:8,
示例5: RemoveAllBotsFromGroupvoid PlayerbotMgr::RemoveAllBotsFromGroup(){ for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); m_master->GetGroup() && it != GetPlayerBotsEnd(); ++it) { Player* const bot = it->second; if (bot->IsInGroup(m_master)) m_master->GetGroup()->RemoveMember(bot->GetObjectGuid(), 0); }}
开发者ID:cmangos,项目名称:mangos-tbc,代码行数:9,
示例6: whilevoid PlayerbotMgr::LogoutAllBots(){ while (true) { PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); if (itr == GetPlayerBotsEnd()) break; Player* bot= itr->second; LogoutPlayerBot(bot->GetGUID()); }}
开发者ID:mbb1978,项目名称:mangos,代码行数:10,
示例7: whilevoid PlayerbotMgr::LogoutAllBots(){ while (true) { PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); if (itr == GetPlayerBotsEnd()) break; Player* bot = itr->second; LogoutPlayerBot(bot->GetObjectGuid()); } RemoveAllBotsFromGroup();}
开发者ID:cmangos,项目名称:mangos-tbc,代码行数:11,
示例8: OnMasterLevelUpvoid PlayerbotMgr::OnMasterLevelUp() { // give all bots the same level as the master so they stay current for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { Player* const bot = it->second; if (bot->getLevel() < m_master->getLevel()) { bot->GiveLevel(m_master->getLevel()); bot->GetPlayerbotAI()->Levelup(); } }}
开发者ID:natedahl32,项目名称:portalclassic,代码行数:13,
示例9: whilevoid PlayerbotMgr::LogoutAllBots(){ while (true) { PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); if (itr == GetPlayerBotsEnd()) break; if (Player* bot = itr->second) { LogoutPlayerBot(bot->GetObjectGuid()); m_botCount--; } } RemoveAllBotsFromGroup(); ///-> If bot are logging out remove them group}
开发者ID:Jojo2323,项目名称:mangos3,代码行数:14,
示例10: WorldPacketvoid PlayerbotMgr::OnBotLogin(Player* const bot){ // simulate client taking control WorldPacket* const pCMSG_SET_ACTIVE_MOVER = new WorldPacket(CMSG_SET_ACTIVE_MOVER, 8); *pCMSG_SET_ACTIVE_MOVER << bot->GetObjectGuid(); bot->GetSession()->QueuePacket(std::move(std::unique_ptr<WorldPacket>(pCMSG_SET_ACTIVE_MOVER))); WorldPacket* const pMSG_MOVE_FALL_LAND = new WorldPacket(MSG_MOVE_FALL_LAND, 28); *pMSG_MOVE_FALL_LAND << bot->GetMover()->m_movementInfo; bot->GetSession()->QueuePacket(std::move(std::unique_ptr<WorldPacket>(pMSG_MOVE_FALL_LAND))); // give the bot some AI, object is owned by the player class PlayerbotAI* ai = new PlayerbotAI(this, bot); bot->SetPlayerbotAI(ai); // tell the world session that they now manage this new bot m_playerBots[bot->GetObjectGuid()] = bot; // if bot is in a group and master is not in group then // have bot leave their group if (bot->GetGroup() && (m_master->GetGroup() == nullptr || m_master->GetGroup()->IsMember(bot->GetObjectGuid()) == false)) bot->RemoveFromGroup(); // sometimes master can lose leadership, pass leadership to master check const ObjectGuid masterGuid = m_master->GetObjectGuid(); if (m_master->GetGroup() && !m_master->GetGroup()->IsLeader(masterGuid)) { // But only do so if one of the master's bots is leader for (PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); itr != GetPlayerBotsEnd(); itr++) { Player* bot = itr->second; if (m_master->GetGroup()->IsLeader(bot->GetObjectGuid())) { m_master->GetGroup()->ChangeLeader(masterGuid); break; } } }}
开发者ID:cmangos,项目名称:mangos-tbc,代码行数:42,
示例11: OnPlayerLogoutvoid RandomPlayerbotMgr::OnPlayerLogout(Player* player){ for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { Player* const bot = it->second; PlayerbotAI* ai = bot->GetPlayerbotAI(); if (player == ai->GetMaster()) { ai->SetMaster(NULL); ai->ResetStrategies(); } } if (!player->GetPlayerbotAI()) { vector<Player*>::iterator i = find(players.begin(), players.end(), player); if (i != players.end()) players.erase(i); }}
开发者ID:billy1arm,项目名称:serverZero,代码行数:20,
示例12: switchvoid PlayerbotMgr::HandleMasterIncomingPacket(const WorldPacket& packet){ switch (packet.GetOpcode()) { case CMSG_OFFER_PETITION: { WorldPacket p(packet); p.rpos(0); // reset reader ObjectGuid petitionGuid; ObjectGuid playerGuid; uint32 junk; p >> junk; // this is not petition type! p >> petitionGuid; // petition guid p >> playerGuid; // player guid Player* player = ObjectAccessor::FindPlayer(playerGuid); if (!player) return; uint32 petitionLowGuid = petitionGuid.GetCounter(); QueryResult* result = CharacterDatabase.PQuery("SELECT * FROM petition_sign WHERE playerguid = '%u' AND petitionguid = '%u'", player->GetGUIDLow(), petitionLowGuid); if (result) { ChatHandler(m_master).PSendSysMessage("%s has already signed the petition", player->GetName()); delete result; return; } CharacterDatabase.PExecute("INSERT INTO petition_sign (ownerguid,petitionguid, playerguid, player_account) VALUES ('%u', '%u', '%u','%u')", GetMaster()->GetGUIDLow(), petitionLowGuid, player->GetGUIDLow(), GetMaster()->GetSession()->GetAccountId()); p.Initialize(SMSG_PETITION_SIGN_RESULTS, (8 + 8 + 4)); p << ObjectGuid(petitionGuid); p << ObjectGuid(playerGuid); p << uint32(PETITION_SIGN_OK); // close at signer side GetMaster()->GetSession()->SendPacket(p); return; } case CMSG_ACTIVATETAXI: { WorldPacket p(packet); p.rpos(0); // reset reader ObjectGuid guid; std::vector<uint32> nodes; nodes.resize(2); uint8 delay = 9; p >> guid >> nodes[0] >> nodes[1]; // DEBUG_LOG ("[PlayerbotMgr]: HandleMasterIncomingPacket - Received CMSG_ACTIVATETAXI from %d to %d", nodes[0], nodes[1]); for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { delay = delay + 3; Player* const bot = it->second; if (!bot) return; Group* group = bot->GetGroup(); if (!group) continue; Unit* target = ObjectAccessor::GetUnit(*bot, guid); bot->GetPlayerbotAI()->SetIgnoreUpdateTime(delay); bot->GetMotionMaster()->Clear(true); bot->GetMotionMaster()->MoveFollow(target, INTERACTION_DISTANCE, bot->GetOrientation()); bot->GetPlayerbotAI()->GetTaxi(guid, nodes); } return; } case CMSG_ACTIVATETAXIEXPRESS: { WorldPacket p(packet); p.rpos(0); // reset reader ObjectGuid guid; uint32 node_count; uint8 delay = 9; p >> guid; p.read_skip<uint32>(); p >> node_count; std::vector<uint32> nodes; for (uint32 i = 0; i < node_count; ++i) { uint32 node; p >> node; nodes.push_back(node);//.........这里部分代码省略.........
开发者ID:cmangos,项目名称:mangos-tbc,代码行数:101,
示例13: UpdateTimeOutTime//.........这里部分代码省略......... // not expected _player or must checked in packet hanlder (this->*opHandle.handler)(*packet); if (sLog.IsOutDebug() && packet->rpos() < packet->wpos()) LogUnprocessedTail(packet); } break; case STATUS_TRANSFER: if (!_player) LogUnexpectedOpcode(packet, "the player has not logged in yet"); else if (_player->IsInWorld()) LogUnexpectedOpcode(packet, "the player is still in world"); else { (this->*opHandle.handler)(*packet); if (sLog.IsOutDebug() && packet->rpos() < packet->wpos()) LogUnprocessedTail(packet); } break; case STATUS_AUTHED: // prevent cheating with skip queue wait if (m_inQueue) { LogUnexpectedOpcode(packet, "the player not pass queue yet"); break; } // single from authed time opcodes send in to after logout time // and before other STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT opcodes. if (packet->GetOpcode() != CMSG_SET_ACTIVE_VOICE_CHANNEL) m_playerRecentlyLogout = false; (this->*opHandle.handler)(*packet); if (sLog.IsOutDebug() && packet->rpos() < packet->wpos()) LogUnprocessedTail(packet); break; case STATUS_NEVER: /* sLog.outError("SESSION: received not allowed opcode %s (0x%.4X)", LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); */ break; } } catch(ByteBufferException &) { sLog.outError("WorldSession::Update ByteBufferException occured while parsing a packet (opcode: %u) from client %s, accountid=%i. Skipped packet.", packet->GetOpcode(), GetRemoteAddress().c_str(), GetAccountId()); if (sLog.IsOutDebug()) { sLog.outDebug("Dumping error causing packet:"); packet->hexlike(); } } } delete packet; } time_t currTime = time(NULL); ///- If necessary, log the player out if (ShouldLogOut(currTime) && !m_playerLoading) LogoutPlayer(true); //PlayerBot mod - Process player bot packets //The PlayerbotAI class adds to the packet queue to simulate a real player //since Playerbots are known to the World obj only its master's //WorldSession object we need to process all master's bot's packets. for(PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); itr != GetPlayerBotsEnd(); ++itr) { Player *const botPlayer = itr->second; WorldSession *const pBotWorldSession = botPlayer->GetSession(); if(botPlayer->IsBeingTeleportedFar()) { pBotWorldSession->HandleMoveWorldportAckOpcode(); } else if(botPlayer->IsInWorld()) { WorldPacket *packet; while(pBotWorldSession->_recvQueue.next(packet)) { OpcodeHandler &opHandle = opcodeTable[packet->GetOpcode()]; (pBotWorldSession->*opHandle.handler)(*packet); delete packet; } } } ///- Cleanup socket pointer if need if (m_Socket && m_Socket->IsClosed()) { m_Socket->RemoveReference(); m_Socket = NULL; } if (!m_Socket) return false; //Will remove this session from the world session map return true;}
开发者ID:Mferrill,项目名称:BotCore,代码行数:101,
示例14: LogoutPlayer/// %Log the player outvoid WorldSession::LogoutPlayer(bool Save){ if (!_player) return; if (_player->IsMounted()) _player->Unmount(); // PlayerBot mod: log out all playerbots owned by this character //while(!m_playerBots.empty()) // LogoutPlayerBot(m_playerBots.begin()->first, Save); PlayerBotMap m_pBots; uint8 m_botCount = 0; for(PlayerBotMap::const_iterator itr = GetPlayerBotsBegin(); itr != GetPlayerBotsEnd(); ++itr) { Player *bot = itr->second; (m_pBots)[itr->first] = bot; ++m_botCount; } // Create a solo bind for player if player is currently in group in instance with all bots Group *m_Group = _player->GetGroup(); bool rebound = false; if(m_botCount > 0 && m_Group && m_botCount == m_Group->GetMembersCount()-1) if (InstanceSave *save = sInstanceSaveManager.GetInstanceSave(_player->GetInstanceId())) { _player->BindToInstance(save, false); save->SetCanReset(false); rebound = true; } for(PlayerBotMap::const_iterator itr2 = m_pBots.begin(); itr2 != m_pBots.end(); ++itr2) { Player *botPlayer = itr2->second; if (!botPlayer) continue; LogoutPlayerBot(botPlayer->GetGUID(), Save); } if (rebound) _player->m_InstanceValid = true; // finish pending transfers before starting the logout while (_player && _player->IsBeingTeleportedFar()) HandleMoveWorldportAckOpcode(); m_playerLogout = true; m_playerSave = Save; if (_player) { sLFGMgr.Leave(_player); GetPlayer()->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_REMOVED_FROM_QUEUE); GetPlayer()->GetSession()->SendLfgUpdatePlayer(LFG_UPDATETYPE_REMOVED_FROM_QUEUE); GetPlayer()->GetSession()->SendLfgUpdateSearch(false); if (uint64 lguid = GetPlayer()->GetLootGUID()) DoLootRelease(lguid); ///- If the player just died before logging out, make him appear as a ghost //FIXME: logout must be delayed in case lost connection with client in time of combat if (_player->GetDeathTimer()) { _player->getHostileRefManager().deleteReferences(); _player->BuildPlayerRepop(); _player->RepopAtGraveyard(); } else if (!_player->getAttackers().empty()) { _player->CombatStop(); _player->getHostileRefManager().setOnlineOfflineState(false); _player->RemoveAllAurasOnDeath(); // build set of player who attack _player or who have pet attacking of _player std::set<Player*> aset; for (Unit::AttackerSet::const_iterator itr = _player->getAttackers().begin(); itr != _player->getAttackers().end(); ++itr) { Unit* owner = (*itr)->GetOwner(); // including player controlled case if (owner) { if (owner->GetTypeId() == TYPEID_PLAYER) aset.insert(owner->ToPlayer()); } else if ((*itr)->GetTypeId() == TYPEID_PLAYER) aset.insert((Player*)(*itr)); } _player->SetPvPDeath(!aset.empty()); _player->KillPlayer(); _player->BuildPlayerRepop(); _player->RepopAtGraveyard(); // give honor to all attackers from set like group case for (std::set<Player*>::const_iterator itr = aset.begin(); itr != aset.end(); ++itr) (*itr)->RewardHonor(_player,aset.size()); // give bg rewards and update counters like kill by first from attackers // this can't be called for all attackers. if (!aset.empty()) if (BattleGround *bg = _player->GetBattleGround())//.........这里部分代码省略.........
开发者ID:Mferrill,项目名称:BotCore,代码行数:101,
示例15: switchvoid PlayerbotMgr::HandleMasterIncomingPacket(const WorldPacket& packet){ switch (packet.GetOpcode()) { // if master is logging out, log out all bots case CMSG_LOGOUT_REQUEST: { LogoutAllBots(); return; } // If master inspects one of his bots, give the master useful info in chat window // such as inventory that can be equipped case CMSG_INSPECT: { WorldPacket p(packet); p.rpos(0); // reset reader uint64 guid; p >> guid; Player* const bot = GetPlayerBot(guid); if (bot) bot->GetPlayerbotAI()->SendNotEquipList(*bot); return; } // handle emotes from the master //case CMSG_EMOTE: case CMSG_TEXT_EMOTE: { WorldPacket p(packet); p.rpos(0); // reset reader uint32 emoteNum; p >> emoteNum; /* std::ostringstream out; out << "emote is: " << emoteNum; ChatHandler ch(m_master); ch.SendSysMessage(out.str().c_str()); */ switch (emoteNum) { case TEXTEMOTE_BOW: { // Buff anyone who bows before me. Useful for players not in bot's group // How do I get correct target??? //Player* const pPlayer = GetPlayerBot(m_master->GetSelection()); //if (pPlayer->GetPlayerbotAI()->GetClassAI()) // pPlayer->GetPlayerbotAI()->GetClassAI()->BuffPlayer(pPlayer); return; } /* case TEXTEMOTE_BONK: { Player* const pPlayer = GetPlayerBot(m_master->GetSelection()); if (!pPlayer || !pPlayer->GetPlayerbotAI()) return; PlayerbotAI* const pBot = pPlayer->GetPlayerbotAI(); ChatHandler ch(m_master); { std::ostringstream out; out << "time(0): " << time(0) << " m_ignoreAIUpdatesUntilTime: " << pBot->m_ignoreAIUpdatesUntilTime; ch.SendSysMessage(out.str().c_str()); } { std::ostringstream out; out << "m_TimeDoneEating: " << pBot->m_TimeDoneEating << " m_TimeDoneDrinking: " << pBot->m_TimeDoneDrinking; ch.SendSysMessage(out.str().c_str()); } { std::ostringstream out; out << "m_CurrentlyCastingSpellId: " << pBot->m_CurrentlyCastingSpellId; ch.SendSysMessage(out.str().c_str()); } { std::ostringstream out; out << "IsBeingTeleported() " << pBot->GetPlayer()->IsBeingTeleported(); ch.SendSysMessage(out.str().c_str()); } { std::ostringstream out; bool tradeActive = (pBot->GetPlayer()->GetTrader()) ? true : false; out << "tradeActive: " << tradeActive; ch.SendSysMessage(out.str().c_str()); } { std::ostringstream out; out << "IsCharmed() " << pBot->getPlayer()->isCharmed(); ch.SendSysMessage(out.str().c_str()); } return; } */ case TEXTEMOTE_EAT: case TEXTEMOTE_DRINK: { for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) {//.........这里部分代码省略.........
开发者ID:mbb1978,项目名称:mangos,代码行数:101,
示例16: switchvoid PlayerbotMgr::HandleMasterIncomingPacket(const WorldPacket& packet){ switch (packet.GetOpcode()) { case CMSG_ACTIVATETAXI: { WorldPacket p(packet); p.rpos(0); // reset reader ObjectGuid guid; std::vector<uint32> nodes; nodes.resize(2); uint8 delay = 9; p >> guid >> nodes[0] >> nodes[1]; DEBUG_LOG ("[PlayerbotMgr]: HandleMasterIncomingPacket - Received CMSG_ACTIVATETAXI from %d to %d", nodes[0], nodes[1]); for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { delay = delay + 3; Player* const bot = it->second; if (!bot) return; Group* group = bot->GetGroup(); if (!group) continue; Unit *target = ObjectAccessor::GetUnit(*bot, guid); bot->GetPlayerbotAI()->SetIgnoreUpdateTime(delay); bot->GetMotionMaster()->Clear(true); bot->GetMotionMaster()->MoveFollow(target, INTERACTION_DISTANCE, bot->GetOrientation()); bot->GetPlayerbotAI()->GetTaxi(guid, nodes); } return; } case CMSG_ACTIVATETAXIEXPRESS: { WorldPacket p(packet); p.rpos(0); // reset reader ObjectGuid guid; uint32 node_count; uint8 delay = 9; p >> guid; p.read_skip<uint32>(); p >> node_count; std::vector<uint32> nodes; for (uint32 i = 0; i < node_count; ++i) { uint32 node; p >> node; nodes.push_back(node); } if (nodes.empty()) return; DEBUG_LOG ("[PlayerbotMgr]: HandleMasterIncomingPacket - Received CMSG_ACTIVATETAXIEXPRESS from %d to %d", nodes.front(), nodes.back()); for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it) { delay = delay + 3; Player* const bot = it->second; if (!bot) return; Group* group = bot->GetGroup(); if (!group) continue; Unit *target = ObjectAccessor::GetUnit(*bot, guid); bot->GetPlayerbotAI()->SetIgnoreUpdateTime(delay); bot->GetMotionMaster()->Clear(true); bot->GetMotionMaster()->MoveFollow(target, INTERACTION_DISTANCE, bot->GetOrientation()); bot->GetPlayerbotAI()->GetTaxi(guid, nodes); } return; } case CMSG_MOVE_SPLINE_DONE: { DEBUG_LOG ("[PlayerbotMgr]: HandleMasterIncomingPacket - Received CMSG_MOVE_SPLINE_DONE"); WorldPacket p(packet); p.rpos(0); // reset reader ObjectGuid guid; // used only for proper packet read//.........这里部分代码省略.........
开发者ID:natedahl32,项目名称:portalclassic,代码行数:101,
注:本文中的GetPlayerBotsBegin函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetPlayerFlags函数代码示例 C++ GetPlayerBot函数代码示例 |