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

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

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

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

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

示例1: SendTransportsRemove

bool BattlegroundSA::ResetObjs(){    for (int i = BG_SA_BOAT_ONE; i <= BG_SA_BOAT_TWO; i++)        for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)            if (Player *plr = sObjectMgr->GetPlayer(itr->first))                SendTransportsRemove(plr);    uint32 atF = BG_SA_Factions[Attackers];    uint32 defF = BG_SA_Factions[Attackers ? TEAM_ALLIANCE : TEAM_HORDE];    for (uint8 i = 0; i <BG_SA_MAXOBJ; i++)        DelObject(i);    for (uint8 i = 0; i < BG_SA_MAXNPC; i++)        DelCreature(i);    for (uint8 i = BG_SA_MAXNPC; i < BG_SA_MAXNPC + BG_SA_MAX_GY; i++)        DelCreature(i);    for (uint8 i = 0; i < 6; i++)        GateStatus[i] = BG_SA_GATE_OK;    for (uint8 i = 0; i < BG_SA_BOAT_ONE; i++)    {        if (!AddObject(i, BG_SA_ObjEntries[i], BG_SA_ObjSpawnlocs[i][0], BG_SA_ObjSpawnlocs[i][1], BG_SA_ObjSpawnlocs[i][2], BG_SA_ObjSpawnlocs[i][3], 0, 0, 0, 0, RESPAWN_ONE_DAY))            return false;    }    for (uint8 i = BG_SA_BOAT_ONE; i < BG_SA_SIGIL_1; i++)    {        uint32 boatid=0;        switch (i)        {            case BG_SA_BOAT_ONE:                boatid= Attackers ? BG_SA_BOAT_ONE_H : BG_SA_BOAT_ONE_A;                break;            case BG_SA_BOAT_TWO:                boatid= Attackers ? BG_SA_BOAT_TWO_H : BG_SA_BOAT_TWO_A;                break;        }        if (!AddObject(i, boatid, BG_SA_ObjSpawnlocs[i][0],          BG_SA_ObjSpawnlocs[i][1],          BG_SA_ObjSpawnlocs[i][2]+(Attackers ? -3.750f: 0),          BG_SA_ObjSpawnlocs[i][3], 0, 0, 0, 0, RESPAWN_ONE_DAY))            return false;    }    for (uint8 i = BG_SA_SIGIL_1; i < BG_SA_CENTRAL_FLAG; i++)    {        if (!AddObject(i, BG_SA_ObjEntries[i],            BG_SA_ObjSpawnlocs[i][0], BG_SA_ObjSpawnlocs[i][1],            BG_SA_ObjSpawnlocs[i][2], BG_SA_ObjSpawnlocs[i][3],            0, 0, 0, 0, RESPAWN_ONE_DAY))        return false;    }    // MAD props for Kiper for discovering those values - 4 hours of his work.    GetBGObject(BG_SA_BOAT_ONE)->UpdateRotationFields(1.0f, 0.0002f);    GetBGObject(BG_SA_BOAT_TWO)->UpdateRotationFields(1.0f, 0.00001f);    SpawnBGObject(BG_SA_BOAT_ONE, RESPAWN_IMMEDIATELY);    SpawnBGObject(BG_SA_BOAT_TWO, RESPAWN_IMMEDIATELY);    //Cannons and demolishers - NPCs are spawned    //By capturing GYs.    for (uint8 i = 0; i < BG_SA_NPC_SPARKLIGHT; i++)    {        if (!AddCreature(BG_SA_NpcEntries[i], i, (Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE),              BG_SA_NpcSpawnlocs[i][0], BG_SA_NpcSpawnlocs[i][1],              BG_SA_NpcSpawnlocs[i][2], BG_SA_NpcSpawnlocs[i][3], 600))        return false;    }    OverrideGunFaction();    DemolisherStartState(true);    for (uint8 i = 0; i <= BG_SA_TITAN_RELIC; i++)    {        SpawnBGObject(i, RESPAWN_IMMEDIATELY);        GetBGObject(i)->SetUInt32Value(GAMEOBJECT_FACTION, defF);    }    GetBGObject(BG_SA_TITAN_RELIC)->SetUInt32Value(GAMEOBJECT_FACTION, atF);    GetBGObject(BG_SA_TITAN_RELIC)->Refresh();    for (uint8 i = 0; i <= 5; i++)        GateStatus[i] = BG_SA_GATE_OK;    TotalTime = 0;    ShipsStarted = false;    //Graveyards!    for (uint8 i = 0;i < BG_SA_MAX_GY; i++)    {        WorldSafeLocsEntry const *sg = NULL;        sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]);        if (!sg)        {            sLog->outError("SOTA: Can't find GY entry %u", BG_SA_GYEntries[i]);            return false;        }//.........这里部分代码省略.........
开发者ID:BlueSellafield,项目名称:ArkCORE,代码行数:101,


示例2: 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])                        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);            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(LOG_FILTER_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);                Battleground::EndBattleground(WINNER_NONE);            }            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:mynew2,项目名称:trinitycore-1,代码行数:81,


示例3: TC_LOG_ERROR

//.........这里部分代码省略.........            }            // spawning catapults            for (uint8 i = 0; i < MAX_CATAPULTS_SPAWNS_PER_FACTION; ++i)            {                uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_1_A : BG_IC_NPC_CATAPULT_1_H)+i;                if (GetBGCreature(type) && GetBGCreature(type)->IsAlive())                    continue;                if (AddCreature(NPC_CATAPULT, type, nodePoint->faction,                        BG_IC_DocksVehiclesCatapults[i].GetPositionX(), BG_IC_DocksVehiclesCatapults[i].GetPositionY(),                        BG_IC_DocksVehiclesCatapults[i].GetPositionZ(), BG_IC_DocksVehiclesCatapults[i].GetOrientation(),                        RESPAWN_ONE_DAY))                        GetBGCreature(type)->setFaction(BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);            }            break;        case BG_IC_GO_WORKSHOP_BANNER:            {                if (siegeEngineWorkshopTimer < WORKSHOP_UPDATE_TIME)                    siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME;                if (!recapture)                {                    // we must del opposing faction vehicles when the node is captured (unused ones)                    for (uint8 i = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_H : BG_IC_NPC_DEMOLISHER_1_A); i < (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_4_H : BG_IC_NPC_DEMOLISHER_4_A); ++i)                    {                        if (Creature* demolisher = GetBGCreature(i))                        {                            if (Vehicle* vehicleDemolisher = demolisher->GetVehicleKit())                            {                                // is IsVehicleInUse working as expected?                                if (!vehicleDemolisher->IsVehicleInUse())                                    DelCreature(i);                            }                        }                    }                    for (uint8 i = 0; i < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++i)                    {                        uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H)+i;                        if (GetBGCreature(type) && GetBGCreature(type)->IsAlive())                            continue;                        if (AddCreature(NPC_DEMOLISHER, type, nodePoint->faction,                            BG_IC_WorkshopVehicles[i].GetPositionX(), BG_IC_WorkshopVehicles[i].GetPositionY(),                            BG_IC_WorkshopVehicles[i].GetPositionZ(), BG_IC_WorkshopVehicles[i].GetOrientation(),                            RESPAWN_ONE_DAY))                            GetBGCreature(type)->setFaction(BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);                    }                    // we check if the opossing siege engine is in use                    int8 enemySiege = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_H : BG_IC_NPC_SIEGE_ENGINE_A);                    if (Creature* siegeEngine = GetBGCreature(enemySiege))                    {                        if (Vehicle* vehicleSiege = siegeEngine->GetVehicleKit())                        {                            // is VehicleInUse working as expected ?                            if (!vehicleSiege->IsVehicleInUse())                                DelCreature(enemySiege);                        }                    }                    uint8 siegeType = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_A : BG_IC_NPC_SIEGE_ENGINE_H);                    if (!GetBGCreature(siegeType) || !GetBGCreature(siegeType)->IsAlive())                    {                        AddCreature((nodePoint->faction == TEAM_ALLIANCE ? NPC_SIEGE_ENGINE_A : NPC_SIEGE_ENGINE_H), siegeType, nodePoint->faction,                            BG_IC_WorkshopVehicles[4].GetPositionX(), BG_IC_WorkshopVehicles[4].GetPositionY(),                            BG_IC_WorkshopVehicles[4].GetPositionZ(), BG_IC_WorkshopVehicles[4].GetOrientation(),                            RESPAWN_ONE_DAY);                        if (Creature* siegeEngine = GetBGCreature(siegeType))                        {                            siegeEngine->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_UNK_14|UNIT_FLAG_IMMUNE_TO_PC);                            siegeEngine->setFaction(BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);                        }                    }                }                for (uint8 i = 0; i < MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION; ++i)                {                    AddObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i, GO_SEAFORIUM_BOMBS,                    workshopBombs[i].GetPositionX(), workshopBombs[i].GetPositionY(),                    workshopBombs[i].GetPositionZ(), workshopBombs[i].GetOrientation(),                    0, 0, 0, 0, 10);                    if (GameObject* seaforiumBombs = GetBGObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i))                    {                        seaforiumBombs->SetRespawnTime(10);                        seaforiumBombs->SetUInt32Value(GAMEOBJECT_FACTION, BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);                    }                }                break;            }        default:            break;    }}
开发者ID:mynew2,项目名称:trinitycore-1,代码行数:101,


示例4: GetBGObject

void BattlegroundIC::PostUpdateImpl(uint32 diff){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    if (!doorsClosed)    {        if (closeFortressDoorsTimer <= diff)        {            GetBGObject(BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01)->RemoveFromWorld();            GetBGObject(BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01)->RemoveFromWorld();            GetBGObject(BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR02)->RemoveFromWorld();            GetBGObject(BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR02)->RemoveFromWorld();            GetBGObject(BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR03)->RemoveFromWorld();            GetBGObject(BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR03)->RemoveFromWorld();            GetBGObject(BG_IC_GO_ALLIANCE_GATE_1)->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);            GetBGObject(BG_IC_GO_HORDE_GATE_1)->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);            GetBGObject(BG_IC_GO_ALLIANCE_GATE_2)->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);            GetBGObject(BG_IC_GO_HORDE_GATE_2)->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);            GetBGObject(BG_IC_GO_ALLIANCE_GATE_3)->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);            GetBGObject(BG_IC_GO_HORDE_GATE_3)->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);            doorsClosed = true;        } else closeFortressDoorsTimer -= diff;    }    for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; ++i)    {        if (nodePoint[i].nodeType == NODE_TYPE_DOCKS)        {            if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||                nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)            {                if (nodePoint[i].timer <= diff)                {                    // we need to confirm this, i am not sure if this every 3 minutes                    for (uint8 j = 0; j < MAX_CATAPULTS_SPAWNS_PER_FACTION; ++j)                    {                        uint8 type = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_1_A : BG_IC_NPC_CATAPULT_1_H)+j;                        if (Creature* catapult = GetBGCreature(type))                            if (!catapult->IsAlive())                            {                                // Check if creature respawn time is properly saved                                RespawnMap::iterator itr = respawnMap.find(catapult->GetGUIDLow());                                if (itr == respawnMap.end() || time(NULL) < itr->second)                                    continue;                                catapult->Relocate(BG_IC_DocksVehiclesCatapults[j].GetPositionX(), BG_IC_DocksVehiclesCatapults[j].GetPositionY(), BG_IC_DocksVehiclesCatapults[j].GetPositionZ(), BG_IC_DocksVehiclesCatapults[j].GetOrientation());                                catapult->Respawn(true);                                respawnMap.erase(itr);                            }                    }                    // we need to confirm this is blizzlike, not sure if it is every 3 minutes                    for (uint8 j = 0; j < MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION; ++j)                    {                        uint8 type = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_1_A : BG_IC_NPC_GLAIVE_THROWER_1_H)+j;                        if (Creature* glaiveThrower = GetBGCreature(type))                            if (!glaiveThrower->IsAlive())                            {                                // Check if creature respawn time is properly saved                                RespawnMap::iterator itr = respawnMap.find(glaiveThrower->GetGUIDLow());                                if (itr == respawnMap.end() || time(NULL) < itr->second)                                    continue;                                glaiveThrower->Relocate(BG_IC_DocksVehiclesGlaives[j].GetPositionX(), BG_IC_DocksVehiclesGlaives[j].GetPositionY(), BG_IC_DocksVehiclesGlaives[j].GetPositionZ(), BG_IC_DocksVehiclesGlaives[j].GetOrientation());                                glaiveThrower->Respawn(true);                                respawnMap.erase(itr);                            }                    }                    docksTimer = DOCKS_UPDATE_TIME;                }                else                    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);                        }//.........这里部分代码省略.........
开发者ID:Matt-One,项目名称:azerothcore-wotlk,代码行数:101,


示例5: AddCreature

bool BattlegroundIC::SetupBattleground(){    for (uint8 i = 0; i < MAX_NORMAL_GAMEOBJECTS_SPAWNS; i++)    {        if (!AddObject(BG_IC_ObjSpawnlocs[i].type, BG_IC_ObjSpawnlocs[i].entry,            BG_IC_ObjSpawnlocs[i].x, BG_IC_ObjSpawnlocs[i].y,            BG_IC_ObjSpawnlocs[i].z, BG_IC_ObjSpawnlocs[i].o,            0, 0, 0, 0, RESPAWN_ONE_DAY))        {            sLog->outError("Isle of Conquest: There was an error spawning gameobject %u", BG_IC_ObjSpawnlocs[i].entry);            return false;        }    }    for (uint8 i = 0; i < MAX_NORMAL_NPCS_SPAWNS; i++)    {        Creature *temp = AddCreature(BG_IC_NpcSpawnlocs[i].entry, BG_IC_NpcSpawnlocs[i].type, BG_IC_NpcSpawnlocs[i].team,                                     BG_IC_NpcSpawnlocs[i].x, BG_IC_NpcSpawnlocs[i].y, BG_IC_NpcSpawnlocs[i].z, BG_IC_NpcSpawnlocs[i].o,                                      RESPAWN_ONE_DAY);        if (!temp)        {            sLog->outError("Isle of Conquest: There was an error spawning creature %u", BG_IC_NpcSpawnlocs[i].entry);            return false;        }        if (temp->GetEntry() == NPC_OVERLORD_AGMAR || temp->GetEntry() == NPC_HIGH_COMMANDER_HALFORD_WYRMBANE)            temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);    }    if (!AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+5, BG_IC_SpiritGuidePos[5][0], BG_IC_SpiritGuidePos[5][1], BG_IC_SpiritGuidePos[5][2], BG_IC_SpiritGuidePos[5][3], ALLIANCE)        || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+6, BG_IC_SpiritGuidePos[6][0], BG_IC_SpiritGuidePos[6][1], BG_IC_SpiritGuidePos[6][2], BG_IC_SpiritGuidePos[6][3], HORDE)        || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+3, BG_IC_SpiritGuidePos[7][0], BG_IC_SpiritGuidePos[7][1], BG_IC_SpiritGuidePos[7][2], BG_IC_SpiritGuidePos[7][3], ALLIANCE)        || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+4, BG_IC_SpiritGuidePos[8][0], BG_IC_SpiritGuidePos[8][1], BG_IC_SpiritGuidePos[8][2], BG_IC_SpiritGuidePos[8][3], HORDE))    {        sLog->outError("Isle of Conquest: Failed to spawn initial spirit guide!");        return false;    }    gunshipHorde = CreateTransport(GO_HORDE_GUNSHIP, TRANSPORT_PERIOD_TIME);    gunshipAlliance = CreateTransport(GO_ALLIANCE_GUNSHIP, TRANSPORT_PERIOD_TIME);    if (!gunshipAlliance || !gunshipHorde)    {        sLog->outError("Isle of Conquest: There was an error creating gunships!");        return false;    }    //Send transport init packet to all player in map    for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end();itr++)    {        if (Player* player = sObjectMgr->GetPlayer(itr->first))            SendTransportInit(player);    }    // setting correct factions for Keep Cannons    for (uint8 i = BG_IC_NPC_KEEP_CANNON_1; i < BG_IC_NPC_KEEP_CANNON_12; i++)        GetBGCreature(i)->setFaction(BG_IC_Factions[0]);    for (uint8 i = BG_IC_NPC_KEEP_CANNON_13; i < BG_IC_NPC_KEEP_CANNON_25; i++)        GetBGCreature(i)->setFaction(BG_IC_Factions[1]);    // correcting spawn time for keeps bombs    for (uint8 i = BG_IC_GO_HUGE_SEAFORIUM_BOMBS_A_1; i < BG_IC_GO_HUGE_SEAFORIUM_BOMBS_H_4; i++)        GetBGObject(i)->SetRespawnTime(10);    return true;}
开发者ID:Akenyshka,项目名称:MythCore,代码行数:65,


示例6: switch

//.........这里部分代码省略.........        case BG_IC_GO_DOCKS_BANNER:            if (recapture)                break;            if (docksTimer < DOCKS_UPDATE_TIME)                docksTimer = DOCKS_UPDATE_TIME;            // spawning glaive throwers            for (uint8 i = 0; i < MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION; ++i)            {                uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_1_A : BG_IC_NPC_GLAIVE_THROWER_1_H)+i;                if (GetBGCreature(type))                    continue;                if (AddCreature(nodePoint->faction == TEAM_ALLIANCE ? NPC_GLAIVE_THROWER_A : NPC_GLAIVE_THROWER_H, type,                        BG_IC_DocksVehiclesGlaives[i].GetPositionX(), BG_IC_DocksVehiclesGlaives[i].GetPositionY(),                        BG_IC_DocksVehiclesGlaives[i].GetPositionZ(), BG_IC_DocksVehiclesGlaives[i].GetOrientation(),                        RESPAWN_ONE_DAY))                        GetBGCreature(type)->setFaction(BG_IC_Factions[nodePoint->faction]);            }            // spawning catapults            for (uint8 i = 0; i < MAX_CATAPULTS_SPAWNS_PER_FACTION; ++i)            {                uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_1_A : BG_IC_NPC_CATAPULT_1_H)+i;                if (GetBGCreature(type))                    continue;                if (AddCreature(NPC_CATAPULT, type,                        BG_IC_DocksVehiclesCatapults[i].GetPositionX(), BG_IC_DocksVehiclesCatapults[i].GetPositionY(),                        BG_IC_DocksVehiclesCatapults[i].GetPositionZ(), BG_IC_DocksVehiclesCatapults[i].GetOrientation(),                        RESPAWN_ONE_DAY))                        GetBGCreature(type)->setFaction(BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);            }            break;        case BG_IC_GO_WORKSHOP_BANNER:            {                if (siegeEngineWorkshopTimer < WORKSHOP_UPDATE_TIME)                    siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME;                if (!recapture)                {                    for (uint8 i = 0; i < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++i)                    {                        uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H)+i;                        if (GetBGCreature(type))                            continue;                        if (AddCreature(NPC_DEMOLISHER, type,                            BG_IC_WorkshopVehicles[i].GetPositionX(), BG_IC_WorkshopVehicles[i].GetPositionY(),                            BG_IC_WorkshopVehicles[i].GetPositionZ(), BG_IC_WorkshopVehicles[i].GetOrientation(),                            RESPAWN_ONE_DAY))                            GetBGCreature(type)->setFaction(BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);                    }                    uint8 siegeType = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_A : BG_IC_NPC_SIEGE_ENGINE_H);                    if (!GetBGCreature(siegeType))                    {                        AddCreature((nodePoint->faction == TEAM_ALLIANCE ? NPC_SIEGE_ENGINE_A : NPC_SIEGE_ENGINE_H), siegeType,                            BG_IC_WorkshopVehicles[4].GetPositionX(), BG_IC_WorkshopVehicles[4].GetPositionY(),                            BG_IC_WorkshopVehicles[4].GetPositionZ(), BG_IC_WorkshopVehicles[4].GetOrientation(),                            RESPAWN_ONE_DAY);                    }                    if (Creature* siegeEngine = GetBGCreature(siegeType))                    {                        siegeEngine->setFaction(BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);                        siegeEngine->SetCorpseDelay(5*MINUTE);                        if (siegeEngine->IsAlive())                            if (Vehicle* siegeVehicle = siegeEngine->GetVehicleKit())                                if (!siegeVehicle->IsVehicleInUse())                                    Unit::Kill(siegeEngine, siegeEngine);                        respawnMap[siegeEngine->GetGUIDLow()] = time(NULL) + VEHICLE_RESPAWN_TIME;                    }                }                for (uint8 i = 0; i < MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION; ++i)                {                    AddObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i, GO_SEAFORIUM_BOMBS,                    workshopBombs[i].GetPositionX(), workshopBombs[i].GetPositionY(),                    workshopBombs[i].GetPositionZ(), workshopBombs[i].GetOrientation(),                    0, 0, 0, 0, 10);                    if (GameObject* seaforiumBombs = GetBGObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i))                    {                        seaforiumBombs->SetRespawnTime(10);                        seaforiumBombs->SetUInt32Value(GAMEOBJECT_FACTION, BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);                    }                }                break;            }        default:            break;    }}
开发者ID:Matt-One,项目名称:azerothcore-wotlk,代码行数:101,


示例7: TC_LOG_ERROR

//.........这里部分代码省略.........            {                uint8 type = (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_1_A : BG_IC_NPC_GLAIVE_THROWER_1_H)+i;                if (GetBGCreature(type, false) && GetBGCreature(type)->IsAlive())                    continue;                if (AddCreature(node->faction == TEAM_ALLIANCE ? NPC_GLAIVE_THROWER_A : NPC_GLAIVE_THROWER_H, type, BG_IC_DocksVehiclesGlaives[i], node->faction, RESPAWN_ONE_DAY))                    GetBGCreature(type)->setFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);            }            // spawning catapults            for (uint8 i = 0; i < MAX_CATAPULTS_SPAWNS_PER_FACTION; ++i)            {                uint8 type = (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_1_A : BG_IC_NPC_CATAPULT_1_H)+i;                if (GetBGCreature(type, false) && GetBGCreature(type)->IsAlive())                    continue;                if (AddCreature(NPC_CATAPULT, type, BG_IC_DocksVehiclesCatapults[i], node->faction, RESPAWN_ONE_DAY))                    GetBGCreature(type)->setFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);            }            break;        case BG_IC_GO_WORKSHOP_BANNER:            {                if (siegeEngineWorkshopTimer < WORKSHOP_UPDATE_TIME)                    siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME;                if (!recapture)                {                    // we must del opposing faction vehicles when the node is captured (unused ones)                    for (uint8 i = (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_H : BG_IC_NPC_DEMOLISHER_1_A); i < (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_4_H : BG_IC_NPC_DEMOLISHER_4_A); ++i)                    {                        if (Creature* demolisher = GetBGCreature(i, false))                        {                            if (Vehicle* vehicleDemolisher = demolisher->GetVehicleKit())                            {                                // is IsVehicleInUse working as expected?                                if (!vehicleDemolisher->IsVehicleInUse())                                    DelCreature(i);                            }                        }                    }                    for (uint8 i = 0; i < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++i)                    {                        uint8 type = (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H)+i;                        if (GetBGCreature(type, false) && GetBGCreature(type)->IsAlive())                            continue;                        if (AddCreature(NPC_DEMOLISHER, type, BG_IC_WorkshopVehicles[i], node->faction, RESPAWN_ONE_DAY))                            GetBGCreature(type)->setFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);                    }                    // we check if the opossing siege engine is in use                    int8 enemySiege = (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_H : BG_IC_NPC_SIEGE_ENGINE_A);                    if (Creature* siegeEngine = GetBGCreature(enemySiege, false))                    {                        if (Vehicle* vehicleSiege = siegeEngine->GetVehicleKit())                        {                            // is VehicleInUse working as expected ?                            if (!vehicleSiege->IsVehicleInUse())                                DelCreature(enemySiege);                        }                    }                    uint8 siegeType = (node->faction == TEAM_ALLIANCE ? BG_IC_NPC_SIEGE_ENGINE_A : BG_IC_NPC_SIEGE_ENGINE_H);                    if (!GetBGCreature(siegeType, false) || !GetBGCreature(siegeType)->IsAlive())                    {                        AddCreature((node->faction == TEAM_ALLIANCE ? NPC_SIEGE_ENGINE_A : NPC_SIEGE_ENGINE_H), siegeType,                            BG_IC_WorkshopVehicles[4], node->faction, RESPAWN_ONE_DAY);                        if (Creature* siegeEngine = GetBGCreature(siegeType))                        {                            siegeEngine->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_CANNOT_SWIM|UNIT_FLAG_IMMUNE_TO_PC);                            siegeEngine->setFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);                        }                    }                }                for (uint8 i = 0; i < MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION; ++i)                {                    AddObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i, GO_SEAFORIUM_BOMBS,                    workshopBombs[i].GetPositionX(), workshopBombs[i].GetPositionY(),                    workshopBombs[i].GetPositionZ(), workshopBombs[i].GetOrientation(),                    0, 0, 0, 0, 10);                    if (GameObject* seaforiumBombs = GetBGObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i))                    {                        seaforiumBombs->SetRespawnTime(10);                        seaforiumBombs->SetFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);                    }                }                break;            }        default:            break;    }}
开发者ID:Carbenium,项目名称:TrinityCore,代码行数:101,


示例8: GetWorldStateFromGateEntry

void BattlegroundIC::DestroyGate(Player* player, GameObject* go){    GateStatus[GetGateIDFromEntry(go->GetEntry())] = BG_IC_GATE_DESTROYED;    uint32 uws_open = GetWorldStateFromGateEntry(go->GetEntry(), true);    uint32 uws_close = GetWorldStateFromGateEntry(go->GetEntry(), false);    if (uws_open)    {        UpdateWorldState(uws_close, 0);        UpdateWorldState(uws_open, 1);    }    if (player->GetTeamId() == TEAM_ALLIANCE)    {        DoorOpen(BG_IC_GO_HORDE_KEEP_PORTCULLIS);        GetBGObject(BG_IC_GO_HORDE_BANNER)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);    }    else    {        DoorOpen(BG_IC_GO_DOODAD_PORTCULLISACTIVE02);        GetBGObject(BG_IC_GO_ALLIANCE_BANNER)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);    }    uint32 textId;    ChatMsg msgType;    switch (go->GetEntry())    {        case GO_HORDE_GATE_1:            textId = BG_IC_TEXT_FRONT_GATE_HORDE_DESTROYED;            msgType = CHAT_MSG_BG_SYSTEM_ALLIANCE;            break;        case GO_HORDE_GATE_2:            textId = BG_IC_TEXT_WEST_GATE_HORDE_DESTROYED;            msgType = CHAT_MSG_BG_SYSTEM_ALLIANCE;            break;        case GO_HORDE_GATE_3:            textId = BG_IC_TEXT_EAST_GATE_HORDE_DESTROYED;            msgType = CHAT_MSG_BG_SYSTEM_ALLIANCE;            break;        case GO_ALLIANCE_GATE_1:            textId = BG_IC_TEXT_WEST_GATE_ALLIANCE_DESTROYED;            msgType = CHAT_MSG_BG_SYSTEM_HORDE;            break;        case GO_ALLIANCE_GATE_2:            textId = BG_IC_TEXT_EAST_GATE_ALLIANCE_DESTROYED;            msgType = CHAT_MSG_BG_SYSTEM_HORDE;            break;        case GO_ALLIANCE_GATE_3:            textId = BG_IC_TEXT_FRONT_GATE_ALLIANCE_DESTROYED;            msgType = CHAT_MSG_BG_SYSTEM_HORDE;            break;        default:            return;    }    if (go->GetEntry() == GO_HORDE_GATE_1 || go->GetEntry() == GO_HORDE_GATE_2 || go->GetEntry() == GO_HORDE_GATE_3)    {        if (!GetBgMap()->GetCreature(BgCreatures[BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].type]) && !AddCreature(BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].entry, BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].type, BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].x, BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].y, BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].z, BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].o, BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].team, RESPAWN_ONE_DAY))            TC_LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning creature %u", BG_IC_NpcSpawnlocs[BG_IC_NPC_OVERLORD_AGMAR].entry);    }    else if (go->GetEntry() == GO_ALLIANCE_GATE_1 || go->GetEntry() == GO_ALLIANCE_GATE_2 || go->GetEntry() == GO_ALLIANCE_GATE_3)    {        if (!GetBgMap()->GetCreature(BgCreatures[BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].type]) && !AddCreature(BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].entry, BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].type, BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].x, BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].y, BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].z, BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].o, BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].team, RESPAWN_ONE_DAY))            TC_LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning creature %u", BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].entry);    }    SendBroadcastText(textId, msgType);}
开发者ID:Carbenium,项目名称:TrinityCore,代码行数:66,


示例9: GetBGObject

void BattleGroundIC::Update(uint32 diff){    BattleGround::Update(diff);    if (GetStatus() != STATUS_IN_PROGRESS)        return;    if (!doorsClosed)    {        if (closeFortressDoorsTimer <= diff)        {            // correct visual of closed gates is at "damaged" flag            for (int i = BG_IC_GO_T_ALLIANCE_GATE_1; i <= BG_IC_GO_T_HORDE_GATE_3; ++i)                GetBGObject(i)->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);            for (int i = BG_IC_GO_T_ALLIANCE_WEST; i <= BG_IC_GO_T_HORDE_FRONT; ++i)                DelObject(i);            doorsClosed = true;        } else closeFortressDoorsTimer -= diff;    }    for (int node = 0; node < BG_IC_NODES_MAX; ++node)    {        // 3 sec delay to spawn new banner instead previous despawned one        if (m_BannerTimers[node].timer)        {            if (m_BannerTimers[node].timer > diff)                m_BannerTimers[node].timer -= diff;            else            {                m_BannerTimers[node].timer = 0;                _CreateBanner(node, m_BannerTimers[node].type, m_BannerTimers[node].teamIndex, false);            }        }        // 1-minute to occupy a node from contested state        if (m_NodeTimers[node])        {            if (m_NodeTimers[node] > diff)                m_NodeTimers[node] -= diff;            else            {                m_NodeTimers[node] = 0;                // Change from contested to occupied !                uint8 teamIndex = m_Nodes[node]-1;                m_prevNodes[node] = m_Nodes[node];                m_Nodes[node] += 2;                // create new occupied banner                _CreateBanner(node, BG_IC_NODE_TYPE_OCCUPIED, teamIndex, true);                _SendNodeUpdate(node);                // Message to chatlog                if (teamIndex == TEAM_INDEX_ALLIANCE)                {                    SendMessage2ToAll(LANG_BG_IC_NODE_TAKEN,CHAT_MSG_BG_SYSTEM_ALLIANCE,NULL,LANG_BG_ALLY,_GetNodeNameId(node));                    PlaySoundToAll(BG_IC_SOUND_NODE_CAPTURED_ALLIANCE);                }                else                {                    SendMessage2ToAll(LANG_BG_IC_NODE_TAKEN,CHAT_MSG_BG_SYSTEM_HORDE,NULL,LANG_BG_HORDE,_GetNodeNameId(node));                    PlaySoundToAll(BG_IC_SOUND_NODE_CAPTURED_HORDE);                }                // gunship starting                if (node == BG_IC_NODE_HANGAR)                    (teamIndex == TEAM_INDEX_ALLIANCE ? gunshipAlliance : gunshipHorde)->Start();            }        }    }    // add a point every 45 secs to quarry/refinery owner    for (uint8 node = BG_IC_NODE_QUARRY; node <= BG_IC_NODE_REFINERY; node++)    {        if (m_Nodes[node] >= BG_IC_NODE_TYPE_OCCUPIED)        {            if (m_resource_Timer[node] <= diff)            {                UpdateScore(TeamIndex(m_Nodes[node] - BG_IC_NODE_TYPE_OCCUPIED) , 1);                RewardHonorToTeam(GetBonusHonorFromKill(1), (m_Nodes[node] - BG_IC_NODE_TYPE_OCCUPIED == 0 ? ALLIANCE : HORDE));                m_resource_Timer[node] = BG_IC_RESOURCE_TICK_TIMER;            }            else                m_resource_Timer[node] -= diff;        }    }    HandleBuffs();}
开发者ID:jobba,项目名称:mangos3,代码行数:87,


示例10: SendTransportsRemove

bool BattlegroundSA::ResetObjs(){    for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)        if (Player* player = ObjectAccessor::FindPlayer(itr->first))            SendTransportsRemove(player);    uint32 atF = BG_SA_Factions[Attackers];    uint32 defF = BG_SA_Factions[Attackers ? TEAM_ALLIANCE : TEAM_HORDE];    for (uint8 i = 0; i < BG_SA_MAXOBJ; i++)        DelObject(i);    for (uint8 i = 0; i < BG_SA_MAXNPC; i++)        DelCreature(i);    for (uint8 i = BG_SA_MAXNPC; i < BG_SA_MAXNPC + BG_SA_MAX_GY; i++)        DelCreature(i);    for (uint8 i = 0; i < 6; i++)        GateStatus[i] = BG_SA_GATE_OK;    if (!AddCreature(BG_SA_NpcEntries[BG_SA_NPC_KANRETHAD], BG_SA_NPC_KANRETHAD, BG_SA_NpcSpawnlocs[BG_SA_NPC_KANRETHAD]))    {        TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Kanrethad, aborted. Entry: %u", BG_SA_NpcEntries[BG_SA_NPC_KANRETHAD]);        return false;    }    for (uint8 i = 0; i <= BG_SA_PORTAL_DEFFENDER_RED; i++)    {        if (!AddObject(i, BG_SA_ObjEntries[i], BG_SA_ObjSpawnlocs[i], 0, 0, 0, 0, RESPAWN_ONE_DAY))        {            TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn BG_SA_PORTAL_DEFFENDER_RED, Entry: %u", BG_SA_ObjEntries[i]);            continue;        }    }    for (uint8 i = BG_SA_BOAT_ONE; i <= BG_SA_BOAT_TWO; i++)    {        uint32 boatid = 0;        switch (i)        {            case BG_SA_BOAT_ONE:                boatid = Attackers ? BG_SA_BOAT_ONE_H : BG_SA_BOAT_ONE_A;                break;            case BG_SA_BOAT_TWO:                boatid = Attackers ? BG_SA_BOAT_TWO_H : BG_SA_BOAT_TWO_A;                break;            default:                break;        }        if (!AddObject(i, boatid, BG_SA_ObjSpawnlocs[i].GetPositionX(),          BG_SA_ObjSpawnlocs[i].GetPositionY(),          BG_SA_ObjSpawnlocs[i].GetPositionZ() + (Attackers ? -3.750f: 0),          BG_SA_ObjSpawnlocs[i].GetOrientation(), 0, 0, 0, 0, RESPAWN_ONE_DAY))        {            TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn one of the BG_SA_BOAT, Entry: %u", boatid);            continue;        }    }    for (uint8 i = BG_SA_SIGIL_1; i <= BG_SA_LEFT_FLAGPOLE; i++)    {        if (!AddObject(i, BG_SA_ObjEntries[i], BG_SA_ObjSpawnlocs[i], 0, 0, 0, 0, RESPAWN_ONE_DAY))        {            TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Sigil, Entry: %u", BG_SA_ObjEntries[i]);            continue;        }    }    // MAD props for Kiper for discovering those values - 4 hours of his work.    GetBGObject(BG_SA_BOAT_ONE)->UpdateRotationFields(1.0f, 0.0002f);    GetBGObject(BG_SA_BOAT_TWO)->UpdateRotationFields(1.0f, 0.00001f);    SpawnBGObject(BG_SA_BOAT_ONE, RESPAWN_IMMEDIATELY);    SpawnBGObject(BG_SA_BOAT_TWO, RESPAWN_IMMEDIATELY);    //Cannons and demolishers - NPCs are spawned    //By capturing GYs.    for (uint8 i = 0; i < BG_SA_DEMOLISHER_5; i++)    {        if (!AddCreature(BG_SA_NpcEntries[i], i, BG_SA_NpcSpawnlocs[i], Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE, 600))        {            TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Cannon or demolisher, Entry: %u, Attackers: %s", BG_SA_NpcEntries[i], Attackers == TEAM_ALLIANCE ? "Horde(1)" : "Alliance(0)");            continue;        }    }    OverrideGunFaction();    DemolisherStartState(true);    for (uint8 i = 0; i <= BG_SA_PORTAL_DEFFENDER_RED; i++)    {        SpawnBGObject(i, RESPAWN_IMMEDIATELY);        GetBGObject(i)->SetFaction(defF);    }    GetBGObject(BG_SA_TITAN_RELIC)->SetFaction(atF);    GetBGObject(BG_SA_TITAN_RELIC)->Refresh();    for (uint8 i = 0; i <= 5; i++)        GateStatus[i] = BG_SA_GATE_OK;//.........这里部分代码省略.........
开发者ID:Agyla,项目名称:ArkCORE4,代码行数:101,


示例11: GetBGObject

void BattlegroundIC::PostUpdateImpl(uint32 diff){    if (GetStatus() != STATUS_IN_PROGRESS)        return;    if (!doorsClosed)    {        if (closeFortressDoorsTimer <= diff)        {            GetBGObject(BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01)->RemoveFromWorld();            GetBGObject(BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01)->RemoveFromWorld();            GetBGObject(BG_IC_GO_ALLIANCE_GATE_3)->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); // Alliance door            GetBGObject(BG_IC_GO_HORDE_GATE_1)->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); // Horde door            doorsClosed = true;        } else closeFortressDoorsTimer -= diff;    }    for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; ++i)    {        if (nodePoint[i].nodeType == NODE_TYPE_DOCKS)        {            if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||                nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)            {                if (docksTimer <= diff)                {                    // we need to confirm this, i am not sure if this every 3 minutes                    for (uint8 u = (nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_1_A : BG_IC_NPC_CATAPULT_1_H); u < (nodePoint[i].faction  == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_4_A : BG_IC_NPC_CATAPULT_4_H); ++u)                    {                        if (Creature* catapult = GetBGCreature(u))                        {                            if (!catapult->isAlive())                                catapult->Respawn(true);                        }                    }                    // we need to confirm this is blizzlike, not sure if it is every 3 minutes                    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;//.........这里部分代码省略.........
开发者ID:bobbyxz,项目名称:TrinityCore,代码行数:101,


示例12: CreateTransport

bool BattlegroundIC::SetupBattleground(){    for (uint8 i = 0; i < MAX_NORMAL_GAMEOBJECTS_SPAWNS; ++i)    {        if (!AddObject(BG_IC_ObjSpawnlocs[i].type, BG_IC_ObjSpawnlocs[i].entry,            BG_IC_ObjSpawnlocs[i].x, BG_IC_ObjSpawnlocs[i].y,            BG_IC_ObjSpawnlocs[i].z, BG_IC_ObjSpawnlocs[i].o,            0, 0, 0, 0, RESPAWN_ONE_DAY))        {            sLog->outError(LOG_FILTER_BATTLEGROUND, "Isle of Conquest: There was an error spawning gameobject %u", BG_IC_ObjSpawnlocs[i].entry);            return false;        }    }    for (uint8 i = 2; i < MAX_NORMAL_NPCS_SPAWNS; ++i)    {        if (!AddCreature(BG_IC_NpcSpawnlocs[i].entry, BG_IC_NpcSpawnlocs[i].type, BG_IC_NpcSpawnlocs[i].team,            BG_IC_NpcSpawnlocs[i].x, BG_IC_NpcSpawnlocs[i].y,            BG_IC_NpcSpawnlocs[i].z, BG_IC_NpcSpawnlocs[i].o,            RESPAWN_ONE_DAY))        {            sLog->outError(LOG_FILTER_BATTLEGROUND, "Isle of Conquest: There was an error spawning creature %u", BG_IC_NpcSpawnlocs[i].entry);            return false;        }    }    if (!AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+5, BG_IC_SpiritGuidePos[5][0], BG_IC_SpiritGuidePos[5][1], BG_IC_SpiritGuidePos[5][2], BG_IC_SpiritGuidePos[5][3], ALLIANCE)        || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+6, BG_IC_SpiritGuidePos[6][0], BG_IC_SpiritGuidePos[6][1], BG_IC_SpiritGuidePos[6][2], BG_IC_SpiritGuidePos[6][3], HORDE)        || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+3, BG_IC_SpiritGuidePos[7][0], BG_IC_SpiritGuidePos[7][1], BG_IC_SpiritGuidePos[7][2], BG_IC_SpiritGuidePos[7][3], ALLIANCE)        || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+4, BG_IC_SpiritGuidePos[8][0], BG_IC_SpiritGuidePos[8][1], BG_IC_SpiritGuidePos[8][2], BG_IC_SpiritGuidePos[8][3], HORDE))    {        sLog->outError(LOG_FILTER_BATTLEGROUND, "Isle of Conquest: Failed to spawn initial spirit guide!");        return false;    }    gunshipHorde = CreateTransport(GO_HORDE_GUNSHIP, TRANSPORT_PERIOD_TIME);    gunshipAlliance = CreateTransport(GO_ALLIANCE_GUNSHIP, TRANSPORT_PERIOD_TIME);    if (!gunshipAlliance || !gunshipHorde)    {        sLog->outError(LOG_FILTER_BATTLEGROUND, "Isle of Conquest: There was an error creating gunships!");        return false;    }    //Send transport init packet to all player in map    for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)    {        if (Player* player = ObjectAccessor::FindPlayer(itr->first))            SendTransportInit(player);    }    // setting correct factions for Keep Cannons    for (uint8 i = BG_IC_NPC_KEEP_CANNON_1; i < BG_IC_NPC_KEEP_CANNON_12; ++i)        GetBGCreature(i)->setFaction(BG_IC_Factions[0]);    for (uint8 i = BG_IC_NPC_KEEP_CANNON_13; i < BG_IC_NPC_KEEP_CANNON_25; ++i)        GetBGCreature(i)->setFaction(BG_IC_Factions[1]);    // correcting spawn time for keeps bombs    for (uint8 i = BG_IC_GO_HUGE_SEAFORIUM_BOMBS_A_1; i < BG_IC_GO_HUGE_SEAFORIUM_BOMBS_H_4; ++i)        GetBGObject(i)->SetRespawnTime(10);    return true;}
开发者ID:bobbyxz,项目名称:TrinityCore,代码行数:63,


示例13: DelObject

bool BattleGroundSA::ResetObjs(){    uint32 atF = BG_SA_Factions[attackers];    uint32 defF = BG_SA_Factions[attackers ? TEAM_ALLIANCE : TEAM_HORDE];    for (uint8 i = 0; i <BG_SA_MAXOBJ; i++)        DelObject(i);    for (uint8 i = 0; i < BG_SA_MAXNPC; i++)        DelCreature(i);    for (uint8 i = BG_SA_MAXNPC; i < BG_SA_MAXNPC + BG_SA_MAX_GY; i++)        DelCreature(i);    for (uint8 i = 0; i < 6; i++)        GateStatus[i] = BG_SA_GATE_OK;    for (uint8 i = 0; i < BG_SA_CENTRAL_FLAG; i++)    {        if (!AddObject(i,BG_SA_ObjEntries[i],                       BG_SA_ObjSpawnlocs[i][0],BG_SA_ObjSpawnlocs[i][1],                       BG_SA_ObjSpawnlocs[i][2],BG_SA_ObjSpawnlocs[i][3],                       0,0,0,0,RESPAWN_ONE_DAY))            return false;    }    //Cannons and demolishers - NPCs are spawned    //By capturing GYs.    for (uint8 i = 0; i < BG_SA_NPC_SPARKLIGHT; i++)    {        if (!AddCreature(BG_SA_NpcEntries[i], i, (attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE),                         BG_SA_NpcSpawnlocs[i][0],BG_SA_NpcSpawnlocs[i][1],                         BG_SA_NpcSpawnlocs[i][2],BG_SA_NpcSpawnlocs[i][3]))            return false;    }    OverrideGunFaction();    for (uint8 i = 0; i <= BG_SA_TITAN_RELIC; i++)    {        SpawnBGObject(i, RESPAWN_IMMEDIATELY);        GetBGObject(i)->SetUInt32Value(GAMEOBJECT_FACTION, defF);    }    GetBGObject(BG_SA_TITAN_RELIC)->SetUInt32Value(GAMEOBJECT_FACTION, atF);    GetBGObject(BG_SA_TITAN_RELIC)->Refresh();    for (uint8 i = 0; i <= 5; i++)        GateStatus[i] = BG_SA_GATE_OK;    // MAD props for Kiper for discovering those values - 4 hours of his work.    GetBGObject(BG_SA_BOAT_ONE)->UpdateRotationFields(1.0f, 0.0002f);    GetBGObject(BG_SA_BOAT_TWO)->UpdateRotationFields(1.0f, 0.00001f);    SpawnBGObject(BG_SA_BOAT_ONE, RESPAWN_IMMEDIATELY);    SpawnBGObject(BG_SA_BOAT_TWO, RESPAWN_IMMEDIATELY);    TotalTime = 0;    ShipsStarted = false;    //Graveyards!    for (uint8 i = 0; i < BG_SA_MAX_GY; i++)    {        WorldSafeLocsEntry const *sg = NULL;        sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]);        if (!sg)        {            sLog.outError("SOTA: Can't find GY entry %u",BG_SA_GYEntries[i]);            return false;        }        if (i == BG_SA_BEACH_GY)        {            GraveyardStatus[i] = attackers;            AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], ((attackers == TEAM_HORDE)? HORDE : ALLIANCE));        }        else        {            GraveyardStatus[i] = ((attackers == TEAM_HORDE)? TEAM_ALLIANCE : TEAM_HORDE);            if (!AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], ((attackers == TEAM_HORDE)? ALLIANCE : HORDE)))                sLog.outError("SOTA: couldn't spawn GY: %u",i);        }    }    //GY capture points    for (uint8 i = BG_SA_CENTRAL_FLAG; i < BG_SA_MAXOBJ; i++)    {        AddObject(i, BG_SA_ObjEntries[i] - (attackers == TEAM_ALLIANCE ? 1:0),                  BG_SA_ObjSpawnlocs[i][0], BG_SA_ObjSpawnlocs[i][1],                  BG_SA_ObjSpawnlocs[i][2], BG_SA_ObjSpawnlocs[i][3],                  0,0,0,0,RESPAWN_ONE_DAY);        GetBGObject(i)->SetUInt32Value(GAMEOBJECT_FACTION, atF);    }    //Player may enter BEFORE we set up bG - lets update his worldstates anyway...    UpdateWorldState(BG_SA_RIGHT_GY_HORDE , GraveyardStatus[BG_SA_RIGHT_CAPTURABLE_GY] == TEAM_HORDE?1:0);    UpdateWorldState(BG_SA_LEFT_GY_HORDE , GraveyardStatus[BG_SA_LEFT_CAPTURABLE_GY] == TEAM_HORDE?1:0);    UpdateWorldState(BG_SA_CENTER_GY_HORDE , GraveyardStatus[BG_SA_CENTRAL_CAPTURABLE_GY] == TEAM_HORDE?1:0);//.........这里部分代码省略.........
开发者ID:Rhyuk,项目名称:Dev,代码行数:101,



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


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