Такой вопрос, как через триггеры, желательно на джасс, сделать коррекцию урона. Допустим юнит наносит 100 урона, но у того, кого он атакует, есть способность, которая блокирует 31,5 процентов урона. Как я понимаю, нужно отследить входящий урон, потом посчитать урон, который юниит должен получить, а остальное востановить или есть возможность проверять, ещё до получения урона юнитом? Как это сделать? Прошу ещё раз, желательно на ДЖАСС!

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

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

ответ
8gabriel8
я переписал всё на jass - вроде работает как надо
MUI как побочный эффект от хештаблицы и таймера
проверь как работает, а то я сутками не спал
Я там если что поменял Set Life на UnitDamageTarget, чтобы золото капало с убитых гноллов
И если нужно будет поменять способность на другую - то просто в константе passiveAbility поменять равкод
и ещё я там расставил комментарии где можно редактировать волны

0
26
5 лет назад
0
можешь посмотреть как тут перехватывается урон. хоть я и не рекомендую делать через выдачу неуязвимости, лучше повышать как нибудь максимальное хп если урон выше чем текущее возможное восполнение хп, а затем вернуть обратно как было и провести нужные манипуляции
Загруженные файлы
Принятый ответ
0
28
5 лет назад
0
Стас Орлов, какой патч?
0
32
5 лет назад
0
Универсальный способ для любого патча, ножно в событии юнит получает урон, сделать проверку, и исцелить юнита на этот процент урона
Способ для 131 можно изменить значение урон до отнятия хп
Событие: TriggerRegisterPlayerUnitEvent(gg_trg_DamageEvent, Player(i), EVENT_PLAYER_UNIT_DAMAGING)
Действие: BlzSetEventDamage(GetEventDamage()*0.5) заблокирует 50% урона
0
28
5 лет назад
Отредактирован PT153
0
исцелить юнита на этот процент урона
Урон в EVENT_UNIT_DAMAGED наносится после завершения триггера, потому следует либо восполнить хп с помощью таймера в 0 секунд, либо способом Hate.
EVENT_PLAYER_UNIT_DAMAGING
Стоит отметить, что в триггере с таким событием урон снизится до вычета брони.
0
26
5 лет назад
0
желательно на ДЖАСС!
GUI конвертировал в текст, вот тебе и jass)

Классический способ:
  • при срабатывании события на получения урона, запоминать количество хп юнита и восполнять жизнь до 100%;
  • через 0.00 секунд запоминать разницу между максимальным и текущим здоровьем, устанавливать хп в запомненное значение минус разница.
0
26
5 лет назад
Отредактирован Hate
0
8gabriel8:
желательно на ДЖАСС!
GUI конвертировал в текст, вот тебе и jass)

Классический способ:
  • при срабатывании события на получения урона, запоминать количество хп юнита и восполнять жизнь до 100%;
  • через 0.00 секунд запоминать разницу между максимальным и текущим здоровьем, устанавливать хп в запомненное значение минус разница.
макс хп юнита 100, получает урон в 200
0
28
5 лет назад
Отредактирован PT153
0
Классический способ:
В чём проблема через 0 секунд просто восполнить здоровье в размере полученного урона, если юнит всё ещё жив?
0
26
5 лет назад
0
PT153:
Классический способ:
В чём проблема через 0 секунд просто восполнить здоровье в размере полученного урона, если юнит всё ещё жив?
Hate:
макс хп юнита 100, получает урон в 200
вы оба не учитываете это
0
28
5 лет назад
Отредактирован PT153
0
вы оба не учитываете это
А, ты про ситуацию, когда полный урон убивает, а сниженный нет? Да, не подумал.
0
17
5 лет назад
0
Просто напиши систему триггерного нанесения урона и будет тебе счастье
0
26
5 лет назад
0
Hate:
макс хп юнита 100, получает урон в 200
И что тут учитывать? Юнита убьёт просто.
4
26
5 лет назад
4
8gabriel8:
Hate:
макс хп юнита 100, получает урон в 200
И что тут учитывать? Юнита убьёт просто.
а вдруг сниженный урон будет таким, что он не должен был бы убить? что ты соберешься отхиливать, труп?
0
26
5 лет назад
0
Как это вообще касается предложенного варианта?
  • при срабатывании события на получения урона, запоминать количество хп юнита и восполнять жизнь до 100%;
  • через 0.00 секунд запоминать разницу между максимальным и текущим здоровьем, устанавливать хп в запомненное значение минус разница.
Нет отхила после получения урона, есть установка здоровья на имевшееся хп минус реальное повреждение.
0
28
5 лет назад
Отредактирован PT153
0
8gabriel8, у юнита максхп есть 100, урон 200. Наш бафф снижает урон на 90% (то есть юнит получит 20 урона). В твоём случае юниту поставиться 100 хп (максимум), 200 урона его убивает, что неверно.
0
29
5 лет назад
0
А чем вам BlzSetEventDamage() не угодила? Прекрасно работает.
0
28
5 лет назад
Отредактирован PT153
0
NazarPunk, тут речь про 1.26, если не заметил.
0
29
5 лет назад
Отредактирован nazarpunk
0
тут речь про 1.26, если не заметил.
Тогда только система отлова урона через браслет. Если самому писать лень, вот.
0
28
5 лет назад
0
NazarPunk, не, ту просто нужно ловить урон, всякие аттактайпы тут не нужны.
0
29
5 лет назад
0
не, ту просто нужно ловить урон, всякие аттактайпы тут не нужны.
Эта система позволяет манипулировать уроном (хоть и через костыль), что в новых патчах успешно делает нативка.
2
26
5 лет назад
2
PT153:
8gabriel8, у юнита максхп есть 100, урон 200. Наш бафф снижает урон на 90% (то есть юнит получит 20 урона). В твоём случае юниту поставиться 100 хп (максимум), 200 урона его убивает, что неверно.
Ну да, предполагал отсутствие урона больше максимального хп, нужно делать на основе способности Камня жизни прибавку здоровья 100500, которую вручать в момент получения урона и убирать после 0.00 секунд и расчёта разницы.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.