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

Без ответа.


Просмотров: 285

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


XGM Bot #1 - 2 месяца назад 2
Похожие вопросы:

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

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

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

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