PDA

Просмотр полной версии : Ареатриггеры


virusav
28.02.2010, 15:49
Создавал тему http://getmangos.com/community/showthread.php?12729-Areatriggers, но там ответа не последовало, дублирую здесь.

Есть http://ru.wowhead.com/?quest=11686 и подобные ему, где надо открыть несколько точек.
В кеше условия на убийство нпц (киллкредит).

На текущий момент для таких квестов расставлялись нпц с номерами киллкредитов, на них вешался АИ-скрипт, который при приближении заставлял умирать нпц.

Например, этот квест можно реализовать через ареатриггеры:
#q11686
DELETE FROM `creature_template_addon` WHERE `entry` IN (25669,25671,25672);
DELETE FROM `creature` WHERE `id` IN (25669,25671,25672);
REPLACE INTO `areatrigger_involvedrelation` SET `id`=4871, `quest`=11686;
REPLACE INTO `areatrigger_involvedrelation` SET `id`=4872, `quest`=11686;
REPLACE INTO `areatrigger_involvedrelation` SET `id`=4873, `quest`=11686;

Но в таком варианте в логе вылезает ошибка:
2010-02-28 14:38:37 Table `areatrigger_involvedrelation` has record (id: 4871) for not quest 11686, but quest not have flag QUEST_MANGOS_FLAGS_EXPLORATION_OR_EVENT. Trigger or quest flags must be fixed, quest modified to require objective.

Если поставить `specialflags`=2, то ошибки не будет, но квест нельзя будет сдать.

Получается, что аретриггеры можно использовать для зачета киллкредита, но ядро не позволяет этого сделать.

1. Можно ли реализовать использование ареатриггеров без жесткой привязки к флагам: для зачета киллкредита?
2. Можно ли разрешить использовать ареатриггер для разных квестов (альянс/орда):
ALTER TABLE `areatrigger_involvedrelation` ADD PRIMARY KEY (`id`,`quest`), DROP PRIMARY KEY;

Насколько я понимаю, удаление из мира расставленных нпц, которые на самом деле киллкредиты, должно снизить нагрузку при обработке игрового мира.

timmit
28.02.2010, 17:43
Я пока понять не могу, а как аретригер то понимает, что именно этот кредит надо комплилить?
в AreaTrigger.dbc ничего подобного нету

virusav
28.02.2010, 17:44
Согласен, нет такого, но засчитывает все 3 точки через ареатриггеры.

timmit
28.02.2010, 17:52
Надо объяснение Владимира такого факта, как так может, где прописано это. Если где то прописаны соответствие тригеров и кредитов, то это облегчает конечно все

virusav
28.02.2010, 18:23
Для того и написал здесь, т.к. на англоязычном форуме тема ушла уже на треться страницу, вряд ли кто заметит.

gerald
28.02.2010, 19:33
scriptdev2\scripts\world\areatrigger_scripts.cpp

timmit
01.03.2010, 10:12
Хм и правда, уже сделали скрипты для этого квеста, вот поэтому у тебя вирусав и засчитало

virusav
01.03.2010, 10:46
Уже посмотрел скрипт.

virusav
01.03.2010, 10:59
Теоретически можно было добавить в таблицу `areatrigger_involvedrelation` столбец со значением киллкредита, если он есть, т.к. это не единичный случай, а код в скрипте однотипный с разницей в пару слов.
В этом случае можно было бы все рулить в базе, а не пересобирать каждый раз СД2 из-за добавления очередного типичного куска, да и на чистом ядре работало бы.