Так, как заказы не работают у вас. У меня просто технически не хватает знаний, что бы сделать что я хочу. Пытаюсь сделать что бы два диска, летели с двух сторон в цель. Но получается, только один пролетает быстрей другого и не возвращается назад. Не знаю как задать такое. Прошу помочь кто обладает знаниями
function Suriken_Cond takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Suriken_act takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit b1 = LoadUnitHandle(hash,GetHandleId(t),1)
    local unit b2 = LoadUnitHandle(hash,GetHandleId(t),3)
    local real d = LoadReal(hash,GetHandleId(t),2)
    local timer t = CreateTimer()
    call SetUnitPosition(b1,GetUnitX(b1)+40*Cos(d*bj_DEGTORAD),GetUnitY(b1)+40*Sin(d*bj_DEGTORAD))
    call SetUnitPosition(b2,GetUnitX(b1)+40*Cos(d*bj_DEGTORAD),GetUnitY(b1)+40*Sin(d*bj_DEGTORAD))
    set b1 = null
    set b2 = null
endfunction

function Suriken takes nothing returns nothing
    local unit a = GetSpellAbilityUnit()
    local unit b = GetSpellTargetUnit()
    local real dmg
    local real d = bj_RADTODEG*Atan2(GetSpellTargetY()-GetUnitY(a),GetSpellTargetX()-GetUnitX(a))
    local unit b1 = CreateUnit(GetOwningPlayer(a),'h000',GetUnitX(a),GetUnitY(a),d)
    local unit b2 = CreateUnit(GetOwningPlayer(a),'h000',GetUnitX(a),GetUnitY(a),d)
    if(GetUnitAbilityLevel(a,'A000')==1)then
    set dmg=100+GetHeroInt(a,false)*2.5
    elseif(GetUnitAbilityLevel(a,'A000')==2)then
    set dmg=200+GetHeroInt(a,false)*2.5
    elseif(GetUnitAbilityLevel(a,'A000')==3)then
    set dmg=250+GetHeroInt(a,false)*2.5
    endif
   
    call SaveUnitHandle(hash,GetHandleId(t),1,b1)
    call SaveUnitHandle(hash,GetHandleId(t),1,b2)
    call SaveReal(hash,GetHandleId(t),2,d)
    call TimerStart(t,0.04,true, function Suriken_act)
    call UnitDamageTarget(a,b,dmg,false,false,null,null,null)
    call TriggerSleepAction(1)
    call PauseTimer(t)
    call FlushChildHashtable(hash,GetHandleId(t))
    call DestroyTimer(t)
    call RemoveUnit(b1)
    call RemoveUnit(b2)
    set a = null
    set b = null
    set b1 = null
    set b2 = null
endfunction

//===========================================================================

И что в итоге делает спел?
Ну вот что-то на подобие того, что ты описал.
Если хочешь, чтобы сюрикены наносили урон когда летят добавь дамикам жар феникса.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
21
ну я бегло вижу что код раковый хотя бы из-за слипа
зачем тебе слип? запускай еще один таймер на 1 секунду и там после него делай что надо
так и таймеры как минимум не обнуляешь
local timer t = CreateTimer() это в сюрикен_акт не надо а вот обнуление поставь set t = null
обнуление переменной НЕ разрушает таймер ваш кэп
О_О а где в функции сюрикен создание-то таймера? вот туда и перемести его
ты точно правильно код перекопипастил?
9
И что в итоге делает спел?
Ну вот что-то на подобие того, что ты описал.
Если хочешь, чтобы сюрикены наносили урон когда летят добавь дамикам жар феникса.
Загруженные файлы
Принятый ответ
6
noyl:
И что в итоге делает спел?
Ну вот что-то на подобие того, что ты описал.
Если хочешь, чтобы сюрикены наносили урон когда летят добавь дамикам жар феникса.
Круто смотрится, но я хотел точно так же, но что бы один вылетал сзади
Чтобы оставить комментарий, пожалуйста, войдите на сайт.