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

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

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

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

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

示例1: BG_AB_Nodes

/* Invoked if a player used a banner as a gameobject */void BattleGroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* target_obj){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 event = (sBattleGroundMgr.GetGameObjectEventIndex(target_obj->GetGUIDLow())).event1;    if (event >= BG_AB_NODES_MAX)                           // not a node        return;    BG_AB_Nodes node = BG_AB_Nodes(event);    BattleGroundTeamIndex teamIndex = GetTeamIndexByTeamId(source->GetTeam());    // Check if player really could use this banner, not cheated    if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node] % 2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    // TODO in the following code we should restructure a bit to avoid    // duplication (or maybe write functions?)    // If node is neutral, change to contested    if (m_Nodes[node] == BG_AB_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + 1;        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        if (teamIndex == 0)            SendMessage2ToAll(LANG_BG_AB_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node), LANG_BG_ALLY);        else            SendMessage2ToAll(LANG_BG_AB_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node), LANG_BG_HORDE);        sound = BG_AB_SOUND_NODE_CLAIMED;    }    // If node is contested    else if ((m_Nodes[node] == BG_AB_NODE_STATUS_ALLY_CONTESTED) || (m_Nodes[node] == BG_AB_NODE_STATUS_HORDE_CONTESTED))    {        // If last state is NOT occupied, change node to enemy-contested        if (m_prevNodes[node] < BG_AB_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;            // create new contested banner            _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        // If contested, change back to occupied        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_OCCUPIED;            // create new occupied banner            _CreateBanner(node, BG_AB_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = 0;            _NodeOccupied(node, (teamIndex == BG_TEAM_ALLIANCE) ? ALLIANCE : HORDE);            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_AB_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_AB_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        sound = (teamIndex == BG_TEAM_ALLIANCE) ? BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE : BG_AB_SOUND_NODE_ASSAULTED_HORDE;    }    // If node is occupied, change to enemy-contested    else    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        if (teamIndex == BG_TEAM_ALLIANCE)            SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));        else            SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        sound = (teamIndex == BG_TEAM_ALLIANCE) ? BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE : BG_AB_SOUND_NODE_ASSAULTED_HORDE;    }    // If node is occupied again, send "X has taken the Y" msg.    if (m_Nodes[node] >= BG_AB_NODE_TYPE_OCCUPIED)    {//.........这里部分代码省略.........
开发者ID:CodeBabyOne,项目名称:server-1,代码行数:101,


示例2: GetBgMap

/* Invoked if a player used a banner as a gameobject */void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*target_obj*/){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 node = BG_AB_NODE_STABLES;    GameObject* obj = GetBgMap()->GetGameObject(BgObjects[node*8+7]);    while ((node < BG_AB_DYNAMIC_NODES_COUNT) && ((!obj) || (!source->IsWithinDistInMap(obj, 10))))    {        ++node;        obj = GetBgMap()->GetGameObject(BgObjects[node*8+BG_AB_OBJECT_AURA_CONTESTED]);    }    if (node == BG_AB_DYNAMIC_NODES_COUNT)    {        // this means our player isn't close to any of banners - maybe cheater ??        return;    }    TeamId teamIndex = GetTeamIndexByTeamId(source->GetTeam());    // Check if player really could use this banner, not cheated    if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node]%2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    // If node is neutral, change to contested    if (m_Nodes[node] == BG_AB_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + 1;        // burn current neutral banner        _DelBanner(node, BG_AB_NODE_TYPE_NEUTRAL, 0);        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        // FIXME: team and node names not localized        if (teamIndex == 0)            SendMessage2ToAll(LANG_BG_AB_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node), LANG_BG_AB_ALLY);        else            SendMessage2ToAll(LANG_BG_AB_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node), LANG_BG_AB_HORDE);        sound = BG_AB_SOUND_NODE_CLAIMED;    }    // If node is contested    else if ((m_Nodes[node] == BG_AB_NODE_STATUS_ALLY_CONTESTED) || (m_Nodes[node] == BG_AB_NODE_STATUS_HORDE_CONTESTED))    {        // If last state is NOT occupied, change node to enemy-contested        if (m_prevNodes[node] < BG_AB_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;            // burn current contested banner            _DelBanner(node, BG_AB_NODE_TYPE_CONTESTED, !teamIndex);            // create new contested banner            _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;            // FIXME: node names not localized            if (teamIndex == TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        // If contested, change back to occupied        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_OCCUPIED;            // burn current contested banner            _DelBanner(node, BG_AB_NODE_TYPE_CONTESTED, !teamIndex);            // create new occupied banner            _CreateBanner(node, BG_AB_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = 0;            _NodeOccupied(node, (teamIndex == TEAM_ALLIANCE) ? ALLIANCE:HORDE);            // FIXME: node names not localized            if (teamIndex == TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_AB_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_AB_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        sound = (teamIndex == TEAM_ALLIANCE) ? BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE : BG_AB_SOUND_NODE_ASSAULTED_HORDE;    }    // If node is occupied, change to enemy-contested    else    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;        // burn current occupied banner//.........这里部分代码省略.........
开发者ID:BlackWolfsDen,项目名称:BW_Eluna_Trinity_Cata_4.3.4,代码行数:101,


示例3: GetTeamIndexByTeamId

void BattleGroundAV::HandleQuestComplete(uint32 questid, Player *player){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 team = GetTeamIndexByTeamId(player->GetTeam());    uint32 reputation = 0;                                  // reputation for the whole team (other reputation must be done in db)    // TODO add events (including quest not available anymore, next quest availabe, go/npc de/spawning)    sLog.outError("BattleGroundAV: Quest %i completed", questid);    switch(questid)    {        case BG_AV_QUEST_A_SCRAPS1:        case BG_AV_QUEST_A_SCRAPS2:        case BG_AV_QUEST_H_SCRAPS1:        case BG_AV_QUEST_H_SCRAPS2:            m_Team_QuestStatus[team][0] += 20;            reputation = 1;            if( m_Team_QuestStatus[team][0] == 500 || m_Team_QuestStatus[team][0] == 1000 || m_Team_QuestStatus[team][0] == 1500 ) //25,50,75 turn ins            {                sLog.outDebug("BattleGroundAV: Quest %i completed starting with unit upgrading..", questid);                for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i)                    if (m_Nodes[i].Owner == team && m_Nodes[i].State == POINT_CONTROLLED)                        PopulateNode(i);            }            break;        case BG_AV_QUEST_A_COMMANDER1:        case BG_AV_QUEST_H_COMMANDER1:            m_Team_QuestStatus[team][1]++;            reputation = 1;            if (m_Team_QuestStatus[team][1] == 120)                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);            break;        case BG_AV_QUEST_A_COMMANDER2:        case BG_AV_QUEST_H_COMMANDER2:            m_Team_QuestStatus[team][2]++;            reputation = 2;            if (m_Team_QuestStatus[team][2] == 60)                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);            break;        case BG_AV_QUEST_A_COMMANDER3:        case BG_AV_QUEST_H_COMMANDER3:            m_Team_QuestStatus[team][3]++;            reputation = 5;            RewardReputationToTeam(team, 1, player->GetTeam());            if (m_Team_QuestStatus[team][1] == 30)                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);            break;        case BG_AV_QUEST_A_BOSS1:        case BG_AV_QUEST_H_BOSS1:            m_Team_QuestStatus[team][4] += 4;               // there are 2 quests where you can turn in 5 or 1 item.. ( + 4 cause +1 will be done some lines below)            reputation = 4;        case BG_AV_QUEST_A_BOSS2:        case BG_AV_QUEST_H_BOSS2:            m_Team_QuestStatus[team][4]++;            reputation += 1;            if (m_Team_QuestStatus[team][4] >= 200)                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);            break;        case BG_AV_QUEST_A_NEAR_MINE:        case BG_AV_QUEST_H_NEAR_MINE:            m_Team_QuestStatus[team][5]++;            reputation = 2;            if (m_Team_QuestStatus[team][5] == 28)            {                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);                if (m_Team_QuestStatus[team][6] == 7)                    sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here - ground assault ready", questid);            }            break;        case BG_AV_QUEST_A_OTHER_MINE:        case BG_AV_QUEST_H_OTHER_MINE:            m_Team_QuestStatus[team][6]++;            reputation = 3;            if (m_Team_QuestStatus[team][6] == 7)            {                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);                if (m_Team_QuestStatus[team][5] == 20)                    sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here - ground assault ready", questid);            }            break;        case BG_AV_QUEST_A_RIDER_HIDE:        case BG_AV_QUEST_H_RIDER_HIDE:            m_Team_QuestStatus[team][7]++;            reputation = 1;            if (m_Team_QuestStatus[team][7] == 25)            {                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);                if (m_Team_QuestStatus[team][8] == 25)                    sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here - rider assault ready", questid);            }            break;        case BG_AV_QUEST_A_RIDER_TAME:        case BG_AV_QUEST_H_RIDER_TAME:            m_Team_QuestStatus[team][8]++;            reputation = 1;            if (m_Team_QuestStatus[team][8] == 25)            {                sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here", questid);                if (m_Team_QuestStatus[team][7] == 25)                    sLog.outDebug("BattleGroundAV: Quest %i completed (need to implement some events here - rider assault ready", questid);            }//.........这里部分代码省略.........
开发者ID:Sanzzes,项目名称:wopc-core,代码行数:101,


示例4: GetTeamIndexByTeamId

void BattleGroundSA::EventPlayerDamageGO(Player *player, GameObject* target_obj, uint32 eventId){    BattleGroundTeamIndex teamIndex = GetTeamIndexByTeamId(player->GetTeam());    uint32 type = NULL;    switch (target_obj->GetEntry())    {        case BG_SA_GO_GATES_ROOM_ANCIENT_SHRINE:        {            type = BG_SA_GO_GATES_T_ROOM_ANCIENT_SHRINE;            switch (eventId)            {                case 21630:                    if (!GateRoomAncientShrineDamaged)                    {                        SendMessageSA(player, BG_SA_ATTACK, _GatesName(target_obj));                        GateRoomAncientShrineDamaged = true;                    }                    break;                case 19836:                    // SendMessageSA(player, BG_SA_DAMAGE, _GatesName(target_obj));                    SendWarningToAllSA(NULL, NULL, TEAM_NONE, true, type);                    UpdateWorldState(BG_SA_GateStatus[type], GateStatus[type] = BG_SA_GO_GATES_DAMAGE);                    break;                case 19837:                    // SendMessageSA(player, BG_SA_DESTROY, _GatesName(target_obj));                    SendWarningToAllSA(NULL, NULL, TEAM_NONE, true, type, true);                    UpdateWorldState(BG_SA_GateStatus[type], GateStatus[type] = BG_SA_GO_GATES_DESTROY);                    UpdatePlayerScore(player, SCORE_GATES_DESTROYED, 1);                    RewardHonorToTeam(100, (teamIndex == 0) ? ALLIANCE:HORDE);                    RewardReputationToTeam((teamIndex == 0) ? 1050:1085, 75, (teamIndex == 0) ? ALLIANCE:HORDE);                    relicGateDestroyed = true;                    break;            }            break;        }        case BG_SA_GO_GATES_GREEN_EMERALD:        {            type = BG_SA_GO_GATES_T_GREEN_EMERALD;            switch (eventId)            {                case 21630:                    if (!GateGreenEmeraldDamaged)                    {                        SendMessageSA(player, BG_SA_ATTACK, _GatesName(target_obj));                        GateGreenEmeraldDamaged = true;                    }                    break;                case 19041:                    // SendMessageSA(player, BG_SA_DAMAGE, _GatesName(target_obj));                    SendWarningToAllSA(NULL, NULL, TEAM_NONE, true, type);                    UpdateWorldState(BG_SA_GateStatus[type], GateStatus[type] = BG_SA_GO_GATES_DAMAGE);                    break;                case 19046:                    // SendMessageSA(player, BG_SA_DESTROY, _GatesName(target_obj));                    SendWarningToAllSA(NULL, NULL, TEAM_NONE, true, type, true);                    UpdateWorldState(BG_SA_GateStatus[type], GateStatus[type] = BG_SA_GO_GATES_DESTROY);                    UpdatePlayerScore(player, SCORE_GATES_DESTROYED, 1);                    RewardHonorToTeam(85, (teamIndex == 0) ? ALLIANCE:HORDE);                    RewardReputationToTeam((teamIndex == 0) ? 1050:1085, 65, (teamIndex == 0) ? ALLIANCE:HORDE);                    break;            }            break;        }        case BG_SA_GO_GATES_BLUE_SAPHIRE:        {            type = BG_SA_GO_GATES_T_BLUE_SAPHIRE;            switch (eventId)            {                case 21630:                    if (!GateBlueSaphireDamaged)                    {                        SendMessageSA(player, BG_SA_ATTACK, _GatesName(target_obj));                        GateBlueSaphireDamaged = true;                    }                   break;                case 19040:                    // SendMessageSA(player, BG_SA_DAMAGE, _GatesName(target_obj));                    SendWarningToAllSA(NULL, NULL, TEAM_NONE, true, type);                    UpdateWorldState(BG_SA_GateStatus[type], GateStatus[type] = BG_SA_GO_GATES_DAMAGE);                    break;                case 19045:                    // SendMessageSA(player, BG_SA_DESTROY, _GatesName(target_obj));                    SendWarningToAllSA(NULL, NULL, TEAM_NONE, true, type, true);                    UpdateWorldState(BG_SA_GateStatus[type], GateStatus[type] = BG_SA_GO_GATES_DESTROY);                    UpdatePlayerScore(player, SCORE_GATES_DESTROYED, 1);                    RewardHonorToTeam(85, (teamIndex == 0) ? ALLIANCE:HORDE);                    RewardReputationToTeam((teamIndex == 0) ? 1050:1085, 65, (teamIndex == 0) ? ALLIANCE:HORDE);                    break;            }            break;        }        case BG_SA_GO_GATES_MAUVE_AMETHYST:        {            type = BG_SA_GO_GATES_T_MAUVE_AMETHYST;            switch (eventId)            {                case 21630:                    if (!GateMauveAmethystDamaged)                    {//.........这里部分代码省略.........
开发者ID:Nedj,项目名称:mangos,代码行数:101,


示例5: SpawnBGObject

void BattlegroundEY::EventTeamCapturedPoint(Player* player, uint32 Point){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint32 Team = player->GetTeam();    SpawnBGObject(m_CapturingPointTypes[Point].DespawnNeutralObjectType, RESPAWN_ONE_DAY);    SpawnBGObject(m_CapturingPointTypes[Point].DespawnNeutralObjectType + 1, RESPAWN_ONE_DAY);    SpawnBGObject(m_CapturingPointTypes[Point].DespawnNeutralObjectType + 2, RESPAWN_ONE_DAY);    if (Team == ALLIANCE)    {        m_TeamPointsCount[TEAM_ALLIANCE]++;        SpawnBGObject(m_CapturingPointTypes[Point].SpawnObjectTypeAlliance, RESPAWN_IMMEDIATELY);        SpawnBGObject(m_CapturingPointTypes[Point].SpawnObjectTypeAlliance + 1, RESPAWN_IMMEDIATELY);        SpawnBGObject(m_CapturingPointTypes[Point].SpawnObjectTypeAlliance + 2, RESPAWN_IMMEDIATELY);    }    else    {        m_TeamPointsCount[TEAM_HORDE]++;        SpawnBGObject(m_CapturingPointTypes[Point].SpawnObjectTypeHorde, RESPAWN_IMMEDIATELY);        SpawnBGObject(m_CapturingPointTypes[Point].SpawnObjectTypeHorde + 1, RESPAWN_IMMEDIATELY);        SpawnBGObject(m_CapturingPointTypes[Point].SpawnObjectTypeHorde + 2, RESPAWN_IMMEDIATELY);    }    //buff isn't respawned    m_PointOwnedByTeam[Point] = Team;    m_PointState[Point] = EY_POINT_UNDER_CONTROL;    if (Team == ALLIANCE)        SendMessageToAll(m_CapturingPointTypes[Point].MessageIdAlliance, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);    else        SendMessageToAll(m_CapturingPointTypes[Point].MessageIdHorde, CHAT_MSG_BG_SYSTEM_HORDE, player);    if (BgCreatures[Point])        DelCreature(Point);    WorldSafeLocsEntry const* sg = NULL;    sg = sWorldSafeLocsStore.LookupEntry(m_CapturingPointTypes[Point].GraveYardId);    if (!sg || !AddSpiritGuide(Point, sg->x, sg->y, sg->z, 3.124139f, GetTeamIndexByTeamId(Team)))        TC_LOG_ERROR("bg.battleground", "BatteGroundEY: Failed to spawn spirit guide! point: %u, team: %u, graveyard_id: %u",            Point, Team, m_CapturingPointTypes[Point].GraveYardId);//    SpawnBGCreature(Point, RESPAWN_IMMEDIATELY);    UpdatePointsIcons(Team, Point);    UpdatePointsCount(Team);    if (Point >= EY_POINTS_MAX)        return;    Creature* trigger = GetBGCreature(Point + 6, false);//0-5 spirit guides    if (!trigger)        trigger = AddCreature(WORLD_TRIGGER, Point+6, BG_EY_TriggerPositions[Point], GetTeamIndexByTeamId(Team));    //add bonus honor aura trigger creature when node is accupied    //cast bonus aura (+50% honor in 25yards)    //aura should only apply to players who have accupied the node, set correct faction for trigger    if (trigger)    {        trigger->setFaction(Team == ALLIANCE ? 84 : 83);        trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);    }}
开发者ID:Ascathor,项目名称:TrinityCore,代码行数:66,


示例6: ClearHordeFlagCarrier

void BattleGroundWS::EventPlayerCapturedFlag(Player* source){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    m_LastCapturedFlagTeam = source->GetTeam();    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    if (source->GetTeam() == ALLIANCE)    {        if (!IsHordeFlagPickedUp())            return;        ClearHordeFlagCarrier();                            // must be before aura remove to prevent 2 events (drop+capture) at the same time        // horde flag in base (but not respawned yet)        m_FlagState[BG_TEAM_HORDE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;        // Drop Horde Flag from Player        source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);        if (m_TeamScores[BG_TEAM_ALLIANCE] < BG_WS_MAX_TEAM_SCORE)            m_TeamScores[BG_TEAM_ALLIANCE] += 1;        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE);        RewardReputationToTeam(890, m_ReputationCapture, ALLIANCE);    }    else    {        if (!IsAllianceFlagPickedUp())            return;        ClearAllianceFlagCarrier();                         // must be before aura remove to prevent 2 events (drop+capture) at the same time        // alliance flag in base (but not respawned yet)        m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;        // Drop Alliance Flag from Player        source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);        if (m_TeamScores[BG_TEAM_HORDE] < BG_WS_MAX_TEAM_SCORE)            m_TeamScores[BG_TEAM_HORDE] += 1;        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_HORDE);        RewardReputationToTeam(889, m_ReputationCapture, HORDE);    }    // for flag capture is reward 2 honorable kills    RewardHonorToTeam(GetBonusHonorFromKill(2), source->GetTeam());    // despawn flags    SpawnEvent(WS_EVENT_FLAG_A, 0, false);    SpawnEvent(WS_EVENT_FLAG_H, 0, false);    if (source->GetTeam() == ALLIANCE)        SendMessageToAll(LANG_BG_WS_CAPTURED_HF, CHAT_MSG_BG_SYSTEM_ALLIANCE, source);    else        SendMessageToAll(LANG_BG_WS_CAPTURED_AF, CHAT_MSG_BG_SYSTEM_HORDE, source);    UpdateFlagState(source->GetTeam(), 1);                  // flag state none    UpdateTeamScore(source->GetTeam());    // only flag capture should be updated    UpdatePlayerScore(source, SCORE_FLAG_CAPTURES, 1);      // +1 flag captures    Team winner = TEAM_NONE;    if (m_TeamScores[BG_TEAM_ALLIANCE] == BG_WS_MAX_TEAM_SCORE)        winner = ALLIANCE;    else if (m_TeamScores[BG_TEAM_HORDE] == BG_WS_MAX_TEAM_SCORE)        winner = HORDE;    if (winner)    {        UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 0);        UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 0);        UpdateWorldState(BG_WS_FLAG_STATE_ALLIANCE, 1);        UpdateWorldState(BG_WS_FLAG_STATE_HORDE, 1);        EndBattleGround(winner);    }    else    {        m_FlagsTimer[GetOtherTeamIndex(GetTeamIndexByTeamId(source->GetTeam()))] = BG_WS_FLAG_RESPAWN_TIME;    }}
开发者ID:Chuck5ta,项目名称:server-4,代码行数:73,


示例7: SetHordeFlagPicker

void BattleGroundWS::EventPlayerCapturedFlag(Player *Source){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    m_LastCapturedFlagTeam = Source->GetTeam();    uint32 winner = 0;    Source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    if(Source->HasAura(BG_WS_FOCUSED_ASSAULT))        Source->RemoveAurasDueToSpell(BG_WS_FOCUSED_ASSAULT);    if (Source->GetTeam() == ALLIANCE)    {        if (!IsHordeFlagPickedup())            return;        SetHordeFlagPicker(0);                              // must be before aura remove to prevent 2 events (drop+capture) at the same time                                                            // horde flag in base (but not respawned yet)        m_FlagState[BG_TEAM_HORDE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;                                                            // Drop Horde Flag from Player        Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);        if (GetTeamScore(ALLIANCE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(ALLIANCE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE);        RewardReputationToTeam(890, m_ReputationCapture, ALLIANCE);    }    else    {        if (!IsAllianceFlagPickedup())            return;        SetAllianceFlagPicker(0);                           // must be before aura remove to prevent 2 events (drop+capture) at the same time                                                            // alliance flag in base (but not respawned yet)        m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;                                                            // Drop Alliance Flag from Player        Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);        if (GetTeamScore(HORDE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(HORDE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_HORDE);        RewardReputationToTeam(889, m_ReputationCapture, HORDE);    }    //for flag capture is reward 2 honorable kills    RewardHonorToTeam(GetBonusHonorFromKill(sWorld.getConfig(CONFIG_UINT32_BONUS_HONOR_FLAG_WSG)), Source->GetTeam());    //flag carrier gets another 2 honorable kills    Source->RewardHonor(NULL, 0, GetBonusHonorFromKill(sWorld.getConfig(CONFIG_UINT32_BONUS_HONOR_FLAG_WSG)));    // despawn flags    SpawnEvent(WS_EVENT_FLAG_A, 0, false);    SpawnEvent(WS_EVENT_FLAG_H, 0, false);    if (Source->GetTeam() == ALLIANCE)        SendMessageToAll(LANG_BG_WS_CAPTURED_HF, CHAT_MSG_BG_SYSTEM_ALLIANCE, Source);    else        SendMessageToAll(LANG_BG_WS_CAPTURED_AF, CHAT_MSG_BG_SYSTEM_HORDE, Source);    UpdateFlagState(Source->GetTeam(), 1);                  // flag state none    UpdateTeamScore(Source->GetTeam());    // only flag capture should be updated    UpdatePlayerScore(Source, SCORE_FLAG_CAPTURES, 1);      // +1 flag captures    if (GetTeamScore(ALLIANCE) == BG_WS_MAX_TEAM_SCORE)        winner = ALLIANCE;    if (GetTeamScore(HORDE) == BG_WS_MAX_TEAM_SCORE)        winner = HORDE;    if (winner)    {        UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 0);        UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 0);        UpdateWorldState(BG_WS_FLAG_STATE_ALLIANCE, 1);        UpdateWorldState(BG_WS_FLAG_STATE_HORDE, 1);        EndBattleGround(winner);    }    else    {        m_FlagsTimer[GetTeamIndexByTeamId(Source->GetTeam()) ? 0 : 1] = BG_WS_FLAG_RESPAWN_TIME;    }}
开发者ID:BuloZB,项目名称:Valhalla-Project,代码行数:80,


示例8: while

void BattleGroundIC::EventPlayerClickedOnFlag(Player *source, GameObject* /*target_obj*/){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 node = BG_IC_NODE_WORKSHOP;    GameObject* obj=GetBgMap()->GetGameObject(m_BgObjects[node*8+7]);    while ( (node < BG_IC_DYNAMIC_NODES_COUNT) && ((!obj) || (!source->IsWithinDistInMap(obj,10))))    {        ++node;        obj=GetBgMap()->GetGameObject(m_BgObjects[node*8+BG_IC_OBJECT_AURA_CONTESTED]);    }    if (node == BG_IC_DYNAMIC_NODES_COUNT)    {        return;    }    BattleGroundTeamId teamIndex = GetTeamIndexByTeamId(source->GetTeam());    if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node]%2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    if (m_Nodes[node] == BG_IC_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + 1;        _DelBanner(node, BG_IC_NODE_TYPE_NEUTRAL, 0);        _CreateBanner(node, BG_IC_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = BG_IC_FLAG_CAPTURING_TIME;        if (teamIndex == 0)            SendMessage2ToAll(LANG_BG_IC_NODE_CLAIMED,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node), LANG_BG_IC_ALLY);        else            SendMessage2ToAll(LANG_BG_IC_NODE_CLAIMED,CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node), LANG_BG_IC_HORDE);        sound = BG_IC_SOUND_NODE_CLAIMED;    }    else if ((m_Nodes[node] == BG_IC_NODE_STATUS_ALLY_CONTESTED) || (m_Nodes[node] == BG_IC_NODE_STATUS_HORDE_CONTESTED))    {        if (m_prevNodes[node] < BG_IC_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_IC_NODE_TYPE_CONTESTED;            _DelBanner(node, BG_IC_NODE_TYPE_CONTESTED, !teamIndex);            _CreateBanner(node, BG_IC_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = BG_IC_FLAG_CAPTURING_TIME;            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_IC_NODE_ASSAULTED,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_IC_NODE_ASSAULTED,CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_IC_NODE_TYPE_OCCUPIED;            _DelBanner(node, BG_IC_NODE_TYPE_CONTESTED, !teamIndex);            _CreateBanner(node, BG_IC_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = 0;            _NodeOccupied(node,(teamIndex == BG_TEAM_ALLIANCE) ? ALLIANCE:HORDE);            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_IC_NODE_DEFENDED,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_IC_NODE_DEFENDED,CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        sound = (teamIndex == BG_TEAM_ALLIANCE) ? BG_IC_SOUND_NODE_ASSAULTED_ALLIANCE : BG_IC_SOUND_NODE_ASSAULTED_HORDE;    }    else    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + BG_IC_NODE_TYPE_CONTESTED;        _DelBanner(node, BG_IC_NODE_TYPE_OCCUPIED, !teamIndex);        _CreateBanner(node, BG_IC_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        _NodeDeOccupied(node);        m_NodeTimers[node] = BG_IC_FLAG_CAPTURING_TIME;        if (teamIndex == BG_TEAM_ALLIANCE)            SendMessage2ToAll(LANG_BG_IC_NODE_ASSAULTED,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));        else            SendMessage2ToAll(LANG_BG_IC_NODE_ASSAULTED,CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        sound = (teamIndex == BG_TEAM_ALLIANCE) ? BG_IC_SOUND_NODE_ASSAULTED_ALLIANCE : BG_IC_SOUND_NODE_ASSAULTED_HORDE;    }    if (m_Nodes[node] >= BG_IC_NODE_TYPE_OCCUPIED)    {        if (teamIndex == BG_TEAM_ALLIANCE)            SendMessage2ToAll(LANG_BG_IC_NODE_TAKEN,CHAT_MSG_BG_SYSTEM_ALLIANCE, NULL, LANG_BG_IC_ALLY, _GetNodeNameId(node));//.........这里部分代码省略.........
开发者ID:Mferrill,项目名称:BotCore,代码行数:101,


示例9: SetHordeFlagPicker

void BattleGroundWS::EventPlayerCapturedFlag(Player *Source){    if(GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 type = 0;    uint32 winner = 0;    const char *message = "";    //TODO FIX reputation and honor gains for low level players!    Source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    if(Source->GetTeam() == ALLIANCE)    {        if (!this->IsHordeFlagPickedup())            return;        SetHordeFlagPicker(0);                              // must be before aura remove to prevent 2 events (drop+capture) at the same time                                                            // horde flag in base (but not respawned yet)        m_FlagState[BG_TEAM_HORDE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;                                                            // Drop Horde Flag from Player        Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);        if(m_FlagDebuffState == 1)          Source->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);        if(m_FlagDebuffState == 2)          Source->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);        message = GetTrinityString(LANG_BG_WS_CAPTURED_HF);        type = CHAT_MSG_BG_SYSTEM_ALLIANCE;        if(GetTeamScore(ALLIANCE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(ALLIANCE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE);        RewardReputationToTeam(890, BG_WSG_Reputation[m_HonorMode][BG_WSG_FLAG_CAP], ALLIANCE);          // +35 reputation        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_FLAG_CAP], ALLIANCE);                    // +40 bonushonor    }    else    {        if (!this->IsAllianceFlagPickedup())            return;        SetAllianceFlagPicker(0);                           // must be before aura remove to prevent 2 events (drop+capture) at the same time                                                            // alliance flag in base (but not respawned yet)        m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;                                                            // Drop Alliance Flag from Player        Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);        if(m_FlagDebuffState == 1)          Source->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);        if(m_FlagDebuffState == 2)          Source->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);        message = GetTrinityString(LANG_BG_WS_CAPTURED_AF);        type = CHAT_MSG_BG_SYSTEM_HORDE;        if(GetTeamScore(HORDE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(HORDE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_HORDE);        RewardReputationToTeam(889, BG_WSG_Reputation[m_HonorMode][BG_WSG_FLAG_CAP], HORDE);             // +35 reputation        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_FLAG_CAP], HORDE);                       // +40 bonushonor    }    SpawnBGObject(BG_WS_OBJECT_H_FLAG, BG_WS_FLAG_RESPAWN_TIME);    SpawnBGObject(BG_WS_OBJECT_A_FLAG, BG_WS_FLAG_RESPAWN_TIME);    WorldPacket data;    ChatHandler::FillMessageData(&data, Source->GetSession(), type, LANG_UNIVERSAL, NULL, Source->GetGUID(), message, NULL);    SendPacketToAll(&data);    UpdateFlagState(Source->GetTeam(), 1);                  // flag state none    UpdateTeamScore(Source->GetTeam());    // only flag capture should be updated    UpdatePlayerScore(Source, SCORE_FLAG_CAPTURES, 1);      // +1 flag captures...    if(GetTeamScore(ALLIANCE) == BG_WS_MAX_TEAM_SCORE)        winner = ALLIANCE;    if(GetTeamScore(HORDE) == BG_WS_MAX_TEAM_SCORE)        winner = HORDE;    if(winner)    {        UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 0);        UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 0);        UpdateWorldState(BG_WS_FLAG_STATE_ALLIANCE, 1);        UpdateWorldState(BG_WS_FLAG_STATE_HORDE, 1);        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_WIN], winner);        EndBattleGround(winner);    }    else    {        m_FlagsTimer[GetTeamIndexByTeamId(Source->GetTeam()) ? 0 : 1] = BG_WS_FLAG_RESPAWN_TIME;    }}
开发者ID:de-dima,项目名称:243,代码行数:88,


示例10: SetHordeFlagPicker

void BattlegroundTP::EventPlayerDroppedFlag(Player *Source){    if (GetStatus() != STATUS_IN_PROGRESS)    {        // if not running, do not cast things at the dropper player (prevent spawning the "dropped" flag), neither send unnecessary messages        // just take off the aura        if (Source->GetTeam() == ALLIANCE)        {            if (!this->IsHordeFlagPickedup())                return;            if (GetHordeFlagPickerGUID() == Source->GetGUID())            {                SetHordeFlagPicker(0);                Source->RemoveAurasDueToSpell(BG_TP_SPELL_HORDE_FLAG);            }        }        else        {            if (!this->IsAllianceFlagPickedup())                return;            if (GetAllianceFlagPickerGUID() == Source->GetGUID())            {                SetAllianceFlagPicker(0);                Source->RemoveAurasDueToSpell(BG_TP_SPELL_ALLIANCE_FLAG);            }        }        return;    }    bool set = false;    if (Source->GetTeam() == ALLIANCE)    {        if (!IsHordeFlagPickedup())            return;        if (GetHordeFlagPickerGUID() == Source->GetGUID())        {            SetHordeFlagPicker(0);            Source->RemoveAurasDueToSpell(BG_TP_SPELL_HORDE_FLAG);            if (m_FlagDebuffState == 1)              Source->RemoveAurasDueToSpell(TP_SPELL_FOCUSED_ASSAULT);            if (m_FlagDebuffState == 2)              Source->RemoveAurasDueToSpell(TP_SPELL_BRUTAL_ASSAULT);            m_FlagState[BG_TEAM_HORDE] = BG_TP_FLAG_STATE_ON_GROUND;            Source->CastSpell(Source, BG_TP_SPELL_HORDE_FLAG_DROPPED, true);            set = true;        }    }    else    {        if (!IsAllianceFlagPickedup())            return;        if (GetAllianceFlagPickerGUID() == Source->GetGUID())        {            SetAllianceFlagPicker(0);            Source->RemoveAurasDueToSpell(BG_TP_SPELL_ALLIANCE_FLAG);            if (m_FlagDebuffState == 1)              Source->RemoveAurasDueToSpell(TP_SPELL_FOCUSED_ASSAULT);            if (m_FlagDebuffState == 2)              Source->RemoveAurasDueToSpell(TP_SPELL_BRUTAL_ASSAULT);            m_FlagState[BG_TEAM_ALLIANCE] = BG_TP_FLAG_STATE_ON_GROUND;            Source->CastSpell(Source, BG_TP_SPELL_ALLIANCE_FLAG_DROPPED, true);            set = true;        }    }    if (set)    {        Source->CastSpell(Source, SPELL_RECENTLY_DROPPED_FLAG, true);        UpdateFlagState(Source->GetTeam(), 1);        if (Source->GetTeam() == ALLIANCE)        {            SendMessageToAll(LANG_BG_TP_DROPPED_HF, CHAT_MSG_BG_SYSTEM_HORDE, Source);            UpdateWorldState(BG_TP_FLAG_UNK_HORDE, uint32(-1));        }        else        {            SendMessageToAll(LANG_BG_TP_DROPPED_AF, CHAT_MSG_BG_SYSTEM_ALLIANCE, Source);            UpdateWorldState(BG_TP_FLAG_UNK_ALLIANCE, uint32(-1));        }        m_FlagsDropTimer[GetTeamIndexByTeamId(Source->GetTeam()) ? 0 : 1] = BG_TP_FLAG_DROP_TIME;    }}
开发者ID:Ranou,项目名称:SkyFireEMU,代码行数:94,


示例11: GetTeamIndexByTeamId

void BattleGroundIC::EventPlayerDamageGO(Player *player, GameObject* target_obj, uint32 eventId, uint32 doneBy){    BattleGroundTeamIndex teamIndex = GetTeamIndexByTeamId(player->GetTeam());    // Seaforium Charge Explosion (A-bomb-inable)    if (doneBy == 66676)        player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, 68366);    // Huge Seaforium Charge Explosion (A-bomb-ination)    if (doneBy == 66672)        player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, 68367);    uint32 type = NULL;    switch (target_obj->GetEntry())    {        case BG_IC_GO_ALLIANCE_GATE_1:        {            type = BG_IC_GO_T_ALLIANCE_GATE_1;            if (eventId == 22082)            {                SendMessage2ToAll(LANG_BG_IC_A_WEST_GATE_DESTROYED, CHAT_MSG_BG_SYSTEM_ALLIANCE, player, doneBy);                UpdateWorldState(BG_IC_GateStatus[type][0], 0);             // needed for removing the old icon                UpdateWorldState(BG_IC_GateStatus[type][1], 1);                GateStatus[type] = BG_IC_GO_GATES_DAMAGE;                   // correct icon is at "damage" state (not flag), not "destroy"                RewardHonorToTeam(85, (teamIndex == 0) ? ALLIANCE:HORDE);                SpawnEvent(IC_EVENT_ADD_A_BOSS, 0, true);                SpawnEvent(IC_EVENT_ADD_A_GUARDS, 0, true);                // prevent closing of the boss gates by destroying another wall gate                if (aOpen == false)                {                    OpenDoorEvent(IC_EVENT_BOSS_A);                    aOpen = true;                }            }            break;        }        case BG_IC_GO_ALLIANCE_GATE_2:        {            type = BG_IC_GO_T_ALLIANCE_GATE_2;            if (eventId == 22078)            {                SendMessage2ToAll(LANG_BG_IC_A_EAST_GATE_DESTROYED, CHAT_MSG_BG_SYSTEM_ALLIANCE, player, doneBy);                UpdateWorldState(BG_IC_GateStatus[type][0], 0);                UpdateWorldState(BG_IC_GateStatus[type][1], 1);                GateStatus[type] = BG_IC_GO_GATES_DAMAGE;                RewardHonorToTeam(85, (teamIndex == 0) ? ALLIANCE:HORDE);                SpawnEvent(IC_EVENT_ADD_A_BOSS, 0, true);                SpawnEvent(IC_EVENT_ADD_A_GUARDS, 0, true);                if (aOpen == false)                {                    OpenDoorEvent(IC_EVENT_BOSS_A);                    aOpen = true;                }            }            break;        }        case BG_IC_GO_ALLIANCE_GATE_3:        {            type = BG_IC_GO_T_ALLIANCE_GATE_3;            if (eventId == 22080)            {                SendMessage2ToAll(LANG_BG_IC_A_FRONT_GATE_DESTROYED, CHAT_MSG_BG_SYSTEM_ALLIANCE, player, doneBy);                UpdateWorldState(BG_IC_GateStatus[type][0], 0);                UpdateWorldState(BG_IC_GateStatus[type][1], 1);                GateStatus[type] = BG_IC_GO_GATES_DAMAGE;                RewardHonorToTeam(85, (teamIndex == 0) ? ALLIANCE:HORDE);                SpawnEvent(IC_EVENT_ADD_A_BOSS, 0, true);                SpawnEvent(IC_EVENT_ADD_A_GUARDS, 0, true);                if (aOpen == false)                {                    OpenDoorEvent(IC_EVENT_BOSS_A);                    aOpen = true;                }            }            break;        }        case BG_IC_GO_HORDE_GATE_1:        {            type = BG_IC_GO_T_HORDE_GATE_1;            if (eventId == 22081)            {                SendMessage2ToAll(LANG_BG_IC_H_WEST_GATE_DESTROYED, CHAT_MSG_BG_SYSTEM_HORDE, player, doneBy);                UpdateWorldState(BG_IC_GateStatus[type][0], 0);                UpdateWorldState(BG_IC_GateStatus[type][1], 1);                GateStatus[type] = BG_IC_GO_GATES_DAMAGE;                RewardHonorToTeam(85, (teamIndex == 0) ? ALLIANCE:HORDE);                SpawnEvent(IC_EVENT_ADD_H_BOSS, 0, true);                SpawnEvent(IC_EVENT_ADD_H_GUARDS, 0, true);                if (hOpen == false)                {                    OpenDoorEvent(IC_EVENT_BOSS_H);                    hOpen = true;                }            }            break;        }//.........这里部分代码省略.........
开发者ID:gc,项目名称:mangos,代码行数:101,


示例12: while

/* Invoked if a player used a banner as a gameobject */void BattleGroundAB::EventPlayerClickedOnFlag(Player *source, GameObject* /*target_obj*/){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 node = BG_AB_NODE_STABLES;    Map * tmpMap = source->GetMap();    GameObject* obj = tmpMap->GetGameObject(m_BgObjects[node*8+7]);    while ((node < BG_AB_DYNAMIC_NODES_COUNT) && ((!obj) || (!source->IsWithinDistInMap(obj,10))))    {        ++node;        obj = tmpMap->GetGameObject(m_BgObjects[node*8+BG_AB_OBJECT_AURA_CONTESTED]);    }    if (node == BG_AB_DYNAMIC_NODES_COUNT)    {        // this means our player isn't close to any of banners - maybe cheater ??        return;    }    uint8 teamIndex = GetTeamIndexByTeamId(source->GetBGTeam());    // Message to chatlog    char buf[256];    uint8 type = (teamIndex == 0) ? CHAT_MSG_BG_SYSTEM_ALLIANCE : CHAT_MSG_BG_SYSTEM_HORDE;    // Check if player really could use this banner, not cheated    if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node]%2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    // If node is neutral, change to contested    if (m_Nodes[node] == BG_AB_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + 1;        // burn current neutral banner        _DelBanner(node, BG_AB_NODE_TYPE_NEUTRAL, 0);        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_CLAIMED), _GetNodeName(node), (teamIndex == 0) ? GetTrinityString(LANG_BG_AB_ALLY) : GetTrinityString(LANG_BG_AB_HORDE));        sound = SOUND_NODE_CLAIMED;        SendObjectiveComplete(BG_AB_CREDITMARKER[node], teamIndex,BG_AB_NodePositions[node][1],BG_AB_NodePositions[node][2]);    }    // If node is contested    else if ((m_Nodes[node] == BG_AB_NODE_STATUS_ALLY_CONTESTED) || (m_Nodes[node] == BG_AB_NODE_STATUS_HORDE_CONTESTED))    {        // If last state is NOT occupied, change node to enemy-contested        if (m_prevNodes[node] < BG_AB_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;            // burn current contested banner            _DelBanner(node, BG_AB_NODE_TYPE_CONTESTED, !teamIndex);            // create new contested banner            _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;            sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_ASSAULTED), _GetNodeName(node));            SendObjectiveComplete(BG_AB_CREDITMARKER[node], teamIndex,BG_AB_NodePositions[node][1],BG_AB_NodePositions[node][2]);        }        // If contested, change back to occupied        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_OCCUPIED;            // burn current contested banner            _DelBanner(node, BG_AB_NODE_TYPE_CONTESTED, !teamIndex);            // create new occupied banner            _CreateBanner(node, BG_AB_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = 0;            _NodeOccupied(node,(teamIndex == 0) ? ALLIANCE:HORDE);            sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_DEFENDED), _GetNodeName(node));        }        sound = (teamIndex == 0) ? SOUND_NODE_ASSAULTED_ALLIANCE : SOUND_NODE_ASSAULTED_HORDE;    }    // If node is occupied, change to enemy-contested    else    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + BG_AB_NODE_TYPE_CONTESTED;        // burn current occupied banner        _DelBanner(node, BG_AB_NODE_TYPE_OCCUPIED, !teamIndex);        // create new contested banner        _CreateBanner(node, BG_AB_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        _NodeDeOccupied(node);        m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME;        sprintf(buf, GetTrinityString(LANG_BG_AB_NODE_ASSAULTED), _GetNodeName(node));        sound = (teamIndex == 0) ? SOUND_NODE_ASSAULTED_ALLIANCE : SOUND_NODE_ASSAULTED_HORDE;        SendObjectiveComplete(BG_AB_CREDITMARKER[node], teamIndex,BG_AB_NodePositions[node][1],BG_AB_NodePositions[node][2]);//.........这里部分代码省略.........
开发者ID:Xadras,项目名称:looking4group-core,代码行数:101,


示例13: GetBgMap

/* Invoked if a player used a banner as a GameObject */void BattlegroundBG::EventPlayerClickedOnFlag(Player* source, GameObject* /*target_obj*/){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 node = GILNEAS_BG_NODE_LIGHTHOUSE;    GameObject* object = GetBgMap()->GetGameObject(BgObjects[node*8+7]);    while ((node < GILNEAS_BG_DYNAMIC_NODES_COUNT) && ((!object) || (!source->IsWithinDistInMap(object, 10))))    {        ++node;        object = GetBgMap()->GetGameObject(BgObjects[node*8+GILNEAS_BG_OBJECT_AURA_CONTESTED]);    }    if (node == GILNEAS_BG_DYNAMIC_NODES_COUNT)    {        sLog->outString("Player %s (GUID: %u) in Battle for Gilneas initiated EventPlayerClickedOnFlag() but is not near of any flag", source->GetName(), source->GetGUIDLow());        // this means our player isn't close to any of banners - maybe cheater ??        return;    }    BattlegroundTeamId teamIndex = GetTeamIndexByTeamId(source->GetTeam());    // Check if player really could use this banner, and has not cheated    if (!(_Nodes[node] == 0 || teamIndex == _Nodes[node]%2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    // If node is neutral, change to contested    if (_Nodes[node] == GILNEAS_BG_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        _prevNodes[node] = _Nodes[node];        _Nodes[node] = teamIndex + 1;        // burn current neutral banner        _DelBanner(node, GILNEAS_BG_NODE_TYPE_NEUTRAL, 0);        // create new contested banner        _CreateBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        _NodeTimers[node] = GILNEAS_BG_FLAG_CAPTURING_TIME;        // FIXME: need to fix Locales for team and node names.        if (teamIndex == 0)            SendMessage2ToAll(LANGUAGE_BG_BG_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node), LANGUAGE_BG_BG_ALLY);        else            SendMessage2ToAll(LANGUAGE_BG_BG_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node), LANGUAGE_BG_BG_HORDE);        sound = GILNEAS_BG_SOUND_NODE_CLAIMED;    }    // If node is contested    else if ((_Nodes[node] == GILNEAS_BG_NODE_STATUS_ALLY_CONTESTED) || (_Nodes[node] == GILNEAS_BG_NODE_STATUS_HORDE_CONTESTED))    {        // If last state is NOT occupied, change node to enemy-contested        if (_prevNodes[node] < GILNEAS_BG_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            _prevNodes[node] = _Nodes[node];            _Nodes[node] = teamIndex + GILNEAS_BG_NODE_TYPE_CONTESTED;            // burn current contested banner            _DelBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, !teamIndex);            // create new contested banner            _CreateBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            _NodeTimers[node] = GILNEAS_BG_FLAG_CAPTURING_TIME;            // FIXME: need to fix Locales for team and node names.            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANGUAGE_BG_BG_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANGUAGE_BG_BG_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        // If contested, change back to occupied        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            _prevNodes[node] = _Nodes[node];            _Nodes[node] = teamIndex + GILNEAS_BG_NODE_TYPE_OCCUPIED;            // burn current contested banner            _DelBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, !teamIndex);            // create new occupied banner            _CreateBanner(node, GILNEAS_BG_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            _NodeTimers[node] = 0;            _NodeOccupied(node, (teamIndex == BG_TEAM_ALLIANCE) ? ALLIANCE:HORDE);            // FIXME: need to fix Locales for team and node names.            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANGUAGE_BG_BG_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANGUAGE_BG_BG_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node));        }        sound = (teamIndex == BG_TEAM_ALLIANCE) ? GILNEAS_BG_SOUND_NODE_ASSAULTED_ALLIANCE : GILNEAS_BG_SOUND_NODE_ASSAULTED_HORDE;    }//.........这里部分代码省略.........
开发者ID:Asandru,项目名称:Script-Land,代码行数:101,


示例14: SetHordeFlagPicker

void BattlegroundWS::EventPlayerCapturedFlag(Player* player){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint32 winner = 0;    player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    if (player->GetTeam() == ALLIANCE)    {        if (!IsHordeFlagPickedup())            return;        SetHordeFlagPicker(0);                              // must be before aura remove to prevent 2 events (drop+capture) at the same time        // horde flag in base (but not respawned yet)        _flagState[TEAM_HORDE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;        // Drop Horde Flag from Player        player->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG);        if (_flagDebuffState == 1)            player->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);        else if (_flagDebuffState == 2)            player->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);        if (GetTeamScore(TEAM_ALLIANCE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(ALLIANCE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE);    }    else    {        if (!IsAllianceFlagPickedup())            return;        SetAllianceFlagPicker(0);                           // must be before aura remove to prevent 2 events (drop+capture) at the same time        // alliance flag in base (but not respawned yet)        _flagState[TEAM_ALLIANCE] = BG_WS_FLAG_STATE_WAIT_RESPAWN;        // Drop Alliance Flag from Player        player->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG);        if (_flagDebuffState == 1)            player->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT);        else if (_flagDebuffState == 2)            player->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT);        if (GetTeamScore(TEAM_HORDE) < BG_WS_MAX_TEAM_SCORE)            AddPoint(HORDE, 1);        PlaySoundToAll(BG_WS_SOUND_FLAG_CAPTURED_HORDE);    }    RewardReputationToTeam(890, 889, m_ReputationCapture, player->GetTeam());    //for flag capture is reward 2 honorable kills    RewardHonorToTeam(GetBonusHonorFromKill(2), player->GetTeam());    SpawnBGObject(BG_WS_OBJECT_H_FLAG, BG_WS_FLAG_RESPAWN_TIME);    SpawnBGObject(BG_WS_OBJECT_A_FLAG, BG_WS_FLAG_RESPAWN_TIME);    if (player->GetTeam() == ALLIANCE)        SendMessageToAll(LANG_BG_WS_CAPTURED_HF, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);    else        SendMessageToAll(LANG_BG_WS_CAPTURED_AF, CHAT_MSG_BG_SYSTEM_HORDE, player);    UpdateFlagState(player->GetTeam(), 1);                  // flag state none    UpdateTeamScore(player->GetTeamId());    // only flag capture should be updated    UpdatePlayerScore(player, SCORE_FLAG_CAPTURES, 1);      // +1 flag captures    // update last flag capture to be used if teamscore is equal    SetLastFlagCapture(player->GetTeam());    if (GetTeamScore(TEAM_ALLIANCE) == BG_WS_MAX_TEAM_SCORE)        winner = ALLIANCE;    if (GetTeamScore(TEAM_HORDE) == BG_WS_MAX_TEAM_SCORE)        winner = HORDE;    if (winner)    {        UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 0);        UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 0);        UpdateWorldState(BG_WS_FLAG_STATE_ALLIANCE, 1);        UpdateWorldState(BG_WS_FLAG_STATE_HORDE, 1);        UpdateWorldState(BG_WS_STATE_TIMER_ACTIVE, 0);        RewardHonorToTeam(BG_WSG_Honor[m_HonorMode][BG_WSG_WIN], winner);        EndBattleground(winner);    }    else    {        _flagsTimer[GetTeamIndexByTeamId(player->GetTeam()) ? 0 : 1] = BG_WS_FLAG_RESPAWN_TIME;    }}
开发者ID:cristal,项目名称:Core,代码行数:86,


示例15: BG_SA_GraveYard

void BattleGroundSA::EventPlayerClickedOnFlag(Player *source, GameObject* target_obj){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 event = (sBattleGroundMgr.GetGameObjectEventIndex(target_obj->GetGUIDLow())).event1;    if (event >= BG_SA_GRY_MAX) // not a node        return;    BG_SA_GraveYard gyd = BG_SA_GraveYard(event);    BattleGroundTeamIndex teamIndex = GetTeamIndexByTeamId(source->GetTeam());    // Check if player really could use this banner, not cheated    if (!(m_Gyd[gyd] == 0 || teamIndex == m_Gyd[gyd] % 2))        return;    uint32 sound = 0;    if ((m_Gyd[gyd] == BG_SA_GARVE_STATUS_ALLY_CONTESTED) || (m_Gyd[gyd] == BG_SA_GARVE_STATUS_HORDE_CONTESTED))    {        // If last state is NOT occupied, change node to enemy-contested        if (m_prevGyd[gyd] < BG_SA_GARVE_TYPE_OCCUPIED)        {            //UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevGyd[gyd] = m_Gyd[gyd];            m_Gyd[gyd] = teamIndex + BG_SA_GARVE_TYPE_CONTESTED;            // create new contested banner            _CreateBanner(gyd, BG_SA_GARVE_TYPE_CONTESTED, teamIndex, true);            //_SendNodeUpdate(node);            m_GydTimers[gyd] = BG_SA_FLAG_CAPTURING_TIME;            if (teamIndex == BG_TEAM_ALLIANCE)            {                // SendMessage2ToAll(LANG_BG_SA_AH_PRECIPITATES_GRAVEYARD,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, LANG_BG_ALLY, _GydName(gyd));                SendWarningToAllSA(gyd, STATUS_CLAIMED, ALLIANCE);            }            else            {                // SendMessage2ToAll(LANG_BG_SA_AH_PRECIPITATES_GRAVEYARD,CHAT_MSG_BG_SYSTEM_HORDE, source, LANG_BG_HORDE, _GydName(gyd));                SendWarningToAllSA(gyd, STATUS_CLAIMED, HORDE);            }        }        // If contested, change back to occupied        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevGyd[gyd] = m_Gyd[gyd];            m_Gyd[gyd] = teamIndex + BG_SA_GARVE_TYPE_OCCUPIED;            // create new occupied banner            _CreateBanner(gyd, BG_SA_GARVE_TYPE_OCCUPIED, teamIndex, true);            //_SendNodeUpdate(node);            m_GydTimers[gyd] = 0;            //_NodeOccupied(node,(teamIndex == BG_TEAM_ALLIANCE) ? ALLIANCE:HORDE);            if (teamIndex == BG_TEAM_ALLIANCE)            {                // SendMessage2ToAll(LANG_BG_SA_AH_PRECIPITATES_GRAVEYARD,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, LANG_BG_ALLY, _GydName(gyd));                SendWarningToAllSA(gyd, STATUS_CLAIMED, ALLIANCE);            }            else            {                // SendMessage2ToAll(LANG_BG_SA_AH_PRECIPITATES_GRAVEYARD,CHAT_MSG_BG_SYSTEM_HORDE, source, LANG_BG_HORDE, _GydName(gyd));                SendWarningToAllSA(gyd, STATUS_CLAIMED, HORDE);            }        }        sound = (teamIndex == BG_TEAM_ALLIANCE) ? BG_SA_SOUND_GYD_ASSAULTED_ALLIANCE : BG_SA_SOUND_GYD_ASSAULTED_HORDE;    }    // If node is occupied, change to enemy-contested    else if (defender == HORDE)    {        if (m_Gyd[gyd] == BG_SA_GARVE_STATUS_HORDE_OCCUPIED)        {            //UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevGyd[gyd] = m_Gyd[gyd];            m_Gyd[gyd] = teamIndex + BG_SA_GARVE_TYPE_CONTESTED;            // create new contested banner            _CreateBanner(gyd, BG_SA_GARVE_TYPE_CONTESTED, teamIndex, true);            //_SendNodeUpdate(node);            m_GydTimers[gyd] = BG_SA_FLAG_CAPTURING_TIME;            if (teamIndex == BG_TEAM_ALLIANCE)            {                // SendMessage2ToAll(LANG_BG_SA_AH_PRECIPITATES_GRAVEYARD,CHAT_MSG_BG_SYSTEM_ALLIANCE, source, LANG_BG_ALLY, _GydName(gyd));                SendWarningToAllSA(gyd, STATUS_CLAIMED, ALLIANCE);            }            else            {                // SendMessage2ToAll(LANG_BG_SA_AH_PRECIPITATES_GRAVEYARD,CHAT_MSG_BG_SYSTEM_HORDE, source, LANG_BG_HORDE, _GydName(gyd));                SendWarningToAllSA(gyd, STATUS_CLAIMED, HORDE);            }            sound = (teamIndex == BG_TEAM_ALLIANCE) ? BG_SA_SOUND_GYD_ASSAULTED_ALLIANCE : BG_SA_SOUND_GYD_ASSAULTED_HORDE;        }    }    else if (defender == ALLIANCE)    {        if (m_Gyd[gyd] == BG_SA_GARVE_STATUS_ALLY_OCCUPIED)        {            //UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevGyd[gyd] = m_Gyd[gyd];            m_Gyd[gyd] = teamIndex + BG_SA_GARVE_TYPE_CONTESTED;            // create new contested banner//.........这里部分代码省略.........
开发者ID:Nedj,项目名称:mangos,代码行数:101,


示例16: GetBgMap

/* Invoked if a player used a banner as a GameObject. */void BattlegroundBFG::EventPlayerClickedOnFlag(Player* source, GameObject* /*target_obj*/){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    uint8 node = GILNEAS_BG_NODE_LIGHTHOUSE;    GameObject* object = GetBgMap()->GetGameObject(BgObjects[node * 8 + 5]);    while ((node < GILNEAS_BG_DYNAMIC_NODES_COUNT) && ((!object) || (!source->IsWithinDistInMap(object, 10))))    {        ++node;        object = GetBgMap()->GetGameObject(BgObjects[node * 8 + GILNEAS_BG_OBJECT_AURA_CONTESTED]);    }    if (node == GILNEAS_BG_DYNAMIC_NODES_COUNT)    {        // This means our player isn't close to any of the banners - maybe a cheater ??        return;    }    BattlegroundTeamId teamIndex = GetTeamIndexByTeamId(source->GetBGTeam());    // Check if player really could use this banner, and has not cheated.    if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node] % 2))        return;    source->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);    uint32 sound = 0;    // If the node is Neutral, change to Contested.    if (m_Nodes[node] == GILNEAS_BG_NODE_TYPE_NEUTRAL)    {        UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);        m_prevNodes[node] = m_Nodes[node];        m_Nodes[node] = teamIndex + 1;        // Burn current Neutral banner.        _DelBanner(node, GILNEAS_BG_NODE_TYPE_NEUTRAL, 0);        // Create new Contested banner.        _CreateBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, teamIndex, true);        _SendNodeUpdate(node);        m_NodeTimers[node] = GILNEAS_BG_FLAG_CAPTURING_TIME;        if (teamIndex == 0)            SendMessage2ToAll(LANG_BG_BFG_NODE_CLAIMED, CHAT_MSG_RAID_BOSS_EMOTE, source, _GetNodeNameId(node), LANG_BG_BFG_ALLY);        else            SendMessage2ToAll(LANG_BG_BFG_NODE_CLAIMED, CHAT_MSG_RAID_BOSS_EMOTE, source, _GetNodeNameId(node), LANG_BG_BFG_HORDE);        sound = GILNEAS_BG_SOUND_NODE_CLAIMED;    }    // If the node is Contested.    else if ((m_Nodes[node] == GILNEAS_BG_NODE_STATUS_ALLY_CONTESTED) || (m_Nodes[node] == GILNEAS_BG_NODE_STATUS_HORDE_CONTESTED))    {        // If the last state is NOT Occupied, change node to Enemy - Contested.        if (m_prevNodes[node] < GILNEAS_BG_NODE_TYPE_OCCUPIED)        {            UpdatePlayerScore(source, SCORE_BASES_ASSAULTED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + GILNEAS_BG_NODE_TYPE_CONTESTED;            // Burn current Contested banner.            _DelBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, !teamIndex);            // Create new Contested banner.            _CreateBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = GILNEAS_BG_FLAG_CAPTURING_TIME;            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_BFG_NODE_ASSAULTED, CHAT_MSG_RAID_BOSS_EMOTE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_BFG_NODE_ASSAULTED, CHAT_MSG_RAID_BOSS_EMOTE, source, _GetNodeNameId(node));        }        // If the node was already Contested, change back to Occupied.        else        {            UpdatePlayerScore(source, SCORE_BASES_DEFENDED, 1);            m_prevNodes[node] = m_Nodes[node];            m_Nodes[node] = teamIndex + GILNEAS_BG_NODE_TYPE_OCCUPIED;            // Burn current Contested banner.            _DelBanner(node, GILNEAS_BG_NODE_TYPE_CONTESTED, !teamIndex);            // Create new Occupied banner.            _CreateBanner(node, GILNEAS_BG_NODE_TYPE_OCCUPIED, teamIndex, true);            _SendNodeUpdate(node);            m_NodeTimers[node] = 0;            _NodeOccupied(node, (teamIndex == BG_TEAM_ALLIANCE) ? ALLIANCE : HORDE);            if (teamIndex == BG_TEAM_ALLIANCE)                SendMessage2ToAll(LANG_BG_BFG_NODE_DEFENDED, CHAT_MSG_RAID_BOSS_EMOTE, source, _GetNodeNameId(node));            else                SendMessage2ToAll(LANG_BG_BFG_NODE_DEFENDED, CHAT_MSG_RAID_BOSS_EMOTE, source, _GetNodeNameId(node));        }//.........这里部分代码省略.........
开发者ID:Expery,项目名称:Core,代码行数:101,



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


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