Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Событие evAttack

Only for requests.
Post Reply
Kashey
Novice
Novice
Posts: 51
Joined: 29.09.2013 14:47
Location: Одесса

Событие evAttack

Post by Kashey »

Как можно отловить в игре момент когда какой-то моб/игрок напал на чара?

Например, когда чар долго убивает моба, могут напасть еще несколько. Или при долгих newMoveXY по пути чар может насобирать несколько попутчиков.
Варианты с FindItem и проверкой WarTargetID по массиву не очень удобны. Особенно в сочетании когда надо долгий маршрут разбить на части и в каждой точке это делать.

Было бы круто иметь событие evAttack: [кто, кого] и возможность прервать (поставить на паузу) любое текущее действие/движение.

Или функцию IsUnderAttack(ID: Cardinal);
Last edited by Kashey on 26.08.2018 12:12, edited 1 time in total.
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Событие evAttack

Post by nah nah »

а в журнале не пишется?
Kashey
Novice
Novice
Posts: 51
Joined: 29.09.2013 14:47
Location: Одесса

Re: Событие evAttack

Post by Kashey »

nah nah wrote:а в журнале не пишется?
Если игрок нападает - то пишется. Но если напал игрок - то у скрипта мало шансов выжить.
Если напал моб - то не пишется. Более того, если моб подходит и бьет - чар начинает отбиваться, но вар режим на чаре автоматом не включается.

Нашел частичное временное решение - проверять WarTargetID, которое автоматом устанавливается на моба.
Если ничего не трогать, то чар оставаясь в PEACE режиме отбивается.
Но некоторые действия скрипта останавливают эту реакцию и чар остается просто стоять под ударами.

П.С. Думаю для некоторых скилов это можно будет обработать по сообщениям в журнале типа "you can't do this while in battle" (не помню как дословно).
Для теста в скрипте использую Hiding - и с ним валятся обычные фейлы.
Last edited by Kashey on 24.08.2018 22:32, edited 1 time in total.
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Событие evAttack

Post by nah nah »

жуть какая
Kashey
Novice
Novice
Posts: 51
Joined: 29.09.2013 14:47
Location: Одесса

Re: Событие evAttack

Post by Kashey »

nah nah wrote:жуть какая
Это же стандартная механика в T2A/Renessance (в другое не играю).
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Событие evAttack

Post by nah nah »

а если в каком-нибудь evTimer сделать проверку на изменение WarTargetID, и там же, в обработчике, совершать убийство?
Kashey
Novice
Novice
Posts: 51
Joined: 29.09.2013 14:47
Location: Одесса

Re: Событие evAttack

Post by Kashey »

Ситуации в которых это не поможет:

- долгий newMoveXY, который не прервать (не хочу использовать самописный) и в конечной точке может быть намотано уже несколько мобов.

- если чар уже дерется с мобом и в этот момент цепляет еще несколько мобов - WarTargetID после убийства не всегда перескакиеват на следующего и можно опять остаться в ситуации стоя на месте без WarTargetID под ударами нескольких мобов.

П.С. Можно конечно отслеживать изменения Life в меньшую сторону, но это совсем не красиво ))))
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Событие evAttack

Post by nah nah »

Kashey wrote:- долгий newMoveXY, который не прервать (не хочу использовать самописный) и в конечной точке может быть намотано уже несколько мобов.
Разве ивенти не ставят ходилку на паузу?
Kashey wrote:- если чар уже дерется с мобом и в этот момент цепляет еще несколько мобов - WarTargetID после убийства не всегда перескакиеват на следующего и можно опять остаться в ситуации стоя на месте без WarTargetID под ударами нескольких мобов.
Ну а тут уже постоянно сканировать пространство на враждебных мобов, подошёл близко - сразу в лоб прописывать.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Событие evAttack

Post by Vizit0r »

Kashey wrote:возможность прервать (поставить на паузу) любое текущее действие/движение
не-а, фантастика. А по ивенту давно уже объяснил, почему это нереально.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply