Собственно проблема возникла из-за того, что нет события отрабатывающего получения повреждений. имеющаяся функция HealthChange учитывает только изменение здоровья постфактум.
Пришлось придумать собственную реализацию данного события.
Как это не странно, но получилось довольно таки компактно. Один модульный скрипт, в котором обсчитывается и нанесённый урон и получаемый.
local Damage = {} -- объявление модуля function Damage:Take(hum,damage) -- функция нанесения повреждений damage=damage*1.5 -- можно использовать все модификаторы по нанесению урона текущим объектом -- print("Humanoid:",hum.Parent.Name," Take:",damage) Damage:Give(hum,damage) -- переходим на получение повреждений end function Damage:Give(hum,damage) -- функция получения повреждений damage=damage/2 -- можно обсчитать все модификаторы получаемого урона -- print("Humanoid:",hum.Parent.Name," Give:",damage) hum:TakeDamage(damage) -- собственно нанесение урона гуманоиду end return Damage
Вот такой небольшой скрипт решает поставленную мной задачу. Теперь, нужно использовать исключительно его вместо стандартного TakeDamage(). Делается это очень просто:
local Damage=require(script.Parent.Damage) -- подключение модуля wait(5) print("Start") hum = game.Workspace.GAVsi115.Humanoid hum.HealthChanged:Connect(function(newHealth) -- это пример функции для отслеживания текущего здоровья if newHealth < 1 then -- типа не должен умирать :) wait() -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! hum.Health = 1 print(hum.Parent.Name .. " saved from death!") end end) -- из-за малейшей задержки на сервере (а это легко может произойти), эта функция успеет сработать hum.Died:Connect(function() -- функция наличия смерти print("!!!!!!!!! Die !!!!!!!!!!!") end) while true do wait(0.3) -- hum:TakeDamage(11) -- стандартное нанесение урона Damage:Take(hum,11) -- модернизированное нанесение урона print("Health=",hum.Health) end
Как видим — достаточно добавить строчку подключения модуля и слегка изменить строку о нанесении урона.
Главная проблема этого метода, что надо найти и изменить все стандартные варианты нанесения урона.
чел ты….
Спасибо