您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ HandleMoveWorldportAckOpcode函数代码示例

51自学网 2021-06-01 21:25:15
  C++
这篇教程C++ HandleMoveWorldportAckOpcode函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中HandleMoveWorldportAckOpcode函数的典型用法代码示例。如果您正苦于以下问题:C++ HandleMoveWorldportAckOpcode函数的具体用法?C++ HandleMoveWorldportAckOpcode怎么用?C++ HandleMoveWorldportAckOpcode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了HandleMoveWorldportAckOpcode函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: defined

void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/){#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)    sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK.");#endif    HandleMoveWorldportAckOpcode();}
开发者ID:lineagedr,项目名称:azerothcore-wotlk,代码行数:7,


示例2: time

void WorldSession::HandleTeleportTimeout(bool updateInSessions){    // pussywizard: handle teleport ack timeout    if (m_Socket && !m_Socket->IsClosed() && GetPlayer() && GetPlayer()->IsBeingTeleported())    {        time_t currTime = time(NULL);        if (updateInSessions) // session update from World::UpdateSessions        {            if (GetPlayer()->IsBeingTeleportedFar() && GetPlayer()->GetSemaphoreTeleportFar()+sWorld->getIntConfig(CONFIG_TELEPORT_TIMEOUT_FAR) < currTime)                while (GetPlayer() && GetPlayer()->IsBeingTeleportedFar())                    HandleMoveWorldportAckOpcode();        }        else // session update from Map::Update        {            if (GetPlayer()->IsBeingTeleportedNear() && GetPlayer()->GetSemaphoreTeleportNear()+sWorld->getIntConfig(CONFIG_TELEPORT_TIMEOUT_NEAR) < currTime)                while (GetPlayer() && GetPlayer()->IsInWorld() && GetPlayer()->IsBeingTeleportedNear())                {                    Player* plMover = GetPlayer()->m_mover->ToPlayer();                    if (!plMover)                        break;                    WorldPacket pkt(MSG_MOVE_TELEPORT_ACK, 20);                    pkt.append(plMover->GetPackGUID());                    pkt << uint32(0); // flags                    pkt << uint32(0); // time                    HandleMoveTeleportAck(pkt);                }        }    }}
开发者ID:lineagedr,项目名称:azerothcore-wotlk,代码行数:29,


示例3: data

void WorldSession::HandlePlayerLoginOpcode(WorldPacket& recv_data){    ObjectGuid playerGuid;    recv_data >> playerGuid;    Player* pCurrChar = nullptr;    pCurrChar = ObjectAccessor::FindPlayer(playerGuid, false);    WorldPacket data(SMSG_CHARACTER_LOGIN_FAILED, 1);    if (PlayerLoading())    {        sLog.outError("HandlePlayerLoginOpcode> Player try to login again while already in loading stage, AccountId = %u", GetAccountId());        data << (uint8)CHAR_LOGIN_DUPLICATE_CHARACTER;        SendPacket(data, true);        return;    }    if (_player)    {        // player is reconnecting        if (!pCurrChar)        {            sLog.outError("HandlePlayerLoginOpcode> %s try to login a second char, AccountId = %u", _player->GetGuidStr().c_str(), GetAccountId());            data << (uint8)CHAR_LOGIN_DUPLICATE_CHARACTER;            SendPacket(data, true);            return;        }        if (!isLogingOut())        {            sLog.outError("HandlePlayerLoginOpcode> %s try to login again, AccountId = %u", pCurrChar->GetGuidStr().c_str(), GetAccountId());            data << (uint8)CHAR_LOGIN_FAILED;            SendPacket(data, true);            return;        }        if (!_player->IsInWorld())            // finish pending transfers before starting the logout            while (_player && _player->IsBeingTeleportedFar())                HandleMoveWorldportAckOpcode();        HandlePlayerReconnect();        return;    }    DEBUG_LOG("WORLD: Received opcode Player Logon Message");    LoginQueryHolder* holder = new LoginQueryHolder(GetAccountId(), playerGuid);    if (!holder->Initialize())    {        delete holder;                                      // delete all unprocessed queries        m_playerLoading = false;        return;    }    CharacterDatabase.DelayQueryHolder(&chrHandler, &CharacterHandler::HandlePlayerLoginCallback, holder);}
开发者ID:cmangos,项目名称:mangos-classic,代码行数:59,


示例4: HandleMoveWorldportAckOpcode

void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket& recvPacket){    uint8 bit;    uint32 data = 0;    bit = !recvPacket.ReadBit();    if (bit) {        recvPacket >> data;    }    sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK. %u %u %u", recvPacket.size(), bit, data);    HandleMoveWorldportAckOpcode();}
开发者ID:Adeer,项目名称:Patchs,代码行数:12,


示例5: while

// Log the player outvoid WorldSession::LogoutPlayer(bool Save){    // finish pending transfers before starting the logout    while (_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = Save;    if (_player)    {        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((*itr)->ToPlayer());            }            _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())                    bg->HandleKillPlayer(_player,*aset.begin());        }        else if (_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_SHAPESHIFT);            //_player->SetDeathPvP(*); set at SPELL_AURA_SPIRIT_OF_REDEMPTION apply time            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        //drop a flag if player is carrying it        if (BattleGround* bg = _player->GetBattleGround())            bg->EventPlayerLoggedOut(_player);        // Teleport to home if the player is in an invalid instance        if (!_player->m_InstanceValid && !_player->isGameMaster())        {            _player->TeleportToHomebind();            //this is a bad place to call for far teleport because we need player to be in world for successful logout            //maybe we should implement delayed far teleport logout?        }        // FG: finish pending transfers after starting the logout        // this should fix players beeing able to logout and login back with full hp at death position        while (_player->IsBeingTeleportedFar())            HandleMoveWorldportAckOpcode();        sOutdoorPvPMgr.HandlePlayerLeaveZone(_player,_player->GetZoneId());        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)        {            if (int32 bgTypeId = _player->GetBattleGroundQueueId(i))            {                _player->RemoveBattleGroundQueueId(bgTypeId);                sBattleGroundMgr.m_BattleGroundQueues[ bgTypeId ].RemovePlayer(_player->GetGUID(), true);            }        }        // If the player is in a guild, update the guild roster and broadcast a logout message to other guild members        if (Guild *guild = objmgr.GetGuildById(_player->GetGuildId()))        {            guild->LoadPlayerStatsByGuid(_player->GetGUID());//.........这里部分代码省略.........
开发者ID:Regolan,项目名称:blizzlikecore,代码行数:101,


示例6: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool Save){    // finish pending transfers before starting the logout    while(_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = Save;    if (_player)    {        // Playerbot mod: log out all player bots owned by this toon        if (GetPlayer()->GetPlayerbotMgr())            GetPlayer()->GetPlayerbotMgr()->LogoutAllBots();        sLog.outChar("Account: %d (IP: %s) Logout Character:[%s] (guid: %u)", GetAccountId(), GetRemoteAddress().c_str(), _player->GetName() ,_player->GetGUIDLow());        if (ObjectGuid lootGuid = GetPlayer()->GetLootGuid())            DoLootRelease(lootGuid);        ///- 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((Player*)owner);                }                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())                    bg->HandleKillPlayer(_player,*aset.begin());        }        else if(_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_SHAPESHIFT);            //_player->SetDeathPvP(*); set at SPELL_AURA_SPIRIT_OF_REDEMPTION apply time            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->HasPendingBind())        {            _player->RepopAtGraveyard();            _player->SetPendingBind(NULL, 0);        }        //drop a flag if player is carrying it        if(BattleGround *bg = _player->GetBattleGround())            bg->EventPlayerLoggedOut(_player);        ///- Teleport to home if the player is in an invalid instance        if(!_player->m_InstanceValid && !_player->isGameMaster())        {            _player->TeleportToHomebind();            //this is a bad place to call for far teleport because we need player to be in world for successful logout            //maybe we should implement delayed far teleport logout?        }        // FG: finish pending transfers after starting the logout        // this should fix players beeing able to logout and login back with full hp at death position        while(_player->IsBeingTeleportedFar())            HandleMoveWorldportAckOpcode();        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)        {            if(BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i))            {//.........这里部分代码省略.........
开发者ID:Seehub,项目名称:mangos,代码行数:101,


示例7: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool save){    // finish pending transfers before starting the logout    while (_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = save;    if (_player)    {        if (uint64 lguid = _player->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->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->HasPendingBind())        {            _player->RepopAtGraveyard();            _player->SetPendingBind(0, 0);        }        //drop a flag if player is carrying it        if (Battleground* bg = _player->GetBattleground())            bg->EventPlayerLoggedOut(_player);        ///- Teleport to home if the player is in an invalid instance        if (!_player->m_InstanceValid && !_player->IsGameMaster())            _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());        sOutdoorPvPMgr->HandlePlayerLeaveZone(_player, _player->GetZoneId());        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)        {            if (BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i))            {                _player->RemoveBattlegroundQueueId(bgQueueTypeId);                BattlegroundQueue& queue = sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId);                queue.RemovePlayer(_player->GetGUID(), true);            }        }        // Repop at GraveYard or other player far teleport will prevent saving player because of not present map        // Teleport player immediately for correct player save        while (_player->IsBeingTeleportedFar())            HandleMoveWorldportAckOpcode();        ///- If the player is in a guild, update the guild roster and broadcast a logout message to other guild members        if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId()))            guild->HandleMemberLogout(this);        ///- Remove pet        _player->RemovePet(NULL, PET_SAVE_AS_CURRENT, true);        ///- Clear whisper whitelist        _player->ClearWhisperWhiteList();        ///- empty buyback items and save the player in the database        // some save parts only correctly work in case player present in map/player_lists (pets, etc)        if (save)        {            uint32 eslot;            for (int j = BUYBACK_SLOT_START; j < BUYBACK_SLOT_END; ++j)            {                eslot = j - BUYBACK_SLOT_START;                _player->SetUInt64Value(PLAYER_FIELD_VENDORBUYBACK_SLOT_1 + (eslot * 2), 0);                _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0);                _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, 0);            }            _player->SaveToDB();        }        ///- Leave all channels before player delete...        _player->CleanupChannels();        ///- If the player is in a group (or invited), remove him. If the group if then only 1 person, disband the group.        _player->UninviteFromGroup();        // remove player from the group if he is:        // a) in group; b) not in raid group; c) logging out normally (not being kicked or disconnected)        if (_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && m_Socket)            _player->RemoveFromGroup();        //! Send update to group and reset stored max enchanting level        if (_player->GetGroup())//.........这里部分代码省略.........
开发者ID:Viper2209,项目名称:Alive.TC.434,代码行数:101,


示例8: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool save){    // finish pending transfers before starting the logout    while (_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = save;    if (_player)    {        if (uint64 lguid = _player->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->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->HasPendingBind())        {            _player->RepopAtGraveyard();            _player->SetPendingBind(0, 0);        }        // pussywizard: leave whole bg on logout (character stays ingame when necessary)        // pussywizard: GetBattleground() checked inside        _player->LeaveBattleground();        // pussywizard: checked first time        if (!_player->IsBeingTeleportedFar() && !_player->m_InstanceValid && !_player->IsGameMaster())            _player->RepopAtGraveyard();        sOutdoorPvPMgr->HandlePlayerLeaveZone(_player, _player->GetZoneId());        // pussywizard: remove from battleground queues on logout        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)            if (BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i))            {                _player->RemoveBattlegroundQueueId(bgQueueTypeId);                sBattlegroundMgr->GetBattlegroundQueue(bgQueueTypeId).RemovePlayer(_player->GetGUID(), false, i);                // track if player logs out after invited to join BG                if(_player->IsInvitedForBattlegroundInstance() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS))                {                    PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK);                    stmt->setUInt32(0, _player->GetGUIDLow());                    stmt->setUInt8(1, BG_DESERTION_TYPE_INVITE_LOGOUT);                    CharacterDatabase.Execute(stmt);                }            }        ///- If the player is in a guild, update the guild roster and broadcast a logout message to other guild members        if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId()))            guild->HandleMemberLogout(this);        ///- Remove pet        _player->RemovePet(NULL, PET_SAVE_AS_CURRENT);        // pussywizard: on logout remove auras that are removed at map change (before saving to db)        // there are some positive auras from boss encounters that can be kept by logging out and logging in after boss is dead, and may be used on next bosses        _player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CHANGE_MAP);        ///- If the player is in a group (or invited), remove him. If the group if then only 1 person, disband the group.        _player->UninviteFromGroup();        // remove player from the group if he is:        // a) in group; b) not in raid group; c) logging out normally (not being kicked or disconnected)        if (_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && !_player->GetGroup()->isLFGGroup() && m_Socket)            _player->RemoveFromGroup();        // pussywizard: checked second time after being removed from a group        if (!_player->IsBeingTeleportedFar() && !_player->m_InstanceValid && !_player->IsGameMaster())            _player->RepopAtGraveyard();        // Repop at GraveYard or other player far teleport will prevent saving player because of not present map        // Teleport player immediately for correct player save        while (_player && _player->IsBeingTeleportedFar())            HandleMoveWorldportAckOpcode();        ///- empty buyback items and save the player in the database        // some save parts only correctly work in case player present in map/player_lists (pets, etc)        SavingSystemMgr::InsertToSavingSkipListIfNeeded(_player->GetNextSave()); // pussywizard        if (save)        {            uint32 eslot;            for (int j = BUYBACK_SLOT_START; j < BUYBACK_SLOT_END; ++j)            {                eslot = j - BUYBACK_SLOT_START;//.........这里部分代码省略.........
开发者ID:lineagedr,项目名称:azerothcore-wotlk,代码行数:101,


示例9: DEBUG_LOG

void WorldSession::HandleMoveWorldportAckOpcode( WorldPacket & /*recv_data*/ ){    DEBUG_LOG( "WORLD: got MSG_MOVE_WORLDPORT_ACK." );    HandleMoveWorldportAckOpcode();}
开发者ID:daemonaps,项目名称:mangoszero,代码行数:5,


示例10: TC_LOG_DEBUG

void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/){    TC_LOG_DEBUG("network", "WORLD: got MSG_MOVE_WORLDPORT_ACK.");    HandleMoveWorldportAckOpcode();}
开发者ID:AwkwardDev,项目名称:TinyCore,代码行数:5,


示例11: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool Save){    // fix exploit with Aura Bind Sight    _player->StopCastingBindSight();    _player->StopCastingCharm();    _player->RemoveAurasByType(SPELL_AURA_BIND_SIGHT);    // finish pending transfers before starting the logout    while (_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = Save;    if (_player)    {        if (uint64 lguid = _player->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())        {            // 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 && owner->GetTypeId() == TYPEID_PLAYER)                    aset.insert(owner->ToPlayer());                else if ((*itr)->GetTypeId() == TYPEID_PLAYER)                    aset.insert((Player*)(*itr));            }            // CombatStop() method is removing all attackers from the AttackerSet            // That is why it must be AFTER building current set of attackers            _player->CombatStop();            _player->getHostileRefManager().setOnlineOfflineState(false);            _player->RemoveAllAurasOnDeath();            _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())                    bg->HandleKillPlayer(_player, *aset.begin());        }        else if (_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->HasPendingBind())        {            _player->RepopAtGraveyard();            _player->SetPendingBind(0, 0);        }        else if (_player->GetVehicleBase() && _player->isInCombat())        {            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->isInCombat() && sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_NORMAL && _player->IsPvP())        {            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        //drop a flag if player is carrying it        if (Battleground* bg = _player->GetBattleground())            bg->EventPlayerLoggedOut(_player);        ///- Teleport to home if the player is in an invalid instance        if (!_player->m_InstanceValid && !_player->isGameMaster())            _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());        sOutdoorPvPMgr->HandlePlayerLeaveZone(_player, _player->GetZoneId());        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)        {            if (BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i))//.........这里部分代码省略.........
开发者ID:Expery,项目名称:Core,代码行数:101,


示例12: LogoutPlayerBot

/// %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,


示例13: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool Save){    // finish pending transfers before starting the logout    while (_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = Save;    if (_player)    {#ifdef BUILD_PLAYERBOT        // Log out all player bots owned by this toon        if (_player->GetPlayerbotMgr())            _player->GetPlayerbotMgr()->LogoutAllBots();#endif        sLog.outChar("Account: %d (IP: %s) Logout Character:[%s] (guid: %u)", GetAccountId(), GetRemoteAddress().c_str(), _player->GetName(), _player->GetGUIDLow());        if (Loot* loot = sLootMgr.GetLoot(_player))            loot->Release(_player);        if (_player->GetDeathTimer())        {            _player->getHostileRefManager().deleteReferences();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_SHAPESHIFT);            //_player->SetDeathPvP(*); set at SPELL_AURA_SPIRIT_OF_REDEMPTION apply time            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->isInCombat())            _player->CombatStop(true, true);        // drop a flag if player is carrying it        if (BattleGround* bg = _player->GetBattleGround())            bg->EventPlayerLoggedOut(_player);        ///- Teleport to home if the player is in an invalid instance        if (!_player->m_InstanceValid && !_player->isGameMaster())        {            _player->TeleportToHomebind();            // this is a bad place to call for far teleport because we need player to be in world for successful logout            // maybe we should implement delayed far teleport logout?        }        // FG: finish pending transfers after starting the logout        // this should fix players beeing able to logout and login back with full hp at death position        while (_player->IsBeingTeleportedFar())            HandleMoveWorldportAckOpcode();        for (int i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)        {            if (BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i))            {                _player->RemoveBattleGroundQueueId(bgQueueTypeId);                sBattleGroundMgr.m_BattleGroundQueues[ bgQueueTypeId ].RemovePlayer(_player->GetObjectGuid(), true);            }        }        ///- Reset the online field in the account table        // no point resetting online in character table here as Player::SaveToDB() will set it to 1 since player has not been removed from world at this stage        // No SQL injection as AccountID is uint32        static SqlStatementID id;#ifdef BUILD_PLAYERBOT        if (!_player->GetPlayerbotAI())        {            // Unmodded core code below            SqlStatement stmt = LoginDatabase.CreateStatement(id, "UPDATE account SET active_realm_id = ? WHERE id = ?");            stmt.PExecute(uint32(0), GetAccountId());        }#else        SqlStatement stmt = LoginDatabase.CreateStatement(id, "UPDATE account SET active_realm_id = ? WHERE id = ?");        stmt.PExecute(uint32(0), GetAccountId());#endif        ///- If the player is in a guild, update the guild roster and broadcast a logout message to other guild members        if (Guild* guild = sGuildMgr.GetGuildById(_player->GetGuildId()))        {            if (MemberSlot* slot = guild->GetMemberSlot(_player->GetObjectGuid()))            {                slot->SetMemberStats(_player);                slot->UpdateLogoutTime();            }            guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetObjectGuid(), _player->GetName());        }        ///- Remove pet        _player->RemovePet(PET_SAVE_AS_CURRENT);        ///- empty buyback items and save the player in the database//.........这里部分代码省略.........
开发者ID:MantisLord,项目名称:mangos-tbc,代码行数:101,


示例14: HandleMoveWorldportAckOpcode

void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket& recvPacket){    //sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK. %u %u %u", recvPacket.size(), bit, data);    HandleMoveWorldportAckOpcode();}
开发者ID:cooler-SAI,项目名称:PandaFire,代码行数:6,


示例15: HandleMoveWorldportAckOpcode

void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/){    ;//sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK.");    HandleMoveWorldportAckOpcode();}
开发者ID:Keader,项目名称:Sunwell,代码行数:5,


示例16: HandleMoveWorldportAckOpcode

void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recv_data*/){    sLog->outDebug("WORLD: got MSG_MOVE_WORLDPORT_ACK.");    HandleMoveWorldportAckOpcode();}
开发者ID:CarlosX,项目名称:VoragineCore,代码行数:5,


示例17: HandleMoveWorldportAckOpcode

void WorldSession::HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortResponse& /*packet*/){    HandleMoveWorldportAckOpcode();}
开发者ID:DSlayerMan,项目名称:DraenorCore,代码行数:4,


示例18: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool Save){    // finish pending transfers before starting the logout    while (_player && _player->IsBeingTeleportedFar())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    m_playerSave = Save;    if (_player)    {        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 && 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())                    bg->HandleKillPlayer(_player, *aset.begin());        }        else if (_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (_player->HasPendingBind())        {            _player->RepopAtGraveyard();            _player->SetPendingBind(0, 0);        }        //drop a flag if player is carrying it        if (Battleground* bg = _player->GetBattleground())            bg->EventPlayerLoggedOut(_player);        ///- Teleport to home if the player is in an invalid instance        if (!_player->m_InstanceValid && !_player->isGameMaster())            _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());        sOutdoorPvPMgr->HandlePlayerLeaveZone(_player, _player->GetZoneId());        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)        {            if (BattlegroundQueueTypeId bgQueueTypeId = _player->GetBattlegroundQueueTypeId(i))            {                _player->RemoveBattlegroundQueueId(bgQueueTypeId);                sBattlegroundMgr->m_BattlegroundQueues[ bgQueueTypeId ].RemovePlayer(_player->GetGUID(), true);            }        }        // Repop at GraveYard or other player far teleport will prevent saving player because of not present map        // Teleport player immediately for correct player save        while (_player->IsBeingTeleportedFar())            HandleMoveWorldportAckOpcode();        ///- If the player is in a guild, update the guild roster and broadcast a logout message to other guild members        if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId()))            guild->HandleMemberLogout(this);        ///- Remove pet        _player->RemovePet(NULL, PET_SAVE_AS_CURRENT, true);//.........这里部分代码省略.........
开发者ID:Arthus,项目名称:TrinityCore,代码行数:101,


示例19: while

/// %Log the player outvoid WorldSession::LogoutPlayer(bool Save){    // finish pending transfers before starting the logout    while(_player && _player->IsBeingTeleported())        HandleMoveWorldportAckOpcode();    m_playerLogout = true;    if (_player)    {        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->getHostilRefManager().deleteReferences();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        else if (!_player->getAttackers().empty())        {            _player->CombatStop();            _player->getHostilRefManager().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((Player*)owner);                }                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())                    bg->HandleKillPlayer(_player,*aset.begin());        }        else if(_player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))        {            // this will kill character by SPELL_AURA_SPIRIT_OF_REDEMPTION            _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_SHAPESHIFT);            //_player->SetDeathPvP(*); set at SPELL_AURA_SPIRIT_OF_REDEMPTION apply time            _player->KillPlayer();            _player->BuildPlayerRepop();            _player->RepopAtGraveyard();        }        //drop a flag if player is carrying it        if(BattleGround *bg = _player->GetBattleGround())            bg->EventPlayerLoggedOut(_player);        ///- Teleport to home if the player is in an invalid instance        if(!_player->m_InstanceValid && !_player->isGameMaster())            _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation());        for (int i=0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; i++)        {            if(BattleGroundQueueTypeId bgQueueTypeId = _player->GetBattleGroundQueueTypeId(i))            {                _player->RemoveBattleGroundQueueId(bgQueueTypeId);                sBattleGroundMgr.m_BattleGroundQueues[ bgQueueTypeId ].RemovePlayer(_player->GetGUID(), true);            }        }        ///- Reset the online field in the account table        // no point resetting online in character table here as Player::SaveToDB() will set it to 1 since player has not been removed from world at this stage        //No SQL injection as AccountID is uint32        loginDatabase.PExecute("UPDATE account SET online = 0 WHERE id = '%u'", GetAccountId());        ///- If the player is in a guild, update the guild roster and broadcast a logout message to other guild members        Guild *guild = objmgr.GetGuildById(_player->GetGuildId());        if(guild)        {            guild->LoadPlayerStatsByGuid(_player->GetGUID());            guild->UpdateLogoutTime(_player->GetGUID());            WorldPacket data(SMSG_GUILD_EVENT, (1+1+12+8)); // name limited to 12 in character table.            data<<(uint8)GE_SIGNED_OFF;            data<<(uint8)1;            data<<_player->GetName();//.........这里部分代码省略.........
开发者ID:801616,项目名称:mangos,代码行数:101,



注:本文中的HandleMoveWorldportAckOpcode函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ HandlePlayerLeave函数代码示例
C++ HandleMessage函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。