Не удаляется эффект с юнита. Что делать и в чем причина? Подскажите нубу( Изначально там был таймер перед удалением эффектов ( TriggerSleepAction(0.4) )
function Trig_SR_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A006' ) ) then
        return false
    endif
    return true
endfunction

function SR_HP takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer srb = GetHandleId(t)
local unit sru = LUh(srb,1)
local real sra = LRh(srb,2)
local integer src = LIh(srb,3)
local real srd = GetUnitStateSwap(UNIT_STATE_LIFE, sru) - GetUnitStateSwap(UNIT_STATE_MAX_LIFE, sru)*0.1
local effect e
local effect e1
local effect e2
if src == 0 then
call SetUnitLifeBJ(sru,(GetUnitStateSwap(UNIT_STATE_LIFE, sru)+(GetUnitStateSwap(UNIT_STATE_MAX_LIFE, sru)*0.2)))
call AddSpecialEffectTargetUnitBJ( "origin", sru, "Abilities\\Spells\\Other\\Charm\\CharmTarget.mdl" )        //ЭФФЕКТИК РАЗ
set e = GetLastCreatedEffectBJ()
    if GetUnitStateSwap(UNIT_STATE_LIFE, sru) == GetUnitStateSwap(UNIT_STATE_MAX_LIFE, sru)
    call SIh(srb,3,1)
    else
    endif
else
    if srd <= sra then
    call SetUnitLifeBJ(sru, sra)
    call FlushChildHashtable(udg_hash,srb)
    call DestroyTimer(t)
    else
    call SetUnitLifeBJ(sru,(GetUnitStateSwap(UNIT_STATE_LIFE, sru)-(GetUnitStateSwap(UNIT_STATE_MAX_LIFE, sru)*0.1)))
    call AddSpecialEffectTargetUnitBJ( "head", sru, "Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl" )        //ЭФФЕКТИК ДВА
    set e1 = GetLastCreatedEffectBJ()
    call AddSpecialEffectTargetUnitBJ( "chest", sru, "Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl")    //ЭФФЕКТИК ТРИ
    set e2 = GetLastCreatedEffectBJ()
    endif
endif
set t = null
set sru = null
set sra = 0
set srb = 0
set src = 0
set srd = 0
call DestroyEffect(e) // УДАЛИЛ РАЗ(
call DestroyEffect(e1) // УДАЛИЛ ДВА(
call DestroyEffect(e2) // УДАЛИЛ ТРИ(
endfunction

function Trig_SR_Actions takes nothing returns nothing
local unit sru = GetSpellAbilityUnit()
local real sra = GetUnitStateSwap(UNIT_STATE_LIFE, sru)
local timer t = CreateTimer()
local integer srb = GetHandleId(t)
call SUh(srb,1,sru)
call SRh(srb,2,sra)
call TimerStart(t,0.5,true,function SR_HP)
set t = null
set sru = null
set sra = 0
set srb = 0
endfunction

//===========================================================================
function InitTrig_SR takes nothing returns nothing
    set gg_trg_SR = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_SR, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_SR, Condition( function Trig_SR_Conditions ) )
    call TriggerAddAction( gg_trg_SR, function Trig_SR_Actions )
endfunction

call DestroyEffect(AddSpecialEffect(e, x, y))
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
33
Не уверен, в чём дело, но использование бж всегда настораживает.
    call AddSpecialEffectTargetUnitBJ( "head", sru, "Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl" )
    set e1 = GetLastCreatedEffectBJ()
Стоит записать как
	set e1 = AddSpecialEffectTarget("Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl", sru, "head")
13
Стоит записать как
Лучше так :)
local string s = "Abilities\\Spells\\Other\\Charm\\CharmTarget.mdl"
call DestroyEffect(AddSpecialEffectTarget(s, sru, "head")
set s = "Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl"
call DestroyEffect(AddSpecialEffectTarget(s, sru, "head")

...
Либо циклом.
7
Кет:
Не уверен, в чём дело, но использование бж всегда настораживает.
    call AddSpecialEffectTargetUnitBJ( "head", sru, "Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl" )
    set e1 = GetLastCreatedEffectBJ()
Стоит записать как
	set e1 = AddSpecialEffectTarget("Abilities\\Spells\\Other\\BreathOfFire\\BreathOfFireDamage.mdl", sru, "head")
Этот вариант не катит(
13
Кет:
NekoriDes, какой в этом смысл?
Что значит какой? Накладывается эффект > заканчивается > удаляется.
7
Кет:
NekoriDes, какой в этом смысл?
M1n3rva, почему?
Ну редактор под рукой, сделал, не удаляет(
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.