这篇教程C++ DelObject函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中DelObject函数的典型用法代码示例。如果您正苦于以下问题:C++ DelObject函数的具体用法?C++ DelObject怎么用?C++ DelObject使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了DelObject函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: DelObjectbool BattlegroundNA::PreUpdateImpl(uint32 diff){ if (doordelete) { if (doordelete <= diff) { for (uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_2; ++i) DelObject(i); doordelete = 0; } else doordelete -= diff; } return true;}
开发者ID:Rastrian,项目名称:CataCore,代码行数:15,
示例2: DelObjectvoid OPvPCapturePointEP_NPT::SummonGO(uint32 team){ if (m_SummonedGOSide != team) { m_SummonedGOSide = team; DelObject(EP_NPT_BUFF); AddObject(EP_NPT_BUFF, EP_NPT_LordaeronShrine.entry, EP_NPT_LordaeronShrine.map, EP_NPT_LordaeronShrine.pos, EP_NPT_LordaeronShrine.rot); Map* map = sMapMgr->FindMap(0, 0); auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_NPT_BUFF]); for (auto itr = bounds.first; itr != bounds.second; ++itr) if (GameObject* go = itr->second) go->SetFaction(team == ALLIANCE ? FACTION_ALLIANCE_GENERIC : FACTION_HORDE_GENERIC); }}
开发者ID:Refuge89,项目名称:TrinityCore,代码行数:15,
示例3: DelObjectvoid BattleGroundNA::Update(time_t diff){ BattleGround::Update(diff); if (GetStatus() == STATUS_IN_PROGRESS) { m_TimeElapsedSinceBeggining += diff; if (m_TimeElapsedSinceBeggining >= BG_NA_DOOR_DESPAWN_TIMER && !m_doorDespawned) { m_doorDespawned = true; for (uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_2; i++) DelObject(i); } }}
开发者ID:Blumfield,项目名称:TBCPvP,代码行数:16,
示例4: GetClosestGraveYardvoid BattlegroundIC::_NodeDeOccupied(uint8 node){ if(!m_BgCreatures[node] || !GetBGCreature(node)) return; std::vector<uint64> ghost_list = m_ReviveQueue[m_BgCreatures[node]]; if (!ghost_list.empty()) { WorldSafeLocsEntry const *ClosestGrave = NULL; for (std::vector<uint64>::const_iterator itr = ghost_list.begin(); itr != ghost_list.end(); ++itr) { Player* plr = sObjectMgr.GetPlayer(*itr); if (!plr) continue; if (!ClosestGrave) // cache ClosestGrave = GetClosestGraveYard(plr); if (ClosestGrave) plr->TeleportTo(GetMapId(), ClosestGrave->x, ClosestGrave->y, ClosestGrave->z, plr->GetOrientation()); } } //Remove spiritguide DelCreature(node); switch(node) { case BG_IC_NODE_WORKSHOP: DeSpawnNpcType(IC_TYPE_DEMOLISSER_H); DeSpawnNpcType(IC_TYPE_SIEGE_H); DeSpawnNpcType(IC_TYPE_DEMOLISSER_A); DeSpawnNpcType(IC_TYPE_SIEGE_A); break ; case BG_IC_NODE_DOCK: //pop de catapulte et lanceur de glaive DeSpawnNpcType(IC_TYPE_DOCKVEHICLE_A); DeSpawnNpcType(IC_TYPE_DOCKVEHICLE_H); break ; case BG_IC_NODE_HANGAR: for (int i = 0 ; i < MAX_BG_IC_OBJ; ++i) { if(BG_IC_OBJ[i].type == IC_TYPE_GUNSHIPTELEPORTER) DelObject(BG_IC_OBJ[i].id); } break ; }}
开发者ID:sensibob,项目名称:tempestcore,代码行数:47,
示例5: DelObjectvoid OPvPCapturePointEP_NPT::SummonGO(uint32 team) { if (m_SummonedGOSide != team) { m_SummonedGOSide = team; DelObject(EP_NPT_BUFF); AddObject(EP_NPT_BUFF, EP_NPT_LordaeronShrine.entry, EP_NPT_LordaeronShrine.map, EP_NPT_LordaeronShrine.x, EP_NPT_LordaeronShrine.y, EP_NPT_LordaeronShrine.z, EP_NPT_LordaeronShrine.o, EP_NPT_LordaeronShrine.rot0, EP_NPT_LordaeronShrine.rot1, EP_NPT_LordaeronShrine.rot2, EP_NPT_LordaeronShrine.rot3); GameObject * go = HashMapHolder<GameObject>::Find( m_Objects[EP_NPT_BUFF]); if (go) go->SetUInt32Value(GAMEOBJECT_FACTION, (team == ALLIANCE ? 84 : 83)); }}
开发者ID:Bootz,项目名称:DeepshjirRepack,代码行数:17,
示例6: getGateIdFromDamagedOrDestroyEventIdvoid BattlegroundSA::DestroyGate(Player* player, GameObject* go){ uint32 i = getGateIdFromDamagedOrDestroyEventId(go->GetGOInfo()->building.destroyedEvent); if (!GateStatus[i]) return; if (GameObject* g = GetBGObject(i)) { if (g->GetGOValue()->Building.Health == 0) { GateStatus[i] = BG_SA_GATE_DESTROYED; uint32 uws = getWorldStateFromGateId(i); if (uws) UpdateWorldState(uws, GateStatus[i]); bool rewardHonor = true; gateDestroyed = true; switch (i) { case BG_SA_GREEN_GATE: if (GateStatus[BG_SA_BLUE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_BLUE_GATE: if (GateStatus[BG_SA_GREEN_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_RED_GATE: if (GateStatus[BG_SA_PURPLE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_PURPLE_GATE: if (GateStatus[BG_SA_RED_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; default: break; } if (i < 5) DelObject(i + 14); UpdatePlayerScore(player, SCORE_DESTROYED_WALL, 1); if (rewardHonor) UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(1)); } }}
开发者ID:Ayik0,项目名称:DeathCore_5.4.8,代码行数:46,
示例7: switchvoid BattleGroundSA::DestroyGate(uint32 i, Player* pl){ if (!GateStatus[i]) return; if (GameObject* g = GetBGObject(i)) { if (g->GetGOValue()->building.health == 0) { GateStatus[i] = BG_SA_GATE_DESTROYED; uint32 uws = 0; switch(i) { case 0: uws = BG_SA_GREEN_GATEWS; break; case 1: uws = BG_SA_YELLOW_GATEWS; break; case 2: uws = BG_SA_BLUE_GATEWS; break; case 3: uws = BG_SA_RED_GATEWS; break; case 4: uws = BG_SA_PURPLE_GATEWS; break; case 5: uws = BG_SA_ANCIENT_GATEWS; break; default: ASSERT(false); break; } if (i < 5) DelObject(i+9); UpdateWorldState(uws, GateStatus[i]); UpdatePlayerScore(pl,SCORE_DESTROYED_WALL, 1); } }}
开发者ID:Rhyuk,项目名称:Dev,代码行数:43,
示例8: GetGateIDFromDestroyEventIDvoid BattlegroundSA::DestroyGate(Player* pl, GameObject* /*go*/, uint32 destroyedEvent){ uint32 i = GetGateIDFromDestroyEventID(destroyedEvent); if (!GateStatus[i]) return; if (GameObject* g = GetBGObject(i)) { if (g->GetGOValue()->building.health == 0) { GateStatus[i] = BG_SA_GATE_DESTROYED; uint32 uws = GetWorldStateFromGateID(i); if (uws) UpdateWorldState(uws, GateStatus[i]); bool rewardHonor = true; switch(i) { case BG_SA_GREEN_GATE: if (GateStatus[BG_SA_BLUE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_BLUE_GATE: if (GateStatus[BG_SA_GREEN_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_RED_GATE: if (GateStatus[BG_SA_PURPLE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_PURPLE_GATE: if (GateStatus[BG_SA_RED_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; } if (i < 5) DelObject(i+9); UpdatePlayerScore(pl,SCORE_DESTROYED_WALL, 1); if (rewardHonor) UpdatePlayerScore(pl,SCORE_BONUS_HONOR,(GetBonusHonorFromKill(1))); } }}
开发者ID:mmihail,项目名称:trinitycore10353,代码行数:43,
示例9: notifyDeletedvoidWeakHandleable::removeHandle(){ bool bDeleteSelf = false; { SyncHandle; m_iNumHandles--; if (m_iNumHandles == 0) { notifyDeleted(); if (m_iNumHandles == 0) bDeleteSelf = true; } } if (bDeleteSelf) DelObject(this);}
开发者ID:tomazos,项目名称:Folderscope,代码行数:20,
示例10: OnLButtonDblclkLRESULT OnLButtonDblclk(HWND hWnd,WPARAM wParam,LPARAM lParam){ int TempSel; TCHAR *pText; TempSel=FindObject(LOWORD(lParam),HIWORD(lParam)); if (TempSel == -1) { return 0; } if (arObj[TempSel]->Type == DT_TEXT) { pText=arObj[TempSel]->Text; if (DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_TEXT),hWnd, TextDlgProc,(LPARAM)&pText) == IDOK) { if (lstrlen(pText) == 0) { DelObject(TempSel); } else { arObj[arNum-1]->Text=pText; arObj[arNum-1]->Len=lstrlen(pText)+1; } InvalidateRect(hWndMain,NULL,TRUE); } } return 0;}
开发者ID:MaybeS,项目名称:when_i_was_a_kid,代码行数:24,
示例11: ifvoid OPvPCapturePointEP_NPT::ChangeState() { // if changing from controlling alliance to horde or vice versa if (m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State) { sWorld->SendZoneText( EP_GraveYardZone, sObjectMgr->GetArkCoreStringForDBCLocale( LANG_OPVP_EP_LOOSE_NPT_A)); ((OutdoorPvPEP*) m_PvP)->EP_Controls[EP_NPT] = 0; } else if (m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State) { sWorld->SendZoneText( EP_GraveYardZone, sObjectMgr->GetArkCoreStringForDBCLocale( LANG_OPVP_EP_LOOSE_NPT_H)); ((OutdoorPvPEP*) m_PvP)->EP_Controls[EP_NPT] = 0; } uint32 artkit = 21; switch (m_State) { case OBJECTIVESTATE_ALLIANCE: m_TowerState = EP_TS_A; artkit = 2; SummonGO(ALLIANCE); ((OutdoorPvPEP*) m_PvP)->EP_Controls[EP_NPT] = ALLIANCE; if (m_OldState != m_State) sWorld->SendZoneText( EP_GraveYardZone, sObjectMgr->GetArkCoreStringForDBCLocale( LANG_OPVP_EP_CAPTURE_NPT_A)); break; case OBJECTIVESTATE_HORDE: m_TowerState = EP_TS_H; artkit = 1; SummonGO(HORDE); ((OutdoorPvPEP*) m_PvP)->EP_Controls[EP_NPT] = HORDE; if (m_OldState != m_State) sWorld->SendZoneText( EP_GraveYardZone, sObjectMgr->GetArkCoreStringForDBCLocale( LANG_OPVP_EP_CAPTURE_NPT_H)); break; case OBJECTIVESTATE_NEUTRAL: m_TowerState = EP_TS_N; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; break; case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; break; case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; } GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID); GameObject* flag2 = HashMapHolder<GameObject>::Find( m_Objects[EP_NPT_FLAGS]); if (flag) { flag->SetGoArtKit(artkit); } if (flag2) { flag2->SetGoArtKit(artkit); } UpdateTowerState(); // complete quest objective if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H) SendObjectiveComplete(EP_NPT_CM, 0);}
开发者ID:Bootz,项目名称:DeepshjirRepack,代码行数:80,
示例12: SendTransportsRemovebool 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; for (uint8 i = 0; i <= BG_SA_PORTAL_DEFFENDER_RED; 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_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][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_LEFT_FLAGPOLE; 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_DEMOLISHER_5; 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_PORTAL_DEFFENDER_RED; i++) { SpawnBGObject(i, RESPAWN_IMMEDIATELY); GetBGObject(i)->SetUInt32Value(GAMEOBJECT_FIELD_FACTION_TEMPLATE, defF); } GetBGObject(BG_SA_TITAN_RELIC)->SetUInt32Value(GAMEOBJECT_FIELD_FACTION_TEMPLATE, atF); GetBGObject(BG_SA_TITAN_RELIC)->Refresh(); for (uint8 i = 0; i <= 5; i++) GateStatus[i] = BG_SA_GATE_OK; TotalTime = 0; ShipsStarted = false; gateDestroyed = 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) return false;//.........这里部分代码省略.........
开发者ID:cooler-SAI,项目名称:PandaFire,代码行数:101,
示例13: switchvoid BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* invoker /*= NULL*/){ if (GameObject* go = obj->ToGameObject()) { switch (go->GetGoType()) { case GAMEOBJECT_TYPE_GOOBER: if (invoker) if (eventId == BG_SA_EVENT_TITAN_RELIC_ACTIVATED) TitanRelicActivated(invoker->ToPlayer()); break; case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING: { if (GateInfo const* gate = GetGate(obj->GetEntry())) { uint8 gateId = gate->GateId; // damaged if (eventId == go->GetGOInfo()->building.damagedEvent) { GateStatus[gateId] = BG_SA_GATE_DAMAGED; if (Creature* c = obj->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, gate->DamagedText, invoker); PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_ATTACKED_ALLIANCE : SOUND_WALL_ATTACKED_HORDE); } // destroyed else if (eventId == go->GetGOInfo()->building.destroyedEvent) { GateStatus[gate->GateId] = BG_SA_GATE_DESTROYED; _gateDestroyed = true; if (gateId < 5) DelObject(gateId + 14); if (Creature* c = obj->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, gate->DestroyedText, invoker); PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_DESTROYED_ALLIANCE : SOUND_WALL_DESTROYED_HORDE); bool rewardHonor = true; switch (gateId) { case BG_SA_GREEN_GATE: if (GateStatus[BG_SA_BLUE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_BLUE_GATE: if (GateStatus[BG_SA_GREEN_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_RED_GATE: if (GateStatus[BG_SA_PURPLE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_PURPLE_GATE: if (GateStatus[BG_SA_RED_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; default: break; } if (invoker) { if (Unit* unit = invoker->ToUnit()) { if (Player* player = unit->GetCharmerOrOwnerPlayerOrPlayerItself()) { UpdatePlayerScore(player, SCORE_DESTROYED_WALL, 1); if (rewardHonor) UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(1)); } } } } else break; UpdateWorldState(gate->WorldState, GateStatus[gateId]); } break; } default: break; } }}
开发者ID:redlaine,项目名称:TrinityCore,代码行数:89,
示例14: GetNextBannervoid 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,
示例15: if//.........这里部分代码省略......... del = NA_DESTROYED_ROOST_S; add = NA_ROOST_S; add2 = NA_BOMB_WAGON_S; if (m_ControllingFaction == HORDE) m_WyvernStateSouth = WYVERN_ALLIANCE; else m_WyvernStateSouth = WYVERN_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_S); break; case NA_DESTROYED_ROOST_N: del = NA_DESTROYED_ROOST_N; add = NA_ROOST_N; add2 = NA_BOMB_WAGON_N; if (m_ControllingFaction == HORDE) m_WyvernStateNorth = WYVERN_ALLIANCE; else m_WyvernStateNorth = WYVERN_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_N); break; case NA_DESTROYED_ROOST_W: del = NA_DESTROYED_ROOST_W; add = NA_ROOST_W; add2 = NA_BOMB_WAGON_W; if (m_ControllingFaction == HORDE) m_WyvernStateWest = WYVERN_ALLIANCE; else m_WyvernStateWest = WYVERN_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_W); break; case NA_DESTROYED_ROOST_E: del = NA_DESTROYED_ROOST_E; add = NA_ROOST_E; add2 = NA_BOMB_WAGON_E; if (m_ControllingFaction == HORDE) m_WyvernStateEast = WYVERN_ALLIANCE; else m_WyvernStateEast = WYVERN_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_E); break; case NA_BOMB_WAGON_S: del = NA_BOMB_WAGON_S; del2 = NA_ROOST_S; add = NA_DESTROYED_ROOST_S; if (m_ControllingFaction == HORDE) m_WyvernStateSouth = WYVERN_NEU_ALLIANCE; else m_WyvernStateSouth = WYVERN_NEU_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_S); break; case NA_BOMB_WAGON_N: del = NA_BOMB_WAGON_N; del2 = NA_ROOST_N; add = NA_DESTROYED_ROOST_N; if (m_ControllingFaction == HORDE) m_WyvernStateNorth = WYVERN_NEU_ALLIANCE; else m_WyvernStateNorth = WYVERN_NEU_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_N); break; case NA_BOMB_WAGON_W: del = NA_BOMB_WAGON_W; del2 = NA_ROOST_W; add = NA_DESTROYED_ROOST_W; if (m_ControllingFaction == HORDE) m_WyvernStateWest = WYVERN_NEU_ALLIANCE; else m_WyvernStateWest = WYVERN_NEU_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_W); break; case NA_BOMB_WAGON_E: del = NA_BOMB_WAGON_E; del2 = NA_ROOST_E; add = NA_DESTROYED_ROOST_E; if (m_ControllingFaction == HORDE) m_WyvernStateEast = WYVERN_NEU_ALLIANCE; else m_WyvernStateEast = WYVERN_NEU_HORDE; UpdateWyvernRoostWorldState(NA_ROOST_E); break; default: return -1; break; } if (del>-1) DelObject(del); if (del2>-1) DelObject(del2); if (add>-1) AddObject(add, gos[add].entry, gos[add].map, gos[add].x, gos[add].y, gos[add].z, gos[add].o, gos[add].rot0, gos[add].rot1, gos[add].rot2, gos[add].rot3); if (add2>-1) AddObject(add2, gos[add2].entry, gos[add2].map, gos[add2].x, gos[add2].y, gos[add2].z, gos[add2].o, gos[add2].rot0, gos[add2].rot1, gos[add2].rot2, gos[add2].rot3); return retval; } return -1;}
开发者ID:AvariusProject,项目名称:AvariusCore,代码行数:101,
示例16: DelCreaturevoid BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player *Source){ if (GraveyardStatus[i] == attackers) return; DelCreature(BG_SA_MAXNPC + i); GraveyardStatus[i] = Source->GetTeamId(); WorldSafeLocsEntry const *sg = NULL; sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]); AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], (GraveyardStatus[i] == TEAM_ALLIANCE? ALLIANCE : HORDE)); uint32 npc = 0; uint32 flag = 0; switch(i) { case BG_SA_LEFT_CAPTURABLE_GY: flag = BG_SA_LEFT_FLAG; DelObject(flag); AddObject(flag,(BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0:1)), BG_SA_ObjSpawnlocs[flag][0],BG_SA_ObjSpawnlocs[flag][1], BG_SA_ObjSpawnlocs[flag][2],BG_SA_ObjSpawnlocs[flag][3],0,0,0,0,RESPAWN_ONE_DAY); npc = BG_SA_NPC_RIGSPARK; AddCreature(BG_SA_NpcEntries[npc], npc, attackers, BG_SA_NpcSpawnlocs[npc][0], BG_SA_NpcSpawnlocs[npc][1], BG_SA_NpcSpawnlocs[npc][2], BG_SA_NpcSpawnlocs[npc][3]); UpdateWorldState(BG_SA_LEFT_GY_ALLIANCE, (GraveyardStatus[i] == TEAM_ALLIANCE? 1:0)); UpdateWorldState(BG_SA_LEFT_GY_HORDE, (GraveyardStatus[i] == TEAM_ALLIANCE? 0:1)); if (Source->GetTeamId() == TEAM_ALLIANCE) SendWarningToAll(LANG_BG_SA_A_GY_WEST); else SendWarningToAll(LANG_BG_SA_H_GY_WEST); break; case BG_SA_RIGHT_CAPTURABLE_GY: flag = BG_SA_RIGHT_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0:1)), BG_SA_ObjSpawnlocs[flag][0],BG_SA_ObjSpawnlocs[flag][1], BG_SA_ObjSpawnlocs[flag][2],BG_SA_ObjSpawnlocs[flag][3],0,0,0,0,RESPAWN_ONE_DAY); npc = BG_SA_NPC_SPARKLIGHT; AddCreature(BG_SA_NpcEntries[npc], npc, attackers, BG_SA_NpcSpawnlocs[npc][0], BG_SA_NpcSpawnlocs[npc][1], BG_SA_NpcSpawnlocs[npc][2], BG_SA_NpcSpawnlocs[npc][3]); UpdateWorldState(BG_SA_RIGHT_GY_ALLIANCE, (GraveyardStatus[i] == TEAM_ALLIANCE? 1:0)); UpdateWorldState(BG_SA_RIGHT_GY_HORDE, (GraveyardStatus[i] == TEAM_ALLIANCE? 0:1)); if (Source->GetTeamId() == TEAM_ALLIANCE) SendWarningToAll(LANG_BG_SA_A_GY_EAST); else SendWarningToAll(LANG_BG_SA_H_GY_EAST); break; case BG_SA_CENTRAL_CAPTURABLE_GY: flag = BG_SA_CENTRAL_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0:1)), BG_SA_ObjSpawnlocs[flag][0],BG_SA_ObjSpawnlocs[flag][1], BG_SA_ObjSpawnlocs[flag][2],BG_SA_ObjSpawnlocs[flag][3],0,0,0,0,RESPAWN_ONE_DAY); UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, (GraveyardStatus[i] == TEAM_ALLIANCE? 1:0)); UpdateWorldState(BG_SA_CENTER_GY_HORDE, (GraveyardStatus[i] == TEAM_ALLIANCE? 0:1)); if (Source->GetTeamId() == TEAM_ALLIANCE) SendWarningToAll(LANG_BG_SA_A_GY_SOUTH); else SendWarningToAll(LANG_BG_SA_H_GY_SOUTH); break; default: ASSERT(0); break; };}
开发者ID:mmihail,项目名称:trinitycore10353,代码行数:72,
示例17: switchvoid OPvPCapturePointEP_NPT::ChangeState(){ // if changing from controlling alliance to horde or vice versa if (m_OldState == OBJECTIVESTATE_ALLIANCE || m_OldState == OBJECTIVESTATE_HORDE) ((OutdoorPvPEP*)m_PvP)->SetControlledState(EP_NPT, 0); uint32 artkit = 21; switch (m_State) { case OBJECTIVESTATE_ALLIANCE: m_TowerState = EP_TS_A; artkit = 2; SummonGO(ALLIANCE); ((OutdoorPvPEP*)m_PvP)->SetControlledState(EP_NPT, ALLIANCE); m_PvP->SendDefenseMessage(EP_GraveYardZone, TEXT_NORTHPASS_TOWER_TAKEN_ALLIANCE); break; case OBJECTIVESTATE_HORDE: m_TowerState = EP_TS_H; artkit = 1; SummonGO(HORDE); ((OutdoorPvPEP*)m_PvP)->SetControlledState(EP_NPT, HORDE); m_PvP->SendDefenseMessage(EP_GraveYardZone, TEXT_NORTHPASS_TOWER_TAKEN_HORDE); break; case OBJECTIVESTATE_NEUTRAL: m_TowerState = EP_TS_N; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; break; case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; break; case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; } GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID); GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_NPT_FLAGS]); if (flag) { flag->SetGoArtKit(artkit); } if (flag2) { flag2->SetGoArtKit(artkit); } UpdateTowerState(); // complete quest objective if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H) SendObjectiveComplete(EP_NPT_CM, ObjectGuid::Empty);}
开发者ID:madisodr,项目名称:legacy-core,代码行数:64,
示例18: 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,
示例19: switchvoid OPvPCapturePointEP_NPT::ChangeState(){ // if changing from controlling alliance to horde or vice versa if (m_OldState == OBJECTIVESTATE_ALLIANCE || m_OldState == OBJECTIVESTATE_HORDE) ((OutdoorPvPEP*)m_PvP)->SetControlledState(EP_NPT, 0); uint32 artkit = 21; switch (m_State) { case OBJECTIVESTATE_ALLIANCE: m_TowerState = EP_TS_A; artkit = 2; SummonGO(ALLIANCE); ((OutdoorPvPEP*)m_PvP)->SetControlledState(EP_NPT, ALLIANCE); m_PvP->SendDefenseMessage(EP_GraveYardZone, TEXT_NORTHPASS_TOWER_TAKEN_ALLIANCE); break; case OBJECTIVESTATE_HORDE: m_TowerState = EP_TS_H; artkit = 1; SummonGO(HORDE); ((OutdoorPvPEP*)m_PvP)->SetControlledState(EP_NPT, HORDE); m_PvP->SendDefenseMessage(EP_GraveYardZone, TEXT_NORTHPASS_TOWER_TAKEN_HORDE); break; case OBJECTIVESTATE_NEUTRAL: m_TowerState = EP_TS_N; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; break; case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; break; case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; } Map* map = sMapMgr->FindMap(0, 0); auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_NPT_FLAGS]); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); UpdateTowerState(); // complete quest objective if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H) SendObjectiveComplete(EP_NPT_CM, ObjectGuid::Empty);}
开发者ID:AvariusProject,项目名称:AvariusCore,代码行数:62,
示例20: GetBGObjectvoid 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)->BuildStartMovePacket(GetBgMap()); } } } // 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:BACKUPLIB,项目名称:Infinity_MaNGOS,代码行数:87,
示例21: SendTransportsRemovebool 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:redlaine,项目名称:TrinityCore,代码行数:101,
示例22: DelCreaturevoid BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source){ if (GraveyardStatus[i] == Attackers) return; DelCreature(BG_SA_MAXNPC + i); GraveyardStatus[i] = Source->GetBGTeamId(); WorldSafeLocsEntry const* sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]); if (!sg) { TC_LOG_ERROR("bg.battleground", "BattlegroundSA::CaptureGraveyard: non-existant GY entry: %u", BG_SA_GYEntries[i]); return; } AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], GraveyardStatus[i]); uint32 npc = 0; uint32 flag = 0; switch (i) { case BG_SA_LEFT_CAPTURABLE_GY: flag = BG_SA_LEFT_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetBGTeamId() == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); npc = BG_SA_NPC_RIGSPARK; if (Creature* rigspark = AddCreature(BG_SA_NpcEntries[npc], npc, BG_SA_NpcSpawnlocs[npc], Attackers)) rigspark->AI()->Talk(TEXT_SPARKLIGHT_RIGSPARK_SPAWN); for (uint8 j = BG_SA_DEMOLISHER_7; j <= BG_SA_DEMOLISHER_8; j++) { AddCreature(BG_SA_NpcEntries[j], j, BG_SA_NpcSpawnlocs[j], (Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE), 600); if (Creature* dem = GetBGCreature(j)) dem->setFaction(BG_SA_Factions[Attackers]); } UpdateWorldState(BG_SA_LEFT_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); UpdateWorldState(BG_SA_LEFT_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, Source->GetBGTeamId() == TEAM_ALLIANCE ? TEXT_WEST_GRAVEYARD_CAPTURED_A : TEXT_WEST_GRAVEYARD_CAPTURED_H, Source); break; case BG_SA_RIGHT_CAPTURABLE_GY: flag = BG_SA_RIGHT_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetBGTeamId() == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); npc = BG_SA_NPC_SPARKLIGHT; if (Creature* sparklight = AddCreature(BG_SA_NpcEntries[npc], npc, BG_SA_NpcSpawnlocs[npc], Attackers)) sparklight->AI()->Talk(TEXT_SPARKLIGHT_RIGSPARK_SPAWN); for (uint8 j = BG_SA_DEMOLISHER_5; j <= BG_SA_DEMOLISHER_6; j++) { AddCreature(BG_SA_NpcEntries[j], j, BG_SA_NpcSpawnlocs[j], Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE, 600); if (Creature* dem = GetBGCreature(j)) dem->setFaction(BG_SA_Factions[Attackers]); } UpdateWorldState(BG_SA_RIGHT_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); UpdateWorldState(BG_SA_RIGHT_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, Source->GetBGTeamId() == TEAM_ALLIANCE ? TEXT_EAST_GRAVEYARD_CAPTURED_A : TEXT_EAST_GRAVEYARD_CAPTURED_H, Source); break; case BG_SA_CENTRAL_CAPTURABLE_GY: flag = BG_SA_CENTRAL_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetBGTeamId() == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); UpdateWorldState(BG_SA_CENTER_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, Source->GetBGTeamId() == TEAM_ALLIANCE ? TEXT_SOUTH_GRAVEYARD_CAPTURED_A : TEXT_SOUTH_GRAVEYARD_CAPTURED_H, Source); break; default: ASSERT(false); break; };}
开发者ID:redlaine,项目名称:TrinityCore,代码行数:88,
示例23: DelObjectbool 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],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; // 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_PORTAL_DEFFENDER_BLUE; 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); } for (uint8 i = BG_SA_PORTAL_DEFFENDER_BLUE; i < BG_SA_BOMB; i++) { AddObject(i, BG_SA_ObjEntries[i], BG_SA_ObjSpawnlocs[i][0], BG_SA_ObjSpawnlocs[i][1],//.........这里部分代码省略.........
开发者ID:mmihail,项目名称:trinitycore10353,代码行数:101,
示例24: DelCreaturevoid BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source){ if (GraveyardStatus[i] == Attackers) return; DelCreature(BG_SA_MAXNPC + i); GraveyardStatus[i] = Source->GetTeamId(); WorldSafeLocsEntry const* sg = sWorldSafeLocsStore.LookupEntry(BG_SA_GYEntries[i]); if (!sg) { TC_LOG_ERROR("bg.battleground", "BattlegroundSA::CaptureGraveyard: non-existant GY entry: %u", BG_SA_GYEntries[i]); return; } AddSpiritGuide(i + BG_SA_MAXNPC, sg->x, sg->y, sg->z, BG_SA_GYOrientation[i], (GraveyardStatus[i] == TEAM_ALLIANCE? ALLIANCE : HORDE)); uint32 npc = 0; uint32 flag = 0; switch (i) { case BG_SA_LEFT_CAPTURABLE_GY: flag = BG_SA_LEFT_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag][0], BG_SA_ObjSpawnlocs[flag][1], BG_SA_ObjSpawnlocs[flag][2], BG_SA_ObjSpawnlocs[flag][3], 0, 0, 0, 0, RESPAWN_ONE_DAY); npc = BG_SA_NPC_RIGSPARK; AddCreature(BG_SA_NpcEntries[npc], npc, Attackers, BG_SA_NpcSpawnlocs[npc][0], BG_SA_NpcSpawnlocs[npc][1], BG_SA_NpcSpawnlocs[npc][2], BG_SA_NpcSpawnlocs[npc][3]); for (uint8 j = BG_SA_DEMOLISHER_7; j <= BG_SA_DEMOLISHER_8; j++) { AddCreature(BG_SA_NpcEntries[j], j, (Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE), BG_SA_NpcSpawnlocs[j][0], BG_SA_NpcSpawnlocs[j][1], BG_SA_NpcSpawnlocs[j][2], BG_SA_NpcSpawnlocs[j][3], 600); if (Creature* dem = GetBGCreature(j)) dem->setFaction(BG_SA_Factions[Attackers]); } UpdateWorldState(BG_SA_LEFT_GY_ALLIANCE, (GraveyardStatus[i] == TEAM_ALLIANCE ? 1 : 0)); UpdateWorldState(BG_SA_LEFT_GY_HORDE, (GraveyardStatus[i] == TEAM_ALLIANCE ? 0 : 1)); if (Source->GetTeamId() == TEAM_ALLIANCE) SendWarningToAll(LANG_BG_SA_A_GY_WEST); else SendWarningToAll(LANG_BG_SA_H_GY_WEST); break; case BG_SA_RIGHT_CAPTURABLE_GY: flag = BG_SA_RIGHT_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag][0], BG_SA_ObjSpawnlocs[flag][1], BG_SA_ObjSpawnlocs[flag][2], BG_SA_ObjSpawnlocs[flag][3], 0, 0, 0, 0, RESPAWN_ONE_DAY); npc = BG_SA_NPC_SPARKLIGHT; AddCreature(BG_SA_NpcEntries[npc], npc, Attackers, BG_SA_NpcSpawnlocs[npc][0], BG_SA_NpcSpawnlocs[npc][1], BG_SA_NpcSpawnlocs[npc][2], BG_SA_NpcSpawnlocs[npc][3]); for (uint8 j = BG_SA_DEMOLISHER_5; j <= BG_SA_DEMOLISHER_6; j++) { AddCreature(BG_SA_NpcEntries[j], j, (Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE), BG_SA_NpcSpawnlocs[j][0], BG_SA_NpcSpawnlocs[j][1], BG_SA_NpcSpawnlocs[j][2], BG_SA_NpcSpawnlocs[j][3], 600); if (Creature* dem = GetBGCreature(j)) dem->setFaction(BG_SA_Factions[Attackers]); } UpdateWorldState(BG_SA_RIGHT_GY_ALLIANCE, (GraveyardStatus[i] == TEAM_ALLIANCE ? 1 : 0)); UpdateWorldState(BG_SA_RIGHT_GY_HORDE, (GraveyardStatus[i] == TEAM_ALLIANCE ? 0 : 1)); if (Source->GetTeamId() == TEAM_ALLIANCE) SendWarningToAll(LANG_BG_SA_A_GY_EAST); else SendWarningToAll(LANG_BG_SA_H_GY_EAST); break; case BG_SA_CENTRAL_CAPTURABLE_GY: flag = BG_SA_CENTRAL_FLAG; DelObject(flag); AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag][0], BG_SA_ObjSpawnlocs[flag][1], BG_SA_ObjSpawnlocs[flag][2], BG_SA_ObjSpawnlocs[flag][3], 0, 0, 0, 0, RESPAWN_ONE_DAY); UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, (GraveyardStatus[i] == TEAM_ALLIANCE ? 1 : 0)); UpdateWorldState(BG_SA_CENTER_GY_HORDE, (GraveyardStatus[i] == TEAM_ALLIANCE ? 0 : 1)); if (Source->GetTeamId() == TEAM_ALLIANCE) SendWarningToAll(LANG_BG_SA_A_GY_SOUTH); else SendWarningToAll(LANG_BG_SA_H_GY_SOUTH); break; default: ASSERT(false); break; };}
开发者ID:Ayik0,项目名称:DeathCore_5.4.8,代码行数:97,
示例25: ifbool OutdoorPvPObjectiveEP_NPT::Update(uint32 diff){ if (OutdoorPvPObjective::Update(diff)) { if (m_OldState != m_State || fabs(m_ShiftPhase) == m_ShiftMaxPhase) // state won't change, only phase when maxed out! { // if changing from controlling alliance to horde or vice versa if (m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State ) { sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetNeoStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_A)); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0; } else if (m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State ) { sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetNeoStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_H)); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0; } uint32 artkit = 21; switch(m_State) { case OBJECTIVESTATE_ALLIANCE: if (m_ShiftPhase == m_ShiftMaxPhase) m_TowerState = EP_TS_A; else m_TowerState = EP_TS_A_P; artkit = 2; SummonGO(ALLIANCE); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = ALLIANCE; if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetNeoStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A)); break; case OBJECTIVESTATE_HORDE: if (m_ShiftPhase == -m_ShiftMaxPhase) m_TowerState = EP_TS_H; else m_TowerState = EP_TS_H_P; artkit = 1; SummonGO(HORDE); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = HORDE; if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetNeoStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_H)); break; case OBJECTIVESTATE_NEUTRAL: m_TowerState = EP_TS_N; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; break; case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; break; } GameObject* flag = HashMapHolder<GameObject>::Find(m_CapturePoint); GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_NPT_FLAGS]); if (flag) { flag->SetGoArtKit(artkit); flag->SendUpdateObjectToAllExcept(NULL); } if (flag2) { flag2->SetGoArtKit(artkit); flag2->SendUpdateObjectToAllExcept(NULL); } UpdateTowerState(); // complete quest objective if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H) SendObjectiveComplete(EP_NPT_CM, 0); } if (m_ShiftPhase != m_OldPhase) { // send this too, sometimes the slider disappears, dunno why :( SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1); // send these updates to only the ones in this objective uint32 phase = (uint32)ceil((m_ShiftPhase + m_ShiftMaxPhase) / (2 * m_ShiftMaxPhase ) * 100.0f); SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase); // send this too, sometimes it resets :S SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, m_NeutralValue); } return m_OldState != m_State; } return false;}
开发者ID:Zekom,项目名称:NeoCore,代码行数:91,
示例26: DelObjectvoid OPvPCapturePointEP::UnsummonShrine(){ DelObject(EP_NPT_SHRINE); DelObject(EP_NPT_SHRINE_AURA); EP_TOWER_EVENT_TEAM[EP_TOWER_NORTHPASS] = 0;}
开发者ID:japtenks,项目名称:blizzlikecore,代码行数:6,
示例27: 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,
示例28: getGateIdFromDamagedOrDestroyEventIdvoid BattlegroundSA::DestroyGate(Player* player, GameObject* go){ uint32 i = getGateIdFromDamagedOrDestroyEventId(go->GetGOInfo()->building.destroyedEvent); if (!GateStatus[i]) return; if (GameObject* g = GetBGObject(i)) { if (g->GetGOValue()->Building.Health == 0) { GateStatus[i] = BG_SA_GATE_DESTROYED; uint32 uws = getWorldStateFromGateId(i); if (uws) UpdateWorldState(uws, GateStatus[i]); bool rewardHonor = true; gateDestroyed = true; switch (i) { case BG_SA_GREEN_GATE: if (GateStatus[BG_SA_BLUE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; for (uint8 bombIndex = 47; bombIndex < 59; bombIndex++) { if (GetBGObject(bombIndex)) GetBGObject(bombIndex)->RemoveFlag(GAMEOBJECT_FIELD_FLAGS, GO_FLAG_NOT_SELECTABLE); } break; case BG_SA_BLUE_GATE: if (GateStatus[BG_SA_GREEN_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; for (uint8 bombIndex = 59; bombIndex < 68; bombIndex++) { if (GetBGObject(bombIndex)) GetBGObject(bombIndex)->RemoveFlag(GAMEOBJECT_FIELD_FLAGS, GO_FLAG_NOT_SELECTABLE); } break; case BG_SA_RED_GATE: if (GateStatus[BG_SA_PURPLE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; for (uint8 bombIndex = 68; bombIndex < 77; bombIndex++) { if (GetBGObject(bombIndex)) GetBGObject(bombIndex)->RemoveFlag(GAMEOBJECT_FIELD_FLAGS, GO_FLAG_NOT_SELECTABLE); } break; case BG_SA_PURPLE_GATE: if (GateStatus[BG_SA_RED_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; for (uint8 bombIndex = 68; bombIndex < 77; bombIndex++) { if (GetBGObject(bombIndex)) GetBGObject(bombIndex)->RemoveFlag(GAMEOBJECT_FIELD_FLAGS, GO_FLAG_NOT_SELECTABLE); } break; case BG_SA_YELLOW_GATE: for (uint8 bombIndex = 77; bombIndex < 93; bombIndex++) { if (GetBGObject(bombIndex)) GetBGObject(bombIndex)->RemoveFlag(GAMEOBJECT_FIELD_FLAGS, GO_FLAG_NOT_SELECTABLE); } break; default: break; } if (i < 5) DelObject(i + 14); UpdatePlayerScore(player, SCORE_DESTROYED_WALL, 1); if (rewardHonor) UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(1)); } }}
开发者ID:cooler-SAI,项目名称:PandaFire,代码行数:73,
示例29: ifvoid OPvPCapturePointEP_NPT::ChangeState(){ if(fabs(m_value) == m_maxValue) // state won't change, only phase when maxed out! { // if changing from controlling alliance to horde or vice versa if( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State ) { sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetCWStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_A)); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0; } else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State ) { sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetCWStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_H)); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0; } uint32 artkit = 21; switch(m_State) { case OBJECTIVESTATE_ALLIANCE: if(m_value == m_maxValue) m_TowerState = EP_TS_A; else m_TowerState = EP_TS_A_P; artkit = 2; SummonGO(ALLIANCE); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = ALLIANCE; if(m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetCWStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A)); break; case OBJECTIVESTATE_HORDE: if(m_value == -m_maxValue) m_TowerState = EP_TS_H; else m_TowerState = EP_TS_H_P; artkit = 1; SummonGO(HORDE); ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = HORDE; if(m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetCWStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_H)); break; case OBJECTIVESTATE_NEUTRAL: m_TowerState = EP_TS_N; m_SummonedGOSide = 0; DelObject(EP_NPT_BUFF); break; case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: m_TowerState = EP_TS_N_A; break; case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: m_TowerState = EP_TS_N_H; break; } GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID); GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_NPT_FLAGS]); if(flag) { flag->SetGoArtKit(artkit); flag->SendUpdateObjectToAllExcept(NULL); } if(flag2) { flag2->SetGoArtKit(artkit); flag2->SendUpdateObjectToAllExcept(NULL); } UpdateTowerState(); // complete quest objective if(m_TowerState == EP_TS_A || m_TowerState == EP_TS_H) SendObjectiveComplete(EP_NPT_CM, 0); }}
开发者ID:lus5d,项目名称:cwcore,代码行数:75,
示例30: DelObjectvoid BattlegroundIC::_DelBanner(uint8 node,uint8 type,uint8 teamIndex){ DelObject(m_IC_NodeData[node].object_flag); DelObject(m_IC_NodeData[node].object_aura);}
开发者ID:sensibob,项目名称:tempestcore,代码行数:5,
注:本文中的DelObject函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ Delay10KTCYx函数代码示例 C++ DelMember函数代码示例 |