Хотел бы, чтоб вы помогли с триггером, в котором при получении урона юнит получал бы только - 1 хп. Помогите пожалуйста

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

Каменные доспехи будут лучшим вариантом, ещё можно попробовать поставить божественную защиту, но она может и 2 урона получить, надо проверять, и есть вариант с отловом урона по глыбе, вручением неуязвимости, таймером 0.00 секунд, снятием неуязвимости и одной жизни.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
5 лет назад
Отредактирован PT153
0
И ещё триггер на отлов урона надо при срабатывании выключать, а при истечении таймера включать. Потому что будут лаги со способностями, которые вешают бафф. Сначала герой получает 0 урона от баффа, а потом урон от способности. Например, кинут в героя Молот Бурь, у него запоминается здоровье, выдаётся прибавка здоровья, восстанавливается до 100% и запускается таймер, но в тот же момент он получает урон от молотка, у него уже полно здоровья, оно перезаписывается в переменную, опять восстанавливается до 100% и таймер перезапускается. По истечении таймера у героя будет полное здоровье минус урон от молотка, если он был при смерти, то его это вылечит.
Если триггер отключается, то зачем тогда хеш? Проще всего поставить условие, что получаемый урон больше 0.

А любой способ ерунда.
При одновременном нанесении урона в способе 8gabriel8 нанесётся только первый урон (для остальных триггер просто не сработает), а в моём, из-за того, что у каждого таймера сохранено одинаковое хп, нанесётся лишь последний урон.
Проверить это легко: задайте лучнице в очередь 5 раз скастовать Q на раба. Без триггеров юнит умрёт, с триггерами - нет.
В загруженной карте реализован способ 8gabriel8. Чтобы сделать мой, откомментируйте call DisableTrigger(gg_trg_take) в DoDamage() и закоментируйте в Start().
Загруженные файлы
0
26
5 лет назад
0
  • Если триггер отлавливает получение урона с нескольких юнитов;
  • Если врагов много, например, когда они управляются человеком, который мышкой двоих юнитов выделит и отдаст приказ группе атаковать героя, то есть их урон может быть нанесён в один момент.
В таком случае мы получим нормальный результат, так как изначальное количество здоровья записано и триггер выключился, а по истечении 0.00 секунд было нанесено несколько уронов, которые вычтем из изначального здоровья. Но если нужно сделать что-то ещё, например, сохранить урон из всех источников, чтобы в мультиборде отображать, кто сколько нанёс, то часть урона потеряется. Уже не помню причину, по которой не использую условие, что урон больше 0, вроде всё нормально для этого случая. Может быть тоже для каких-то эффектов, когда урон не проходит, например, из-за Магического щита, но эффект надо отобразить.
Это было про необходимость хеша.
0
28
5 лет назад
Отредактирован PT153
0
Я смог сделать так, чтобы всё работало исправно. Но это КОСТЫЛИ дикие.
Тут хп сохраняется не у каждого таймера, а у самой цели, и это значение перезаписывают таймеры. При одновременном нанесении урона, сначала выполняется первый таймер до конца, а остальные ждут, потом второй и остальные ждут, и так далее. Это достигается тем, что при "нашем" нанесении урона ставится блокировка, чтобы другие таймеры дождались выполнение раннего.
Мда, мутексы и busy waiting в варкрафте, до чего дожили.
А вообще есть готовые решения на HIVE, вот лучше их и использовать.

то есть их урон может быть нанесён в один момент.
И будет схвачен только первый урон, потому что для остальных триггер выключен. Потому в таком способе хеш не нужен (на момент переноса триггер отключён, значения не могут быть перезаписаны), но сам способ плох, я уже сказал почему.
Загруженные файлы
5
24
5 лет назад
5
Смотрю я на это и слезы наворачиваются - сколько же костылей уничтожила простая функция BlzSetEventDamageв 1.31.
0
28
5 лет назад
0
prog, эта функция была введена ещё раньше, и она сделала многим жизнь проще.
0
26
5 лет назад
0
Честно сказать, не понимаю, что ты сделал)
Вот карта с системой, которую предложил:
Там весь урон нормально ловится, а не только первый. По Esc мгновенно нанесёшь пехотинцу 5 раз по 100 урона.
Загруженные файлы
0
23
5 лет назад
0
почему вы переживаете что они одновремено нанесет тут идет 1 поток значит идет последовательно порядок даже если они ровно тот же время нанесли но идут порядок нанесение
0
26
5 лет назад
0
pro100master, мне сейчас некогда объяснять, просто скачай карту xgm.guru/files/100/231620/comments/428598/0.w3x, запусти и нажми Esc. Потом удали действие отключение триггера, ударь работником для наглядности и снова нажми Esc.
0
28
5 лет назад
Отредактирован PT153
0
8gabriel8, я кидал карту с твоим способом, он не работает при одновременном нанесении урона.
Приду домой, гляну, что ты сделал.
Мне кажется, что ты кастуешь в юнита последовательно, а не одновременно (точка каста, время после каста и касттайм 0). При последовательном всё норм, при одновременном твой способ, очевидно, ловит только первый.
0
26
5 лет назад
0
У меня не каст, а 5 триггерных действий нанесения урона при нажатии Esc. Здоровья у воина 100, каждый раз урона наносится 100, но триггерно урон сокращается в 100 раз, в итоге у юнита становится на 5 жизней меньше. Рядом Работник с атакой 102-300, он наносит 1-3 урона.
0
30
5 лет назад
0
Есть же абилка, которая снижает урон выше n до n, не помню как называется только =(
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.