Добрый вечер всем, хочу реализовать что бы невозможно было даже ударить предмет в игре.
Многие зададут вопрос, зачем "ждать 0 секунд" - иначе вообще игнорирует триггер и не выполняет команду отставить.
Реализовал следующим образом, прикладываю скриншот.
Проблема заключается в следующем, если спамить приказ атаковать предмет, то он все же совершает по нему удар и разламывает.

rsfghd:
Obelick, там определённые юниты не могут ломать предмет
Тогда же можно им в Редакторе Объектов выпилить предметы как доступную цель. Это даже ещё меньше мороки.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
Я попробовал, действительно не работает, особенно если юниту сделать анимацию точки хода 0 (атака до замаха), сейчас попробую на локальном таймере сделать
26
Я всегда решал эту проблему через отдачу приказа "идти" на предмет.
Таким образом герой просто подходил в упор и всё.
2
Нужно запретить поломку любого предмета или только конкретных?
26
А еще этот блок с кучей "или" в условии триггера... Почему у всех с ним проблемы. Попробуй через "иф".
28
Странно, через таймер всё работает, видимо действие ждать 0.00 супер медлительное
код
globals
hashtable H = InitHashtable()
itemtype it = null
endglobals

boolean Conditions(){
    it = GetItemType(GetOrderTargetItem())
    return GetUnitTypeId(GetOrderedUnit()) == 'hfoo' and GetIssuedOrderId() == String2OrderIdBJ("attack") and it == ITEM_TYPE_ARTIFACT
}

nothing k(){
    timer t = GetExpiredTimer()
    IssueImmediateOrder(LoadUnitHandle(H,GetHandleId(t),0),"stop")
    FlushChildHashtable(H,GetHandleId(t))
    DestroyTimer(t); t = null
    BJDebugMsg("2")
}

nothing Actions(){
    timer t = CreateTimer()
    SaveUnitHandle(H,GetHandleId(t),0,GetOrderedUnit())
    TimerStart(t,0.,false,function k)
    t = null
    BJDebugMsg("1")
}

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    set gg_trg_Spell = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Spell, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerAddCondition( gg_trg_Spell, Condition( function Conditions ) )
    call TriggerAddAction( gg_trg_Spell, function Actions )
endfunction
Загруженные файлы
23
Щас бы костыль придумывать или локальные таймеры когда предмет можно сделать просто неуязвимым...
28
Obelick, там определённые юниты не могут ломать предмет
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.