![]() |
|
---|
|
Заселение / NPCs Ошибки заселения. Переставить моба или объект, проверить его снарягу, статистику и т.п. - в этом разделе. |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Helper TC_YTDB
|
![]()
Уже давно хотел про это написать, да все забывал, пока игроки опять не затянули в цлк
в коде тринити есть такая штука в instance_icecrown_citadel.cpp Код:
case NPC_KOR_KRON_GENERAL: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_ALLIANCE_COMMANDER); break; case NPC_KOR_KRON_LIEUTENANT: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_SKYBREAKER_LIEUTENANT); break; case NPC_TORTUNOK: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_ALANA_MOONSTRIKE); break; case NPC_GERARDO_THE_SUAVE: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_TALAN_MOONSTRIKE); break; case NPC_UVLUS_BANEFIRE: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_MALFUS_GRIMFROST); break; case NPC_IKFIRUS_THE_VILE: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_YILI); break; case NPC_VOL_GUK: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_JEDEBIA); break; case NPC_HARAGG_THE_UNSEEN: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_NIBY_THE_ALMIGHTY); break; case NPC_GARROSH_HELLSCREAM: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_KING_VARIAN_WRYNN); break; case NPC_DEATHBRINGER_SAURFANG: DeathbringerSaurfangGUID = creature->GetGUID(); break; case NPC_ALLIANCE_GUNSHIP_CANNON: case NPC_HORDE_GUNSHIP_CANNON: creature->SetControlled(true, UNIT_STATE_ROOT); break; case NPC_SE_HIGH_OVERLORD_SAURFANG: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_SE_MURADIN_BRONZEBEARD, creature->GetCreatureData()); // no break; case NPC_SE_MURADIN_BRONZEBEARD: DeathbringerSaurfangEventGUID = creature->GetGUID(); creature->LastUsedScriptID = creature->GetScriptId(); break; case NPC_SE_KOR_KRON_REAVER: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_SE_SKYBREAKER_MARINE); break; Весь принцип в следующем: 1. В цлк есть мобы которые видны лиш одной фракции. В результате образовались пары мобов которые не пересекаются. 2. Скрипт проверяет фракцию и на соответствующем условии меняет темплейт моба на противоположный в паре Скрипт сделан так что нужно заселение "пары" только для одной стороны (в нашем случае - орда), противоположная сторона получит противоположного моба из пары автоматически. (прямо как на оло) Следовательно уменьшается количество записей в базе, меньше нагрузка на память ну и все вытекающие. К чему я все это пишу? на YTDB заспавнены эти "парные мобы" для обеих сторон в фазах 64 и 128 изза чего скрипт работает очень странно иногда, то ивент не активируется то мобов слишком много. Что надо сделать чтобы этого не было. - удалить все заселение парных комплектов для альянса, а ордынской половине прописать первую фазу, чтобы скрипт мог адекватно работать по инструкции. В том куске кода наглядно видно какие мобы образуют парность. Код:
DELETE FROM `creature` WHERE `map`=631 AND `id` IN (37190, 38492, 37999, 37998, 38283, 37997, 38840, 38182, 39371); UPDATE `creature` SET `phaseMask`=1 WHERE `map`=631 AND `id` IN (37189, 38491, 37992, 37993, 38284, 37991, 38841, 38181, 39372); http://www.ytdb.ru/showthread.php?t=...ighlight=37007 тут уже писали Плюс надо поправить координаты спавна под стойки для них, так как они все почти по центру коридора фактически заспавнены, если мне не изменяет память на 335 они правильно стояли. Код:
UPDATE `creature` SET `MovementType` = 0 WHERE `id` = 37007; Код:
DELETE FROM `creature_template_addon` WHERE (`entry`=37007); INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (37007, 0, 0, 0, 0, 0, 70733); DELETE FROM `creature_template_addon` WHERE (`entry`=38031); INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (38031, 0, 0, 0, 0, 0, 70733);
__________________
и взгляда малого хватает, дабы увидеть тьму твою Последний раз редактировалось Chaosua; 21.05.2014 в 00:22. |
![]() |
![]() |
![]() |
#2 | |
YTDB dev
Регистрация: 05.11.2009
Адрес: Thunder Bluff
Сообщений: 3,625
Сказал(а) спасибо: 7,839
Поблагодарили 3,255 раз(а) в 498 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 | |
Ученый
Регистрация: 23.11.2012
Сообщений: 196
Сказал(а) спасибо: 69
Поблагодарили 16 раз(а) в 16 сообщениях
![]() |
![]() Цитата:
Chaosua скажите разрабам, чтобы поправили скрипт, а то у вас на Трине после активации ловушки Стражи не то что по вайпоинтам не ходят, а тупо вступают в бой, что является ошибкой. Код:
class spell_icc_sprit_alarm : public SpellScriptLoader { public: spell_icc_sprit_alarm() : SpellScriptLoader("spell_icc_sprit_alarm") { } class spell_icc_sprit_alarm_SpellScript : public SpellScript { PrepareSpellScript(spell_icc_sprit_alarm_SpellScript); void HandleEvent(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); uint32 trapId = 0; switch (GetSpellInfo()->Effects[effIndex].MiscValue) { case EVENT_AWAKEN_WARD_1: trapId = GO_SPIRIT_ALARM_1; break; case EVENT_AWAKEN_WARD_2: trapId = GO_SPIRIT_ALARM_2; break; case EVENT_AWAKEN_WARD_3: trapId = GO_SPIRIT_ALARM_3; break; case EVENT_AWAKEN_WARD_4: trapId = GO_SPIRIT_ALARM_4; break; default: return; } if (GameObject* trap = GetCaster()->FindNearestGameObject(trapId, 5.0f)) trap->SetRespawnTime(trap->GetGOInfo()->GetAutoCloseTime()); std::list<Creature*> wards; GetCaster()->GetCreatureListWithEntryInGrid(wards, NPC_DEATHBOUND_WARD, 150.0f); wards.sort(Trinity::ObjectDistanceOrderPred(GetCaster())); for (std::list<Creature*>::iterator itr = wards.begin(); itr != wards.end(); ++itr) { if ((*itr)->IsAlive() && (*itr)->HasAura(SPELL_STONEFORM)) { (*itr)->AI()->Talk(SAY_TRAP_ACTIVATE); (*itr)->RemoveAurasDueToSpell(SPELL_STONEFORM); if (Unit* target = (*itr)->SelectNearestTarget(150.0f)) (*itr)->AI()->AttackStart(target); break; } } } Код:
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (Creature* target = GetTarget()->ToCreature()) { target->SetReactState(REACT_PASSIVE); target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC); target->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_CUSTOM_SPELL_02); } } void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (Creature* target = GetTarget()->ToCreature()) { target->SetReactState(REACT_AGGRESSIVE); target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC); target->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); } }
__________________
Ты кто? Зёбра! Ктооооооо?! ![]() |
|
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
4.3.4 trinity | VENOM | Корзина / Trash can | 5 | 07.03.2013 22:16 |
YTDB Trinity 4.3.4 | Mentyr | Корзина / Trash can | 2 | 30.11.2012 13:40 |
Заселение | Borodatych | Корзина / Trash can | 8 | 11.03.2012 12:45 |