к личу долго портует всех боссов убил прохожу по середине шпиля и токо через 15 минут портует а если в комбате то сразу Что исправить ? Вот icecrown_citadel_teleport.cpp
/* * Copyright © 2008-2011 TrinityCore <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "ScriptedGossip.h" #include "ScriptMgr.h" #include "InstanceScript.h" #include "icecrown_citadel.h" #include "Spell.h" #define MAP_ULDUAR 631 enum ICCTeleportTargets { BASE_CAMP = 0, GROUNDS = 1, FORGE = 2, SCRAPYARD = 3, WALKWAY = 4, CONSERVATORY = 5, MAX = 6 }; float TeleportPointsICCGOs[6][3] = { {-17.071068f, 2211.468750f, 30.054554f}, // Light's Hammer {-503.593414f, 2211.468750f, 62.762070f}, // Oratory of the Damned {-615.445801f, 2211.470947f, 199.971207f}, // Rampart of Skulls {-549.355591f, 2211.194580f, 539.235474f}, // Deathbringer's Rise {4199.447266f, 2769.399414f, 351.064697f}, // Upper Spire {4356.508789f, 2565.680420f, 220.463043f}, // Sindragosa's Lair }; class icecrown_citadel_teleport : public GameObjectScript { public: icecrown_citadel_teleport() : GameObjectScript("icecrown_citadel_teleport") { } bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 sender, uint32 action) { player->PlayerTalkClass->ClearMenus(); if (sender != GOSSIP_SENDER_MAIN) return false; if (!player->getAttackers().empty()) return false; int pos = action - GOSSIP_ACTION_INFO_DEF; if (pos >= 0 && pos < MAX) player->TeleportTo(MAP_ULDUAR, TeleportPointsICCGOs[pos][0], TeleportPointsICCGOs[pos][1], TeleportPointsICCGOs[pos][2], 0.0f); player->CLOSE_GOSSIP_MENU(); return true; } bool OnGossipHello(Player* player, GameObject* go) { player->Dismount(); player->RemoveAurasByType(SPELL_AURA_MOUNTED); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Молот света", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + BASE_CAMP); if (InstanceScript* instance = go->GetInstanceScript()) { if (instance->GetBossState(DATA_LORD_MARROWGAR) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Молельня проклятых", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GROUNDS); if (instance->GetBossState(DATA_LADY_DEATHWHISPER) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Черепной вал", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + FORGE); if (instance->GetBossState(DATA_GUNSHIP_EVENT) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Подъем смертоносного", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + SCRAPYARD); if (instance->GetBossState(DATA_COLDFLAME_JETS) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Шпиль", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + WALKWAY); if (instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == DONE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Логово Королевы Льда", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + CONSERVATORY); } player->SEND_GOSSIP_MENU(go->GetGOInfo()->GetGossipMenuId(), go->GetGUID()); return true; } }; class at_frozen_throne_teleport : public AreaTriggerScript { public: at_frozen_throne_teleport() : AreaTriggerScript("at_frozen_throne_teleport") { } bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) { if (player->isInCombat()) { player->TeleportTo(631, 529.302f, -2124.49f, 840.25f, 3.1765f); return true; } if (InstanceScript* instance = player->GetInstanceScript()) if (instance->GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE && instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE && instance->GetBossState(DATA_SINDRAGOSA) == DONE && instance->GetBossState(DATA_THE_LICH_KING) != IN_PROGRESS) player->CastSpell(player, FROZEN_THRONE_TELEPORT, true); return true; } }; void AddSC_icecrown_citadel_teleport() { new icecrown_citadel_teleport(); new at_frozen_throne_teleport(); }
Сообщение #
1 отредактировано
lavere -
Воскресенье, 22.12.2013, 04:04
Цитата lavere (
)
if (player->isInCombat()) { player->TeleportTo(631, 529.302f, -2124.49f, 840.25f, 3.1765f); return true; }
удалить лишнее чтоб осталось Код
player->TeleportTo(631, 529.302f, -2124.49f, 840.25f, 3.1765f); return true;
Сообщение #
2 написано 22.12.2013 в 06:56
Сообщение #
3 написано 22.12.2013 в 10:47
Evrial , не близзлайк же) взять код с оф тринити. там сделано спелами. что есть правильно. Вряд ли это решит проблему с долгим телепортом.. думаю проблема в чем-то другом
Сообщение #
4 написано 22.12.2013 в 13:22
по первому посту понятно, что в комбате не так как без комбата. вот и удалили эту проверку.
Сообщение #
5 написано 22.12.2013 в 19:58
Цитата Evrial (
)
удалить лишнее чтоб осталось Код player->TeleportTo(631, 529.302f, -2124.49f, 840.25f, 3.1765f); return true;
сорь тупанул Помогло)
Сообщение #
6 написано 23.12.2013 в 12:11