Как Правильно Делать Триггер при котором ЮНИТ к примеру ГЕРОЙ. Когда остаётся 10% хп начнёт бежать к Определённой области и там останавливатся. Покажи в виде Триггера. Больше спасибо помогающим нубасикам в Плане триггеров.

Привет, скрин+карта, может быть сразу и поймешь :)
Или конвертированый триггер в jass и немного сократить код, возможно так будет понятнее
globals
    unit array HERO
endglobals
function Trig_BD_Func008002 takes nothing returns boolean
    return ( GetUnitStateSwap(UNIT_STATE_LIFE,(HERO[GetPlayerId(GetOwningPlayer(GetBuyingUnit()))])) <= ((GetUnitState(HERO[GetPlayerId(GetOwningPlayer(GetBuyingUnit()))],UNIT_STATE_MAX_LIFE)) * 0.10 ) )
endfunction

function Trig_BD_Func010002 takes nothing returns nothing
    call DisplayTextToForce( GetPlayersAll(), "У героя меньше 10% хп, отправляем его на базу" )
    call IssuePointOrderLoc(HERO[GetPlayerId(GetOwningPlayer(GetBuyingUnit()))], "move", GetRectCenter(gg_rct_Base))
endfunction


function Trig_BD_Actions takes nothing returns nothing
    local unit u=GetSoldUnit() // Запоминаем купленного Героя
    local integer id=GetPlayerId(GetOwningPlayer(GetBuyingUnit())) //Запоминаем номер игрока купившего Героя
    local trigger t=CreateTrigger()
    set HERO[id]=u
    call DisplayTextToForce( GetPlayersAll(), ( "HERO" + GetUnitName(HERO[0]) ) )
    call TriggerRegisterUnitEvent( t, HERO[id], EVENT_UNIT_DAMAGED )  //Создаем Триггер с событием которое будет срабатывать, как наш герой получит урон
    // Создаем условие которое будет проверять на количество ХП у героя
    call TriggerAddCondition(t, Condition(function Trig_BD_Func008002) )
    // А здесь будут все наши действия
    call TriggerAddAction(t, function Trig_BD_Func010002 )
    set u=null
    set t=null
endfunction

//===========================================================================
function InitTrig_BD takes nothing returns nothing
    set gg_trg_BD = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_BD, EVENT_PLAYER_UNIT_SELL )
    call TriggerAddAction( gg_trg_BD, function Trig_BD_Actions )
endfunction
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
11
Привет, скрин+карта, может быть сразу и поймешь :)
Или конвертированый триггер в jass и немного сократить код, возможно так будет понятнее
globals
    unit array HERO
endglobals
function Trig_BD_Func008002 takes nothing returns boolean
    return ( GetUnitStateSwap(UNIT_STATE_LIFE,(HERO[GetPlayerId(GetOwningPlayer(GetBuyingUnit()))])) <= ((GetUnitState(HERO[GetPlayerId(GetOwningPlayer(GetBuyingUnit()))],UNIT_STATE_MAX_LIFE)) * 0.10 ) )
endfunction

function Trig_BD_Func010002 takes nothing returns nothing
    call DisplayTextToForce( GetPlayersAll(), "У героя меньше 10% хп, отправляем его на базу" )
    call IssuePointOrderLoc(HERO[GetPlayerId(GetOwningPlayer(GetBuyingUnit()))], "move", GetRectCenter(gg_rct_Base))
endfunction


function Trig_BD_Actions takes nothing returns nothing
    local unit u=GetSoldUnit() // Запоминаем купленного Героя
    local integer id=GetPlayerId(GetOwningPlayer(GetBuyingUnit())) //Запоминаем номер игрока купившего Героя
    local trigger t=CreateTrigger()
    set HERO[id]=u
    call DisplayTextToForce( GetPlayersAll(), ( "HERO" + GetUnitName(HERO[0]) ) )
    call TriggerRegisterUnitEvent( t, HERO[id], EVENT_UNIT_DAMAGED )  //Создаем Триггер с событием которое будет срабатывать, как наш герой получит урон
    // Создаем условие которое будет проверять на количество ХП у героя
    call TriggerAddCondition(t, Condition(function Trig_BD_Func008002) )
    // А здесь будут все наши действия
    call TriggerAddAction(t, function Trig_BD_Func010002 )
    set u=null
    set t=null
endfunction

//===========================================================================
function InitTrig_BD takes nothing returns nothing
    set gg_trg_BD = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_BD, EVENT_PLAYER_UNIT_SELL )
    call TriggerAddAction( gg_trg_BD, function Trig_BD_Actions )
endfunction
Загруженные файлы
Принятый ответ
28
Smeto, подозреваю что джасс для автора вопроса слишком сложно
в случае чего могу закинуть аналог на гуи
11
rsfghd, Я с тобой согласен:)
Если честно я не смог это реализовать на гуи изначально, так как забыл про существование действия: добавить событие в уже существующий триггер.
Ты бы так сделал?
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.