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

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

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

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

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

示例1: HandlePlayerLeave

bool OPvPCapturePointEP::HandleGossipOption(Player *plr, uint64 guid, uint32 gossipid){    std::map<uint64,uint32>::iterator itr = m_CreatureTypes.find(guid);    if (itr != m_CreatureTypes.end())    {        Creature * cr = m_PvP->GetMap()->GetCreature(guid);        if (!cr)            return true;        if (itr->second == EP_PWT_FLIGHTMASTER)        {            uint32 src = EP_TAXI_NODE[0];            uint32 dst = EP_TAXI_NODE[gossipid+1];            std::vector<uint32> nodes;            nodes.resize(2);            nodes[0] = src;            nodes[1] = dst;            plr->PlayerTalkClass->CloseGossip();            plr->ActivateTaxiPathTo(nodes, 0, cr);            // leave the opvp, seems like moveinlineofsight isn't called when entering a taxi            HandlePlayerLeave(plr);        }        return true;    }    return false;}
开发者ID:wow4all,项目名称:HGCore,代码行数:27,


示例2: switch

bool OPvPCapturePointEP_PWT::HandleGossipOption(Player *plr, uint64 guid, uint32 gossipid){    std::map<uint64,uint32>::iterator itr = m_CreatureTypes.find(guid);    if(itr != m_CreatureTypes.end())    {        Creature * cr = HashMapHolder<Creature>::Find(guid);        if(!cr)            return true;        if(itr->second == EP_PWT_FLIGHTMASTER)        {            uint32 src = EP_PWT_Taxi;            uint32 dst = 0;            switch(gossipid)            {            case 0:                dst = EP_NPT_Taxi;                break;            case 1:                dst = EP_EWT_Taxi;                break;            default:                dst = EP_CGT_Taxi;                break;            }            std::vector<uint32> nodes;            nodes.resize(2);            nodes[0] = src;            nodes[1] = dst;            plr->PlayerTalkClass->CloseGossip();            plr->ActivateTaxiPathTo(nodes, cr);            // leave the opvp, seems like moveinlineofsight isn't called when entering a taxi            HandlePlayerLeave(plr);        }        return true;    }    return false;}
开发者ID:lus5d,项目名称:cwcore,代码行数:39,


示例3: HandlePlayerLeave

bool OPvPCapturePoint::Update(uint32 diff){    if (!m_capturePoint)        return false;    float radius = (float)m_capturePoint->GetGOInfo()->controlZone.radius;    for (uint32 team = 0; team < 2; ++team)    {        for (GuidSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end();)        {            ObjectGuid playerGuid = *itr;            ++itr;            if (Player* player = ObjectAccessor::FindPlayer(playerGuid))                if (!m_capturePoint->IsWithinDistInMap(player, radius) || !player->IsOutdoorPvPActive())                    HandlePlayerLeave(player);        }    }    std::list<Player*> players;    Trinity::AnyPlayerInObjectRangeCheck checker(m_capturePoint, radius);    Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(m_capturePoint, players, checker);    Cell::VisitWorldObjects(m_capturePoint, searcher, radius);    for (std::list<Player*>::iterator itr = players.begin(); itr != players.end(); ++itr)    {        Player* const player = *itr;        if (player->IsOutdoorPvPActive())        {            if (m_activePlayers[player->GetTeamId()].insert(player->GetGUID()).second)                HandlePlayerEnter(*itr);        }    }    // get the difference of numbers    float fact_diff = ((float)m_activePlayers[0].size() - (float)m_activePlayers[1].size()) * diff / OUTDOORPVP_OBJECTIVE_UPDATE_INTERVAL;    if (!fact_diff)        return false;    uint32 Challenger = 0;    float maxDiff = m_maxSpeed * diff;    if (fact_diff < 0)    {        // horde is in majority, but it's already horde-controlled -> no change        if (m_State == OBJECTIVESTATE_HORDE && m_value <= -m_maxValue)            return false;        if (fact_diff < -maxDiff)            fact_diff = -maxDiff;        Challenger = HORDE;    }    else    {        // ally is in majority, but it's already ally-controlled -> no change        if (m_State == OBJECTIVESTATE_ALLIANCE && m_value >= m_maxValue)            return false;        if (fact_diff > maxDiff)            fact_diff = maxDiff;        Challenger = ALLIANCE;    }    float oldValue = m_value;    TeamId oldTeam = m_team;    m_OldState = m_State;    m_value += fact_diff;    if (m_value < -m_minValue) // red    {        if (m_value < -m_maxValue)            m_value = -m_maxValue;        m_State = OBJECTIVESTATE_HORDE;        m_team = TEAM_HORDE;    }    else if (m_value > m_minValue) // blue    {        if (m_value > m_maxValue)            m_value = m_maxValue;        m_State = OBJECTIVESTATE_ALLIANCE;        m_team = TEAM_ALLIANCE;    }    else if (oldValue * m_value <= 0) // grey, go through mid point    {        // if challenger is ally, then n->a challenge        if (Challenger == ALLIANCE)            m_State = OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE;        // if challenger is horde, then n->h challenge        else if (Challenger == HORDE)            m_State = OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE;        m_team = TEAM_NEUTRAL;    }    else // grey, did not go through mid point    {        // old phase and current are on the same side, so one team challenges the other//.........这里部分代码省略.........
开发者ID:Carbenium,项目名称:TrinityCore,代码行数:101,


示例4: HandlePlayerLeave

bool BfCapturePoint::Update(uint32 diff){    if (!m_capturePointGUID)        return false;    if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID))    {        float radius = capturePoint->GetGOInfo()->capturePoint.radius;        for (uint8 team = 0; team < 2; ++team)        {            for (GuidSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end();)            {                if (Player* player = ObjectAccessor::FindPlayer(*itr))                {                    if (!capturePoint->IsWithinDistInMap(player, radius) || !player->IsOutdoorPvPActive())                        itr = HandlePlayerLeave(player);                    else                        ++itr;                }                else                    ++itr;            }        }        std::list<Player*> players;        Trinity::AnyPlayerInObjectRangeCheck checker(capturePoint, radius);        Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(capturePoint, players, checker);        capturePoint->VisitNearbyWorldObject(radius, searcher);        for (std::list<Player*>::iterator itr = players.begin(); itr != players.end(); ++itr)            if ((*itr)->IsOutdoorPvPActive())                if (m_activePlayers[(*itr)->GetTeamId()].insert((*itr)->GetGUID()).second)                    HandlePlayerEnter(*itr);    }    // get the difference of numbers    float fact_diff = ((float) m_activePlayers[0].size() - (float) m_activePlayers[1].size()) * diff / BATTLEFIELD_OBJECTIVE_UPDATE_INTERVAL;    if (G3D::fuzzyEq(fact_diff, 0.0f))        return false;    uint32 Challenger = 0;    float maxDiff = m_maxSpeed * diff;    if (fact_diff < 0)    {        // horde is in majority, but it's already horde-controlled -> no change        if (m_State == BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE && m_value <= -m_maxValue)            return false;        if (fact_diff < -maxDiff)            fact_diff = -maxDiff;        Challenger = HORDE;    }    else    {        // ally is in majority, but it's already ally-controlled -> no change        if (m_State == BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE && m_value >= m_maxValue)            return false;        if (fact_diff > maxDiff)            fact_diff = maxDiff;        Challenger = ALLIANCE;    }    float oldValue = m_value;    TeamId oldTeam = m_team;    m_OldState = m_State;    m_value += fact_diff;    if (m_value < -m_minValue)                              // red    {        if (m_value < -m_maxValue)            m_value = -m_maxValue;        m_State = BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE;        m_team = TEAM_HORDE;    }    else if (m_value > m_minValue)                          // blue    {        if (m_value > m_maxValue)            m_value = m_maxValue;        m_State = BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE;        m_team = TEAM_ALLIANCE;    }    else if (oldValue * m_value <= 0)                       // grey, go through mid point    {        // if challenger is ally, then n->a challenge        if (Challenger == ALLIANCE)            m_State = BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE;        // if challenger is horde, then n->h challenge        else if (Challenger == HORDE)            m_State = BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE;        m_team = TEAM_NEUTRAL;    }    else                                                    // grey, did not go through mid point    {//.........这里部分代码省略.........
开发者ID:Regigicas,项目名称:TrinityCore434,代码行数:101,



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


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