Jump to content
Alloder.pro  about Allods with love
Search In
  • More options...
Find results that contain...
Find results in...

Results of the competition "Allods and Life"

Stories, that warm souls.

Read More

Digest December

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

The new Talents Calc

In honor of the tenth anniversary of alloder.pro, we have prepared a stunning gift for you.

Read More

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

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


MrHell
 Share

Recommended Posts

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

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

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

Edited by MrHell
Link to comment
Share on other sites

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

Link to comment
Share on other sites

Скорее всего, не секрет, но 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()). Раз в секунду сами спрашиваем здоровье и бафы цели.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use