Написал на JASS Массовые корни. Как обычные корни, но кастуются по области и рутают всех в этой области, создавая отдельного дамми для каждого юнита. Выставил для дамми время жизни, чтобы он исчезал после исполнения свой задачи,
call UnitApplyTimedLife(dummy,'BFig',0.50)
но он не исчезает. Более того - дамми отказывается кастовать корни и в итоге он просто появляется и стоит; это я понял, так как увеличивается пища на 1 единицу. В другом скилле на JASS также используется дамми-юнит, который кастует Огненный столб в заданную точку; кастует успешно, но также не исчзает. В чем может быть проблема?
function Trig_Root_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A004'
endfunction

function Trig_Root_Actions takes nothing returns nothing
    //local timer t = CreateTimer()
    //local integer id = GetHandleId(t)
    local unit caster = GetSpellAbilityUnit()
    local real kursor_x = GetSpellTargetX()
    local real kursor_y = GetSpellTargetY()
    local unit dummy = null
    local group pool = CreateGroup()
    local unit enemy = null
    local real enemy_x
    local real enemy_y
    call GroupEnumUnitsInRange(pool,kursor_x,kursor_y,1000.00,null)
        loop
            set enemy = FirstOfGroup(pool)
            exitwhen enemy == null
            if IsUnitEnemy(enemy,GetOwningPlayer(caster)) then
                set enemy_x = GetUnitX(enemy)
                set enemy_y = GetUnitY(enemy)
                call CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
                set dummy = bj_lastCreatedUnit
                call UnitApplyTimedLife(dummy,'BFig',0.50)
                call UnitAddAbility(dummy,'A005')
                call IssueTargetOrder(dummy,"entanglingroots",enemy)
            endif
            call GroupRemoveUnit(pool,enemy)
        endloop
endfunction

Принятый ответ

call CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
set dummy = bj_lastCreatedUnit
нативная CreateUnit не записывает юнита в bj_lastCreatedUnit, это делают только БЖ функции (вон там префикс bj_)
поменяй на
set dummy = CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
20
6 лет назад
Отредактирован biridius
0
call CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
set dummy = bj_lastCreatedUnit
нативная CreateUnit не записывает юнита в bj_lastCreatedUnit, это делают только БЖ функции (вон там префикс bj_)
поменяй на
set dummy = CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
Принятый ответ
0
5
6 лет назад
Отредактирован Lillikon
0
biridius:
call CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
set dummy = bj_lastCreatedUnit
нативная CreateUnit не записывает юнита в bj_lastCreatedUnit, это делают только БЖ функции (вон там префикс bj_)
поменяй на
set dummy = CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
Понал косяк. Спасибо) Записал так и все заработало:
set dummy = CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
0
18
6 лет назад
0
Для дамми я использую отрицательную регенерацию в редакторе объектов.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.