Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

осваиваю написание аддонов, хелп плс


MrHell

Рекомендуемые сообщения

Приветствую!
пытаюсь разобраться в написании аддонов, конкретно подзавис над считыванием хп обьекта

т.е. в апи сказано что при ловле EVENT_OBJECT_HEALTH_CHANGED обязательно указывать ID обьекта, что понятно, так вот, при указывании в качестве параметра avatar.GetID() он ловит изменения собственного хп, но при указывании avatar.GetTarget() работать отказывается, хотя эта фукнция так же возвращает ID только уже таргета, выводил значения - совпадают по документации вроде как в интовом виде возвращаются так что все должно работать, но нет

если так работать не будет, какие есть более рабочие варианты для мониторинга таргета?(пока что хп, дальше и бафов)

Изменено пользователем MrHell
Ссылка на комментарий
Поделиться на другие сайты

с этим разобрался внезапно 
EVENT_OBJECT_HEALTH_CHANGED - GetTarget() работает
EVENT_UNIT_HEALTH_CHANGED - GetTarget() не работает
 но почему? айди же в интовом значении передается?

Ссылка на комментарий
Поделиться на другие сайты

Скорее всего, не секрет, но EVENT_UNIT_HEALTH_CHANGED лучше уже не использовать - его удалят.

Если только цели, то, думаю, достаточно будет обрабатывать событие о смене цели EVENT_AVATAR_TARGET_CHANGED, при котором производить регистрацию и дерегистрацию обработчиков событий EVENT_OBJECT_HEALTH_CHANGED и EVENT_OBJECT_BUFFS_CHANGED с фильтрами по цели. Крайне желательно запоминать статус регистраций, т.к. его нельзя проверить. Если предполагать их статус и предположение окажется неверным, то будет вылетать некритическая ошибка (будет писать в лог, если у игрока он включен, а выполнение продолжится). А проводить дерегистрацию обязательно потому что есть предел в 500 регистраций обработчиков.

Есть другой способ. По EVENT_SECOND_TIMER использовать object.GetHealthInfo(avatar.GetTarget()) и object.GetBuffs(avatar.GetTarget()). Раз в секунду сами спрашиваем здоровье и бафы цели.

Ссылка на комментарий
Поделиться на другие сайты

ага, тоже уже о таймере подумал, т.к. с EVENT_OBJECT_BUFF_ADDED возникли какие то непонятки, я хоть и указываю ID обьекта, он считывает обновление бафов со всей округи

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

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

Пользуясь сайтом, вы принимаете Условия использования