16.08.2010, 12:45 | #1 |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
creature_ai_scripts
Столкнулся тут с квестом... http://ru.wowhead.com/quest=11169
Решил проверить, работает или нет. В YTDB есть спец. скрипт для этого квеста, однако у меня почему-то не работает. На НПС в creature_template_addon висит аура http://ru.wowhead.com/spell=42464. Она прокает спелл. Однако, помню как проходил этот кв на оффе. Тотем прокает спелл вовсе не раз в 2 секунды. Он прокает таким образом, что на цели висит бафф положенных 3 секунды, какое-то время цель без баффа и потом тотем снова прокает нужный спелл. С добавлением ауры мы имеем то, что тотем прокает спелл каждые 2 секунды, обновляя ауру на цели, т.о. бафф на цели будет висеть почти постоянно (хотя и с этом есть глюки). Решил сделать немного иначе - написать скрипт creature_ai_scripts для тотема, чтобы он просто повесил на себя ауру при спавне (без записи в creature_template_addon). выяснилось, однако, что EventAI для вызываемых спеллом НПС не работает (если поставить суммонящегося НПС в мире - скрипт пашет как надо). Почему так, имеет ли смысл лделать поддержку EventAI скриптов для призываемых НПС? |
Пользователь сказал cпасибо: | Vladimir (05.09.2010) |
16.08.2010, 13:40 | #2 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
А что тебе мешает поставить через 1 секунду не в бою чтобы кастил не повторяя, тогда будет как надо
|
16.08.2010, 16:18 | #4 | |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Цитата:
Хотя, думаю проще поправить в ядре триггер спелла. Т.е. если на цели есть уже аура от триггера - return; или там щас вроде fasle; Но дело в том, что см. первое предложение. Да в коде много чего можно проще сделать... Хотелось бы понять почему так, а не иначе в данном случае. |
|
02.09.2010, 12:41 | #5 |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Хм... Очень интересно...
EventAI для мобов призванных в скриптах типа gossip_scripts работает нормально. Значит надо копать вызов таких НПС, смотреть где у них добавляется загрузка скрипта и добавлять такую же загрузку скрипта при вызове моба посредством спелл-эффекта... |
03.09.2010, 03:17 | #6 |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Всё ясно, разобрался...
Квест из первого поста. Там дают тотем, итем, при юзе которого вызывается собственно тотем. На данный момент мангос полагает, что тотем не может иметь EventAI, поэтому при суммоне тотема инициализации EventAI не происходит. Хотя такое вполне может быть, т.к. бывает призыв квестовых тотемов. Вот так должно поправится нормально (сам ещё не тестировал): PHP код:
|
03.09.2010, 04:39 | #7 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Когда протестируете, я думаю стоит предложить патч у нас и на getmangos.com.
|
04.09.2010, 02:02 | #9 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Код:
Spell::DoSummonTotem { ... pTotem->Summon(m_caster); ... } void Totem::Summon(Unit* owner) { owner->GetMap()->Add((Creature*)this); AIM_Initialize(); ... }
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
04.09.2010, 13:37 | #10 | |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Цитата:
А во втором случае, как я понимаю AIM инициализируется для "хозяина" - (Unit* owner). |
|
05.09.2010, 01:54 | #11 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
AIM_Initialize(); в функции вызывается для тотема...
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
05.09.2010, 02:47 | #12 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Возможно вы правы в том что имеются отличия AIM_Initialize(); вызове - для тотема с temporarySummon от вызывается после добавления на карту. Это я поправлю.
НО. Описываемый старый вариант - это конечно через... конкретно. НО Вами планируемый вариант не менее хаковский Золотые слова... Так как пассивные тотемы кастуют при призыве на себя спелл из m_spells[0] Т.е почему бы просто не добавить в creature_template.spell1 необходимый спелл.. Проверил добавил - кастает - зачем надо было городить все выше обсуждаемое... По мне так раз тотем то первым делом и надо смотреть как сделать его как тотем... [added] Порялок инициализации поправлен в [10444] хотя он и неимеет отношение к данному случаю как выяснилось..
__________________
Так как устал объяснять знайте ICQ не пользуюсь Последний раз редактировалось Vladimir; 05.09.2010 в 03:41. |
05.09.2010, 11:46 | #13 |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Столкнулся с проблемой, что не правильно работает спелл, который должен кастовать тотем, решил хаком сделать через EventAI чтобы соответствовало действительности и вот натолкнулся на то, что EventAI для тотемов не пашет.
В первом посту я объяснял, что квестовые тотемы (или тотемы НПС) могут иметь уникальное поведение, да и в любом случае нормальная инициализация EventAI для них точно не помешает... |