Добавлен Ельнур
есть код когда я убираю в обоих триггерах иф все прекрасно работает, но если я доавбялю код то он не читает иф что не так?
код 1
код 1
do
local a = InitGlobals -- записываем InitGlobals в переменную
function InitGlobals() -- заменяем оригинальную InitGlobals своей
a() -- вызываем оригинальную InitGlobals из переменной
InitMyTrigger()
end
end
do
function InitMyTrigger()
function AdrenalinSeconds()
local r = Rect(-1280.0, -1536.0, 1280.0, 992.0)
local g = CreateGroup()
GroupEnumUnitsInRect(g, r, nil)
while true do
local u = FirstOfGroup(g)
if u == nil then break end -- выходим из цикла при пустой группе
local life = UNIT_STATE_LIFE
if GetUnitState(u,life) > 0.405 and GetUnitTypeId(u) == 'Hpal' and GetUnitAbilityLevel(u,'A000') > 0 then -- условия для перебора
local mana = UNIT_STATE_MANA
local maxmana = UNIT_STATE_MAX_MANA
SetUnitState(u,mana,GetUnitState(u,maxmana)-GetUnitState(u,maxmana)*RMaxBJ(0,2)*0.01) -- действия для перебора
end
GroupRemoveUnit(g, u)
end
end
local t = CreateTrigger()
local cot = AdrenalinSeconds
TriggerRegisterTimerEvent(t,1.00,true)
TriggerAddAction(t, cot)
end
end
код 2
do
local b = InitGlobals -- записываем InitGlobals в переменную
function InitGlobals() -- заменяем оригинальную InitGlobals своей
b() -- вызываем оригинальную InitGlobals из переменной
InitMyTrigger0()
end
end
do
function InitMyTrigger0()
function Adrenalindamaging()
local u1 = BlzGetEventDamageTarget() -- получил
local u2 = GetEventDamageSource() -- нанес
local mana = UNIT_STATE_MANA
local maxmana = UNIT_STATE_MAX_MANA
DisplayTimedTextToPlayer(Player(0),0,0,10,"NoIf")
if GetUnitTypeId(u1) == 'Hpal' and GetUnitAbilityLevel(u1,'A000') > 0 then
SetUnitState(u1,mana,GetUnitState(u1,maxmana)+GetUnitState(u1,maxmana)*RMaxBJ(0,5)*0.01)
DisplayTimedTextToPlayer(Player(0),0,0,10,"Damaged")
end
if GetUnitTypeId(u2) == 'Hpal' and GetUnitAbilityLevel(u2,'A000') > 0 then
SetUnitState(u2,mana,GetUnitState(u2,mana)-GetUnitState(u2,mana)*RMaxBJ(0,5)*0.01)
BlzSetEventDamage(GetUnitState(u2,mana)*RMaxBJ(0,5)*0.01+BlzGetEventDamage())
DisplayTimedTextToPlayer(Player(0),0,0,10,"Damaging")
end
end
function filterbool()
return GetUnitTypeId(BlzGetEventDamageTarget()) == 'Hpal' and GetUnitAbilityLevel(BlzGetEventDamageTarget(),'A000') > 0
end
local t1 = CreateTrigger()
local cot2 = Adrenalindamaging
local evenk = EVENT_PLAYER_UNIT_DAMAGING
local p0 = Player(0)
local p1 = Player(1)
local p2 = Player(2)
local p3 = Player(3)
local p4 = Player(4)
local filterdamaging = Condition(filterbool)
TriggerRegisterPlayerUnitEvent(t1,p0,evenk,filterdamaging)
TriggerRegisterPlayerUnitEvent(t1,p1,evenk,filterdamaging)
TriggerRegisterPlayerUnitEvent(t1,p2,evenk,filterdamaging)
TriggerRegisterPlayerUnitEvent(t1,p3,evenk,filterdamaging)
TriggerRegisterPlayerUnitEvent(t1,p4,evenk,filterdamaging)
TriggerAddAction(t1,cot2)
end
end
Принятый ответ
Lua в отличии от жасса не умеет самостоятельно конвертировать строковые равкоды в числа - 'Hpal' для луа это не айди паладина, а ничего не значащая строка в четыре символа.
Используй FourCC('Hpal') чтобы получить число из равкода.
Используй FourCC('Hpal') чтобы получить число из равкода.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Используй FourCC('Hpal') чтобы получить число из равкода.
Воитель не использует ману для способностей, вместо неё у него есть отдельный ресурс Адреналин, он показан в мпбаре.
Механика: его мп постоянно снижается на 2% от макс значения в секунду. Каждый раз, когда Воитель получает урон, он получает 5% от макс значения мп. Каждая атака воителя снижает его мп на 5% от ТЕКУЩЕГО значения, переводя эти 5% в дополнительный урон от атаки. Кроме того боевые способности так же расходуют этот ресурс для нанесения дополнительного урона.