Сохранение эффектов после смерти.
Как сделать чтобы эффект от зелья сохранялся после смерти. ЧТобы он зависел только от времени действия зелья?

Без ответа.


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

quq_CCCP #1 - 6 дней назад 0
RotceV, никак, все стандартные баффы удаляются после смерти.
Делаем триггерное зелье лечения, кстати проверяйте что цель мертва - с мертвыми юнитами лучше не производить манипуляции, может вылететь фатальная ошибка.
avuremybe #2 - 6 дней назад (отредактировано ) 0
Как сказал quq_CCCP, нужно вешать на юнита таймер, который будет его хилить.
local integer h = GetHandleId(GetExpiredTimer())
local integer i = LoadInteger(hash, h, 0)
local unit u = LoadUnitHandle(hash, h, 1)
local real hp = GetUnitState(u, UNIT_STATE_LIFE)
if hp>0.405 and GetUnitTypeId(u)!=UNIT_TYPE_DEAD then
    call SetUnitState(u, UNIT_STATE_LIFE, hp+100)     //лечение от зелья
    if GetUnitAbilityLevel(u, 'A000')<1 then    //твой бафф зелья
        call UnitAddAbility(u, 'A000')
    endif
endif
if i<20 then     //длительность твоего зелья
    call SaveInteger(hash, h, 0, i+1)
else
    call UnitRemoveAbility(u, 'A000')
    call FlushChildHashtable(hash, h)
    call TimerDestroy(GetExpiredTimer())
endif
set u = null
По вкусу можешь добавить спецэффектов.
Визуальным минусом является то, что бафф на юните будет появляться не сразу после воскрешения, а только при тике таймера. Но если у тебя тик лечения 1 секунда, то это вообще не проблема. Если больше - вешай на юнита булин и при воскрешении проверяй.