Ru-MaNGOS  

Вернуться   Ru-MaNGOS > База > EventAI

Важная информация

EventAI EventAI

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2010, 13:45   #1
KiriX
Умный
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 488
Сказал(а) спасибо: 698
Поблагодарили 431 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию 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 скриптов для призываемых НПС?
KiriX вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Vladimir (05.09.2010)
Старый 16.08.2010, 14:40   #2
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 89
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

А что тебе мешает поставить через 1 секунду не в бою чтобы кастил не повторяя, тогда будет как надо
timmit вне форума   Ответить с цитированием
Старый 16.08.2010, 17:03   #3
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 606
Сказал(а) спасибо: 57
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Напиши обычный скрипт а не EventAI. Это еще и проще и памяти ест меньше.
rsa вне форума   Ответить с цитированием
Старый 16.08.2010, 17:18   #4
KiriX
Умный
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 488
Сказал(а) спасибо: 698
Поблагодарили 431 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от timmit Посмотреть сообщение
А что тебе мешает поставить через 1 секунду не в бою чтобы кастил не повторяя, тогда будет как надо
1) Объясняю - ЭвентАИ на призванных не работает - я так и хотел сделать.
Хотя, думаю проще поправить в ядре триггер спелла. Т.е. если на цели есть уже аура от триггера - return; или там щас вроде fasle; Но дело в том, что см. первое предложение.
Цитата:
Сообщение от rsa Посмотреть сообщение
Напиши обычный скрипт а не EventAI. Это еще и проще и памяти ест меньше.
Да в коде много чего можно проще сделать... Хотелось бы понять почему так, а не иначе в данном случае.
KiriX вне форума   Ответить с цитированием
Старый 02.09.2010, 13:41   #5
KiriX
Умный
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 488
Сказал(а) спасибо: 698
Поблагодарили 431 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Хм... Очень интересно...
EventAI для мобов призванных в скриптах типа gossip_scripts работает нормально.
Значит надо копать вызов таких НПС, смотреть где у них добавляется загрузка скрипта и добавлять такую же загрузку скрипта при вызове моба посредством спелл-эффекта...
KiriX вне форума   Ответить с цитированием
Старый 03.09.2010, 04:17   #6
KiriX
Умный
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 488
Сказал(а) спасибо: 698
Поблагодарили 431 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Всё ясно, разобрался...
Квест из первого поста. Там дают тотем, итем, при юзе которого вызывается собственно тотем.
На данный момент мангос полагает, что тотем не может иметь EventAI, поэтому при суммоне тотема инициализации EventAI не происходит. Хотя такое вполне может быть, т.к. бывает призыв квестовых тотемов.
Вот так должно поправится нормально (сам ещё не тестировал):
PHP код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 3ad5b93
..fcaf38f 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -6853,+6853,@@ void Spell::DoSummonTotem(SpellEffectIndex eff_idxuint8 slot_dbc)
         
m_caster->_AddTotem(TotemSlot(slot),pTotem);
 
     
pTotem->SetOwner(m_caster->GetGUID());
+    
pTotem->AIM_Initialize();                               // some summon totem can have AI
     
pTotem->SetTypeBySummonSpell(m_spellInfo);              // must be after Create call where m_spells initialized
 
     
int32 duration=GetSpellDuration(m_spellInfo); 
KiriX вне форума   Ответить с цитированием
Старый 03.09.2010, 05:39   #7
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 317
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Когда протестируете, я думаю стоит предложить патч у нас и на getmangos.com.
LordJZ вне форума   Ответить с цитированием
Старый 03.09.2010, 20:04   #8
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 426
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

TotemAI не подойдет?
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Vladimir (05.09.2010)
Старый 04.09.2010, 03:02   #9
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 514
Сказал(а) спасибо: 315
Поблагодарили 440 раз(а) в 183 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Код:
Spell::DoSummonTotem
{
    ...
    pTotem->Summon(m_caster);
    ...
}

void Totem::Summon(Unit* owner)
{
    owner->GetMap()->Add((Creature*)this);

    AIM_Initialize();
    ...
}
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 04.09.2010, 14:37   #10
KiriX
Умный
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 488
Сказал(а) спасибо: 698
Поблагодарили 431 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Код:
Spell::DoSummonTotem
{
    ...
    pTotem->Summon(m_caster);
    ...
}

void Totem::Summon(Unit* owner)
{
    owner->GetMap()->Add((Creature*)this);

    AIM_Initialize();
    ...
}
Тем не менее EventAI для призванного тотема не инициализируется и тотем им не обладает...
А во втором случае, как я понимаю AIM инициализируется для "хозяина" - (Unit* owner).
KiriX вне форума   Ответить с цитированием
Старый 05.09.2010, 02:54   #11
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 514
Сказал(а) спасибо: 315
Поблагодарили 440 раз(а) в 183 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

AIM_Initialize(); в функции вызывается для тотема...
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 05.09.2010, 03:47   #12
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 514
Сказал(а) спасибо: 315
Поблагодарили 440 раз(а) в 183 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Возможно вы правы в том что имеются отличия AIM_Initialize(); вызове - для тотема с temporarySummon от вызывается после добавления на карту. Это я поправлю.

НО.
Описываемый старый вариант - это конечно через... конкретно.

НО
Вами планируемый вариант не менее хаковский

Цитата:
Сообщение от virusav Посмотреть сообщение
TotemAI не подойдет?
Золотые слова...

Так как пассивные тотемы кастуют при призыве на себя спелл из m_spells[0]
Т.е почему бы просто не добавить в creature_template.spell1 необходимый спелл..

Проверил добавил - кастает - зачем надо было городить все выше обсуждаемое...

По мне так раз тотем то первым делом и надо смотреть как сделать его как тотем...

[added]
Порялок инициализации поправлен в [10444] хотя он и неимеет отношение к данному случаю как выяснилось..
__________________
Так как устал объяснять знайте ICQ не пользуюсь

Последний раз редактировалось Vladimir; 05.09.2010 в 04:41.
Vladimir вне форума   Ответить с цитированием
Старый 05.09.2010, 12:46   #13
KiriX
Умный
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 488
Сказал(а) спасибо: 698
Поблагодарили 431 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Столкнулся с проблемой, что не правильно работает спелл, который должен кастовать тотем, решил хаком сделать через EventAI чтобы соответствовало действительности и вот натолкнулся на то, что EventAI для тотемов не пашет.
В первом посту я объяснял, что квестовые тотемы (или тотемы НПС) могут иметь уникальное поведение, да и в любом случае нормальная инициализация EventAI для них точно не помешает...
KiriX вне форума   Ответить с цитированием
Ответ

« ACID | Следующей темы нет »
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 11:34. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot