Есть ли событие "Юнит разложился", или что-то подобное? Или нужно после смерти юнита проверять через 270 сек. воскрес он или нет, а затем констатировать окончательную смерть?

EVENT_UNIT_DECAY или как то так, вроде есть на конкретного юнита и всех юнитов конкретного игрока.
А насчет вокскрес или нет, это как? Юниты сами не воксресают как и герои, умер значит умер, на воскрешения героя есть отдельное событие.
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
EVENT_UNIT_DECAY или как то так, вроде есть на конкретного юнита и всех юнитов конкретного игрока.
А насчет вокскрес или нет, это как? Юниты сами не воксресают как и герои, умер значит умер, на воскрешения героя есть отдельное событие.
Принятый ответ
20
quq_CCCP, ну проверить через 270 сек UnitAlive() - значит воскресили.
quq_CCCP, спасибо.
22
есть на основе способность "Укрытся за шитом" через приказ ловит при смерти, при разложение, при воскрешение.
пример кода с моего карты
/**
    * Событие с юнитам
    ***/
    
    private function InitStatus takes nothing returns nothing
        local unit u = GetTriggerUnit()
        local integer i = GetUnitIndex(u)
        
        if not(i == 0) then
            if IsUnitType(u, UNIT_TYPE_DEAD) then
                if xe_deadIDs[i] then
                    set xe_deadIDs[i] = false // удаляем труп
                    call RemoveUnit(u)
                else
                    set xe_deadIDs[i] = true // умер но осталось труп
                endif
            endif
            // и другие проверки на воскрешение...
        endif
        
        set u = null
    endfunction
    
    private function InitEnter takes nothing returns nothing
        local integer i = GetUnitIndex(GetFilterUnit())
        
        if i == 0 then
            set i = CreateUnitIndex(GetFilterUnit())
            set xe_deadIDs[i] = IsUnitType(GetFilterUnit(), UNIT_TYPE_DEAD)
            call UnitAddAbility(GetFilterUnit(), ABILITY_ID) 
            call UnitMakeAbilityPermanent(GetFilterUnit(), true, ABILITY_ID)
        endif
    endfunction

    private function FilterOrder takes nothing returns boolean
        return GetIssuedOrderId() == 852056
    endfunction
    
    private function FilterUnit takes nothing returns boolean
        local integer handleID = GetHandleId(GetFilterUnit())
        local integer typeID = GetUnitTypeId(GetFilterUnit())
        
        if GetUnitOption(typeID, AUTO_DISABLE_INDEX) == 1 or GetUnitOption(handleID, AUTO_DISABLE_INDEX) == 1 then
            return false
        endif

        return GetUnitOption(0, AUTO_DISABLE_INDEX) == 0
    endfunction
    
    private function Init takes nothing returns nothing
        local region r = CreateRegion()
        local rect w = GetWorldBounds()
        local group g = CreateGroup()
        local integer n = 0
        
        loop
            exitwhen n == bj_MAX_PLAYER_SLOTS
            call SetPlayerAbilityAvailable(Player(n), ABILITY_ID, false)
            call TriggerRegisterPlayerUnitEvent(tStatus, Player(n), EVENT_PLAYER_UNIT_ISSUED_ORDER, function FilterUnit)
            call GroupEnumUnitsOfPlayer(g, Player(n), And(function FilterUnit, function InitEnter))
            set n = n + 1
        endloop
        
        call RegionAddRect(r, w)
        call TriggerRegisterEnterRegion(tEnter, r, And(function FilterUnit, function InitEnter))
        call TriggerAddCondition(tStatus, And(function FilterOrder, function InitStatus))
        
        call GroupClear(g)
        call DestroyGroup(g)
        call RemoveRect(w)
        set g = null
        set w = null
    endfunction
26
KaneThaumaturge, по идее UnitAlive может сработать на Перерождении, а Воскрешение Паладина создаёт новых юнитов того же типа на месте разлагающихся. Но надо проверить Перерождение.
20
8gabriel8, приеду проверю, но мне подходит вариант quq_CCCP. Просто нужно очищать его из переменной массива, которая содержит всех юнитов на карте. ТК есть цикл на проверку всех юнита, чтоб не делал лишних действий.
8gabriel8, кстати, без разницы мне, будут ли создаваться при воскрешении новые юниты или нет, т к для новых юнитов счетчик обновится, а старых уберу из переменных. Хотя, мне почему-то кажется, что это будут те же юниты, а не новые.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.