Приветствую всех.
Проблема вот в чём. Я создал скилл который является пассивкой, и срабатывает когда юнит атакует противника. Сама проблема в том, что это можно использовать в корыстных целях, во время анимации атаки просто отменяя её. По итогу пассивка работает, хотя юнит даже не нанёс удар. Для начала объясню что я уже попробовал.
  1. Давал скиллу дебафф, но этот недостаток всё равно можно использовать если бафф на юните есть.
  2. Использовал отлов урона через GUI (использовал я это для точной работоспособности на другой карте, (то есть чужой) которую я скинул), но и тут проблема в том что скилл работает если помимо атак есть ещё какой-то источник урона.
Есть конечно как вариант, либо добавить дебафф который будет идти 0,01 секунду, либо снизить дебафф который указан в триггере до минимального параметра. Больше я пока вариантов не вижу.
Было бы неплохо узнать, есть ли ещё варианты помимо этого. Если да, был бы признателен. Спасибо в заранее.

Принятый ответ

Удалить дебафф в момент отлова урона. Его продолжительность не имеет в таком случае никакого значения.
В версии 1.31 можно проверить тип получаемого/наносимого урона. Урон типа NORMAL всегда идет от атаки.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
5 лет назад
0
Тааак-с, сейчас посмотрим что там у тебя...
0
17
5 лет назад
Отредактирован GetLocalPlayer
0
Удалить дебафф в момент отлова урона. Его продолжительность не имеет в таком случае никакого значения.
В версии 1.31 можно проверить тип получаемого/наносимого урона. Урон типа NORMAL всегда идет от атаки.
Принятый ответ
0
26
5 лет назад
Отредактирован Extremator
0
Это типа предмет дающий 35%-й шанс бросить "Огненное дыхание" при атаке в сторону того, кого ударил?
Первый момент: У тебя при событии юнит атакован стоит проверка на переменную, в которой берётся значение от приятного урона. Но у этого события не может быть принятого урона (только у события получает урон можно брать это значение).
Т.е. первая ошибка с том, что ты проверяешь число, которые тут в любом случаи будет равно 0.
0
7
5 лет назад
Отредактирован RiderOfBalance
0
Extremator:
Это типа предмет дающий 35%-й шанс бросить "Огненное дыхание" при атаке в сторону того, кого ударил?
Первый момент: У тебя при событии юнит атакован стоит проверка на переменную, в которой берётся значение от приятного урона. Но у этого события не может быть принятого урона (только у события получает урон можно брать это значение).
Т.е. первая ошибка с том, что ты проверяешь число, которые тут в любом случаи будет равно 0.
Мне получается надо урон увеличить с 0 до как минимум 1? Насчёт события - юнит получает урон, я что-то его не нашел в событиях.
GetLocalPlayer:
Удалить дебафф в момент отлова урона. Его продолжительность не имеет в таком случае никакого значения.
В версии 1.31 можно проверить тип получаемого/наносимого урона. Урон типа NORMAL всегда идет от атаки.
Хорошо, тогда в таком случае придётся использовать другой дебафф для того чтобы оживший огонь работал + то что ты сказал, за ответ спасибо.
0
32
5 лет назад
0
Сфера замедления не подходит?
0
7
5 лет назад
0
quq_CCCP:
Сфера замедления не подходит?
Я пробовал через неё, почему-то с АОЕ заклинаниями которые не на одну цель, у меня почему-то не робит.
1
32
5 лет назад
1
RiderOfBalance, нужно приказать юниту атаковать цель, если он сагрится сам - работать не будет.
Пассивки на удар, вроде критов, кастомных орбов и так далее делается через детект урона, это тема не для начинающих, нужно продумывать и оптимизировать код... Сложность так же зависит от того на каком патче вы сидите.
0
7
5 лет назад
0
quq_CCCP:
RiderOfBalance, нужно приказать юниту атаковать цель, если он сагрится сам - работать не будет.
Пассивки на удар, вроде критов, кастомных орбов и так далее делается через детект урона, это тема не для начинающих, нужно продумывать и оптимизировать код... Сложность так же зависит от того на каком патче вы сидите.
Патч 1.26. Детект урона делается только через мемхак или JASS?
Как я понял, мне лучше переходить на JASS. Жаль только что нет видео-уроков, по тексту сложно учиться.
GetLocalPlayer:
Удалить дебафф в момент отлова урона. Его продолжительность не имеет в таком случае никакого значения.
В версии 1.31 можно проверить тип получаемого/наносимого урона. Урон типа NORMAL всегда идет от атаки.
Из всех вариантов как по мне этот самый простой. Но я думаю каждый из всех вполне себе отличен.
Спасибо всем за советы и помощь.
1
32
5 лет назад
1
RiderOfBalance, ну разумеется полноценный детект возможен на мемхаке, тут видео на 50 часов будет, если все рассказывать. Потом это невероятно скучно, показывать код, и объяснять как он работает...
Событие - юнит получает урон, есть только на конкретного юнита, а не на всех накарте. Нам нужно создать триггер который имеет событие - юнит входит в игровую область, чтобы добавить событие юнит получает урон всем юнитам которые уже есть на карте и тем что будут созданы, разумеется стоит исключать всяких технических юнитов и юнитов которые не интересны - к примеру здания.
Вот даже есть такая наработка - ссылка
Дальше все сложнее, стандартный функционал jass не позволяет как либо отличить урон, т.е все что мы можем узнать это источник и количество урона, а так же тот кто этот урон получает...
И тут начинаются костыли, о которых можно неделю рассказывать. Через 2х реезист к магии к примеру, если юниту вручить рунные браслеты с фактором снижения урона то весь магический урон станет отрицательным, а положительный - физический, но не все так просто, мало того что нам кодом нужно починить магический урон, еще и систему маг резиста мутить...
Ну и если ты нуб-нубский в этом, ты конечно же не справишся, тема эта сложная, с множеством токостей, + куча кода который будет работать постоянно, что требует тщательной проработки алгоритма и оптимизации.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.