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

Лучший ответ:
можешь посмотреть как тут перехватывается урон. хоть я и не рекомендую делать через выдачу неуязвимости, лучше повышать как нибудь максимальное хп если урон выше чем текущее возможное восполнение хп, а затем вернуть обратно как было и провести нужные манипуляции


Views: 1 056

» Лучшие комментарии


XGM Bot #1 - 2 years ago 2
Голосов: +2 / -0
Похожие вопросы:

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

Hate #3 - 2 years ago 0
Голосов: +0 / -0

можешь посмотреть как тут перехватывается урон. хоть я и не рекомендую делать через выдачу неуязвимости, лучше повышать как нибудь максимальное хп если урон выше чем текущее возможное восполнение хп, а затем вернуть обратно как было и провести нужные манипуляции
Прикрепленные файлы
PT153 #4 - 2 years ago 0
Голосов: +0 / -0
Стас Орлов, какой патч?
Bergi_Bear #5 - 2 years ago 0
Голосов: +0 / -0
Универсальный способ для любого патча, ножно в событии юнит получает урон, сделать проверку, и исцелить юнита на этот процент урона
Способ для 131 можно изменить значение урон до отнятия хп
Событие: TriggerRegisterPlayerUnitEvent(gg_trg_DamageEvent, Player(i), EVENT_PLAYER_UNIT_DAMAGING)
Действие: BlzSetEventDamage(GetEventDamage()*0.5) заблокирует 50% урона
PT153 #6 - 2 years ago (изм. ) 0
Голосов: +0 / -0
исцелить юнита на этот процент урона
Урон в EVENT_UNIT_DAMAGED наносится после завершения триггера, потому следует либо восполнить хп с помощью таймера в 0 секунд, либо способом Hate.
EVENT_PLAYER_UNIT_DAMAGING
Стоит отметить, что в триггере с таким событием урон снизится до вычета брони.
8gabriel8 #7 - 2 years ago 0
Голосов: +0 / -0
желательно на ДЖАСС!
GUI конвертировал в текст, вот тебе и jass)

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

Классический способ:
  • при срабатывании события на получения урона, запоминать количество хп юнита и восполнять жизнь до 100%;
  • через 0.00 секунд запоминать разницу между максимальным и текущим здоровьем, устанавливать хп в запомненное значение минус разница.
макс хп юнита 100, получает урон в 200
PT153 #9 - 2 years ago (изм. ) 0
Голосов: +0 / -0
Классический способ:
В чём проблема через 0 секунд просто восполнить здоровье в размере полученного урона, если юнит всё ещё жив?
Hate #10 - 2 years ago 0
Голосов: +0 / -0
PT153:
Классический способ:
В чём проблема через 0 секунд просто восполнить здоровье в размере полученного урона, если юнит всё ещё жив?
Hate:
макс хп юнита 100, получает урон в 200
вы оба не учитываете это
PT153 #11 - 2 years ago (изм. ) 0
Голосов: +0 / -0
вы оба не учитываете это
А, ты про ситуацию, когда полный урон убивает, а сниженный нет? Да, не подумал.
Vlod #12 - 2 years ago 0
Голосов: +0 / -0
Просто напиши систему триггерного нанесения урона и будет тебе счастье
8gabriel8 #13 - 2 years ago 0
Голосов: +0 / -0
Hate:
макс хп юнита 100, получает урон в 200
И что тут учитывать? Юнита убьёт просто.
Hate #15 - 2 years ago 4
Голосов: +4 / -0
8gabriel8:
Hate:
макс хп юнита 100, получает урон в 200
И что тут учитывать? Юнита убьёт просто.
а вдруг сниженный урон будет таким, что он не должен был бы убить? что ты соберешься отхиливать, труп?
8gabriel8 #16 - 2 years ago 0
Голосов: +0 / -0
Как это вообще касается предложенного варианта?
  • при срабатывании события на получения урона, запоминать количество хп юнита и восполнять жизнь до 100%;
  • через 0.00 секунд запоминать разницу между максимальным и текущим здоровьем, устанавливать хп в запомненное значение минус разница.
Нет отхила после получения урона, есть установка здоровья на имевшееся хп минус реальное повреждение.
PT153 #17 - 2 years ago (изм. ) 0
Голосов: +0 / -0
8gabriel8, у юнита максхп есть 100, урон 200. Наш бафф снижает урон на 90% (то есть юнит получит 20 урона). В твоём случае юниту поставиться 100 хп (максимум), 200 урона его убивает, что неверно.
NazarPunk #18 - 2 years ago 0
Голосов: +0 / -0
А чем вам BlzSetEventDamage() не угодила? Прекрасно работает.
PT153 #19 - 2 years ago (изм. ) 0
Голосов: +0 / -0
NazarPunk, тут речь про 1.26, если не заметил.
NazarPunk #20 - 2 years ago (изм. ) 0
Голосов: +0 / -0
тут речь про 1.26, если не заметил.
Тогда только система отлова урона через браслет. Если самому писать лень, вот.
PT153 #21 - 2 years ago 0
Голосов: +0 / -0
NazarPunk, не, ту просто нужно ловить урон, всякие аттактайпы тут не нужны.
NazarPunk #22 - 2 years ago 0
Голосов: +0 / -0
не, ту просто нужно ловить урон, всякие аттактайпы тут не нужны.
Эта система позволяет манипулировать уроном (хоть и через костыль), что в новых патчах успешно делает нативка.
8gabriel8 #23 - 2 years ago 2
Голосов: +2 / -0
PT153:
8gabriel8, у юнита максхп есть 100, урон 200. Наш бафф снижает урон на 90% (то есть юнит получит 20 урона). В твоём случае юниту поставиться 100 хп (максимум), 200 урона его убивает, что неверно.
Ну да, предполагал отсутствие урона больше максимального хп, нужно делать на основе способности Камня жизни прибавку здоровья 100500, которую вручать в момент получения урона и убирать после 0.00 секунд и расчёта разницы.