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

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

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

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

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

示例1: GetNextBanner

void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target_obj){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    // All the node points are iterated to find the clicked one    for (uint8 i = 0; i < MAX_NODE_TYPES; ++i)    {        if (nodePoint[i].gameobject_entry == target_obj->GetEntry())        {            // THIS SHOULD NEEVEER HAPPEN            if (nodePoint[i].faction == player->GetTeamId())                return;            uint32 nextBanner = GetNextBanner(&nodePoint[i], player->GetTeamId(), false);            // we set the new settings of the nodePoint            nodePoint[i].faction = player->GetTeamId();            nodePoint[i].last_entry = nodePoint[i].gameobject_entry;            nodePoint[i].gameobject_entry = nextBanner;            // this is just needed if the next banner is grey            if (nodePoint[i].banners[BANNER_A_CONTESTED] == nextBanner ||                nodePoint[i].banners[BANNER_H_CONTESTED] == nextBanner)            {                nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; // 1 minute for last change (real faction banner)                nodePoint[i].needChange = true;                RealocatePlayers(nodePoint[i].nodeType);                // if we are here means that the point has been lost, or it is the first capture                if (nodePoint[i].nodeType != NODE_TYPE_REFINERY && nodePoint[i].nodeType != NODE_TYPE_QUARRY)                    if (BgCreatures[BG_IC_NPC_SPIRIT_GUIDE_1+(nodePoint[i].nodeType)-2])                        DelCreature(BG_IC_NPC_SPIRIT_GUIDE_1+(nodePoint[i].nodeType)-2);                UpdatePlayerScore(player, SCORE_BASES_ASSAULTED, 1);                SendMessage2ToAll(LANG_BG_IC_TEAM_ASSAULTED_NODE_1, CHAT_MSG_BG_SYSTEM_NEUTRAL, player, nodePoint[i].string);                SendMessage2ToAll(LANG_BG_IC_TEAM_ASSAULTED_NODE_2, CHAT_MSG_BG_SYSTEM_NEUTRAL, player, nodePoint[i].string, (player->GetTeamId() == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE));                HandleContestedNodes(&nodePoint[i]);            } else if (nextBanner == nodePoint[i].banners[BANNER_A_CONTROLLED] ||                       nextBanner == nodePoint[i].banners[BANNER_H_CONTROLLED])                       // if we are going to spawn the definitve faction banner, we dont need the timer anymore            {                nodePoint[i].timer = BANNER_STATE_CHANGE_TIME;                nodePoint[i].needChange = false;                SendMessage2ToAll(LANG_BG_IC_TEAM_DEFENDED_NODE, CHAT_MSG_BG_SYSTEM_NEUTRAL, player, nodePoint[i].string);                HandleCapturedNodes(&nodePoint[i], true);                UpdatePlayerScore(player, SCORE_BASES_DEFENDED, 1);            }            GameObject* banner = GetBGObject(nodePoint[i].gameobject_type);            if (!banner) // this should never happen                return;            float cords[4] = {banner->GetPositionX(), banner->GetPositionY(), banner->GetPositionZ(), banner->GetOrientation() };            DelObject(nodePoint[i].gameobject_type);            AddObject(nodePoint[i].gameobject_type, nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0, RESPAWN_ONE_DAY);            GetBGObject(nodePoint[i].gameobject_type)->SetUInt32Value(GAMEOBJECT_FACTION, nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_Factions[1] : BG_IC_Factions[0]);            if (nodePoint[i].nodeType == NODE_TYPE_WORKSHOP)            {                DelObject(BG_IC_GO_SEAFORIUM_BOMBS_1);                DelObject(BG_IC_GO_SEAFORIUM_BOMBS_2);            }            UpdateNodeWorldState(&nodePoint[i]);            // we dont need iterating if we are here            // If the needChange bool was set true, we will handle the rest in the Update Map function.            return;        }    }}
开发者ID:8Infinity8,项目名称:InfinityCore,代码行数:77,


示例2: GetBGObject

//.........这里部分代码省略.........					nodePoint[i].timer -= diff;            }        }        if (nodePoint[i].nodeType == NODE_TYPE_WORKSHOP)        {            if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||                nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)            {                if (siegeEngineWorkshopTimer <= diff)                {                    uint8 siegeType = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_A : BG_IC_NPC_SIEGE_ENGINE_H);                    if (Creature* siege = GetBGCreature(siegeType)) // this always should be true                        if (!siege->IsAlive())                        {							// Check if creature respawn time is properly saved							RespawnMap::iterator itr = respawnMap.find(siege->GetGUIDLow());							if (itr == respawnMap.end() || time(NULL) < itr->second)								continue;							siege->Relocate(BG_IC_WorkshopVehicles[4].GetPositionX(), BG_IC_WorkshopVehicles[4].GetPositionY(), BG_IC_WorkshopVehicles[4].GetPositionZ(), BG_IC_WorkshopVehicles[4].GetOrientation());                            siege->Respawn(true);							respawnMap.erase(itr);						}					// we need to confirm this, i am not sure if this every 3 minutes					for (uint8 u = 0; u < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++u)					{												uint8 type = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H)+u;						if (Creature* demolisher = GetBGCreature(type))                            if (!demolisher->IsAlive())							{								// Check if creature respawn time is properly saved								RespawnMap::iterator itr = respawnMap.find(demolisher->GetGUIDLow());								if (itr == respawnMap.end() || time(NULL) < itr->second)									continue;								demolisher->Relocate(BG_IC_WorkshopVehicles[u].GetPositionX(), BG_IC_WorkshopVehicles[u].GetPositionY(), BG_IC_WorkshopVehicles[u].GetPositionZ(), BG_IC_WorkshopVehicles[u].GetOrientation());								demolisher->Respawn(true);								respawnMap.erase(itr);							}                    }                    siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME;                }				else					siegeEngineWorkshopTimer -= diff;            }        }        // the point is waiting for a change on its banner        if (nodePoint[i].needChange)        {            if (nodePoint[i].timer <= diff)            {                uint32 nextBanner = GetNextBanner(&nodePoint[i], nodePoint[i].faction, true);                nodePoint[i].last_entry = nodePoint[i].gameobject_entry;                nodePoint[i].gameobject_entry = nextBanner;                // nodePoint[i].faction = the faction should be the same one...                GameObject* banner = GetBGObject(nodePoint[i].gameobject_type);                if (!banner) // this should never happen                    return;                float cords[4] = {banner->GetPositionX(), banner->GetPositionY(), banner->GetPositionZ(), banner->GetOrientation() };                DelObject(nodePoint[i].gameobject_type);                AddObject(nodePoint[i].gameobject_type, nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0, RESPAWN_ONE_DAY);                GetBGObject(nodePoint[i].gameobject_type)->SetUInt32Value(GAMEOBJECT_FACTION, nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_Factions[1] : BG_IC_Factions[0]);                UpdateNodeWorldState(&nodePoint[i]);                HandleCapturedNodes(&nodePoint[i], false);                SendMessage2ToAll(LANG_BG_IC_TEAM_HAS_TAKEN_NODE, CHAT_MSG_BG_SYSTEM_NEUTRAL, NULL, (nodePoint[i].faction == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE), nodePoint[i].string);                nodePoint[i].needChange = false;                nodePoint[i].timer = BANNER_STATE_CHANGE_TIME;            } else nodePoint[i].timer -= diff;        }    }    if (resourceTimer <= diff)    {        for (uint8 i = 0; i < NODE_TYPE_DOCKS; ++i)        {            if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||                nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)            {                factionReinforcements[nodePoint[i].faction] += 1;                RewardHonorToTeam(RESOURCE_HONOR_AMOUNT, nodePoint[i].faction);                UpdateWorldState((nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_ALLIANCE_RENFORT : BG_IC_HORDE_RENFORT), factionReinforcements[nodePoint[i].faction]);            }        }        resourceTimer = IC_RESOURCE_TIME;    } else resourceTimer -= diff;}
开发者ID:AlexHjelm,项目名称:sunwell,代码行数:101,


示例3: GetBGObject

//.........这里部分代码省略.........                    for (uint8 u = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_1_A : BG_IC_NPC_GLAIVE_THROWER_1_H); u < (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_2_A : BG_IC_NPC_GLAIVE_THROWER_2_H); ++u)                    {                        if (Creature* glaiveThrower = GetBGCreature(u))                        {                            if (!glaiveThrower->isAlive())                                glaiveThrower->Respawn(true);                        }                    }                    docksTimer = DOCKS_UPDATE_TIME;                } else docksTimer -= diff;            }        }        if (nodePoint[i].nodeType == NODE_TYPE_WORKSHOP)        {            if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||                nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)            {                if (siegeEngineWorkshopTimer <= diff)                {                    uint8 siegeType = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_A : BG_IC_NPC_SIEGE_ENGINE_H);                    if (Creature* siege = GetBGCreature(siegeType)) // this always should be true                    {                        if (siege->isAlive())                        {                            if (siege->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_UNK_14|UNIT_FLAG_IMMUNE_TO_PC))                                // following sniffs the vehicle always has UNIT_FLAG_UNK_14                                siege->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_IMMUNE_TO_PC);                            else                                siege->SetHealth(siege->GetMaxHealth());                        }                        else                            siege->Respawn(true);                    }                    // we need to confirm if it is every 3 minutes                    for (uint8 u = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H); u < (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_4_A : BG_IC_NPC_DEMOLISHER_4_H); ++u)                    {                        if (Creature* demolisher = GetBGCreature(u))                        {                            if (!demolisher->isAlive())                                demolisher->Respawn(true);                        }                    }                    siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME;                } else siegeEngineWorkshopTimer -= diff;            }        }        // the point is waiting for a change on its banner        if (nodePoint[i].needChange)        {            if (nodePoint[i].timer <= diff)            {                uint32 nextBanner = GetNextBanner(&nodePoint[i], nodePoint[i].faction, true);                nodePoint[i].last_entry = nodePoint[i].gameobject_entry;                nodePoint[i].gameobject_entry = nextBanner;                // nodePoint[i].faction = the faction should be the same one...                GameObject* banner = GetBGObject(nodePoint[i].gameobject_type);                if (!banner) // this should never happen                    return;                float cords[4] = {banner->GetPositionX(), banner->GetPositionY(), banner->GetPositionZ(), banner->GetOrientation() };                DelObject(nodePoint[i].gameobject_type);                AddObject(nodePoint[i].gameobject_type, nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0, RESPAWN_ONE_DAY);                GetBGObject(nodePoint[i].gameobject_type)->SetUInt32Value(GAMEOBJECT_FACTION, nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_Factions[1] : BG_IC_Factions[0]);                UpdateNodeWorldState(&nodePoint[i]);                HandleCapturedNodes(&nodePoint[i], false);                SendMessage2ToAll(LANG_BG_IC_TEAM_HAS_TAKEN_NODE, CHAT_MSG_BG_SYSTEM_NEUTRAL, NULL, (nodePoint[i].faction == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE), nodePoint[i].string);                nodePoint[i].needChange = false;                nodePoint[i].timer = BANNER_STATE_CHANGE_TIME;            } else nodePoint[i].timer -= diff;        }    }    if (resourceTimer <= diff)    {        for (uint8 i = 0; i < NODE_TYPE_DOCKS; ++i)        {            if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||                nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)            {                factionReinforcements[nodePoint[i].faction] += 1;                RewardHonorToTeam(RESOURCE_HONOR_AMOUNT, nodePoint[i].faction == TEAM_ALLIANCE ? ALLIANCE : HORDE);                UpdateWorldState((nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_ALLIANCE_RENFORT : BG_IC_HORDE_RENFORT), factionReinforcements[nodePoint[i].faction]);            }        }        resourceTimer = IC_RESOURCE_TIME;    } else resourceTimer -= diff;}
开发者ID:8Infinity8,项目名称:InfinityCore,代码行数:101,


示例4: GetNextBanner

void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target_obj){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    // All the node points are iterated to find the clicked one    for (uint8 i = 0; i < MAX_NODE_TYPES; ++i)    {        if (nodePoint[i].gameobject_entry == target_obj->GetEntry())        {            // THIS SHOULD NEEVEER HAPPEN            if (nodePoint[i].faction == player->GetTeamId())                return;            uint32 nextBanner = GetNextBanner(&nodePoint[i], player->GetTeamId(), false);            // we set the new settings of the nodePoint            nodePoint[i].faction = player->GetTeamId();            nodePoint[i].last_entry = nodePoint[i].gameobject_entry;            nodePoint[i].gameobject_entry = nextBanner;            // this is just needed if the next banner is grey            if (nodePoint[i].banners[BANNER_A_CONTESTED] == nextBanner || nodePoint[i].banners[BANNER_H_CONTESTED] == nextBanner)            {                nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; // 1 minute for last change (real faction banner)                nodePoint[i].needChange = true;                RelocateDeadPlayers(BgCreatures[BG_IC_NPC_SPIRIT_GUIDE_1 + nodePoint[i].nodeType - 2]);                // if we are here means that the point has been lost, or it is the first capture                if (nodePoint[i].nodeType != NODE_TYPE_REFINERY && nodePoint[i].nodeType != NODE_TYPE_QUARRY)                    if (!BgCreatures[BG_IC_NPC_SPIRIT_GUIDE_1 + (nodePoint[i].nodeType) - 2].IsEmpty())                        DelCreature(BG_IC_NPC_SPIRIT_GUIDE_1 + (nodePoint[i].nodeType) - 2);                UpdatePlayerScore(player, SCORE_BASES_ASSAULTED, 1);                if (nodePoint[i].faction == TEAM_ALLIANCE)                    SendBroadcastText(ICNodes[i].TextAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);                else                    SendBroadcastText(ICNodes[i].TextAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player);                HandleContestedNodes(&nodePoint[i]);            }            else if (nextBanner == nodePoint[i].banners[BANNER_A_CONTROLLED] || nextBanner == nodePoint[i].banners[BANNER_H_CONTROLLED]) // if we are going to spawn the definitve faction banner, we dont need the timer anymore            {                nodePoint[i].timer = BANNER_STATE_CHANGE_TIME;                nodePoint[i].needChange = false;                if (nodePoint[i].faction == TEAM_ALLIANCE)                    SendBroadcastText(ICNodes[i].TextDefended, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);                else                    SendBroadcastText(ICNodes[i].TextDefended, CHAT_MSG_BG_SYSTEM_HORDE, player);                HandleCapturedNodes(&nodePoint[i], true);                UpdatePlayerScore(player, SCORE_BASES_DEFENDED, 1);            }            GameObject* banner = GetBGObject(nodePoint[i].gameobject_type);            if (!banner) // this should never happen                return;            float cords[4] = {banner->GetPositionX(), banner->GetPositionY(), banner->GetPositionZ(), banner->GetOrientation() };            DelObject(nodePoint[i].gameobject_type);            if (!AddObject(nodePoint[i].gameobject_type, nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0, RESPAWN_ONE_DAY))            {                TC_LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning a banner (type: %u, entry: %u). Isle of Conquest BG cancelled.", nodePoint[i].gameobject_type, nodePoint[i].gameobject_entry);                EndBattleground(0);            }            GetBGObject(nodePoint[i].gameobject_type)->SetUInt32Value(GAMEOBJECT_FACTION, nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_Factions[1] : BG_IC_Factions[0]);            UpdateNodeWorldState(&nodePoint[i]);            // we dont need iterating if we are here            // If the needChange bool was set true, we will handle the rest in the Update Map function.            return;        }    }}
开发者ID:Carbenium,项目名称:TrinityCore,代码行数:81,



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


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