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

Без ответа.


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

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


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

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

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

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

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