нашёл на сайте отлов приказа, однако карту пересохранить не получается
scope Order
globals
    private constant string Sep = "    "
endglobals

function Trig_Order_Actions takes nothing returns nothing
    local string s = GetUnitName(GetTriggerUnit()) + Sep
    local string order = OrderId2String(GetIssuedOrderId())
    local string target = ""
    
    if order != null and order != "" then
        set s = s + order + " -- " + I2S(GetIssuedOrderId())
    else
        set s = s + I2S(GetIssuedOrderId())
    endif
    
    
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER then
        if GetOrderTargetDestructable() != null then
            set target = "target destructable -- " + GetDestructableName(GetOrderTargetDestructable())
        elseif GetOrderTargetItem() != null then
            set target = "target item -- " + GetItemName(GetOrderTargetItem())
        else
            set target = "target unit -- " + GetUnitName(GetOrderTargetUnit())
        endif
        
    elseif GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER then
        set target = "target point -- (" + R2SX(GetOrderPointX()) + ", " + R2SX(GetOrderPointY()) + ")"
    endif
    
    if target != "" then
        set s = s + Sep + target
    endif
    
    call Message(10., s)
endfunction

//===========================================================================
function InitTrig_Order takes nothing returns nothing
    set gg_trg_Order = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_Order, function Trig_Order_Actions )
endfunction
endscope
что хочу узнать - есть ли способ по id приказа добавить способность другому юниту и отдать приказ на применение?
если кто сможет сделать карту пример, на обычный редактор 26а, буду очень признателен

function Trig_Order_Actions takes nothing returns nothing
    local string s = GetUnitName(GetTriggerUnit()) + udg_Sep
    local string order = OrderId2String(GetIssuedOrderId())
    local string target = ""
    
    if order != null and order != "" then
        set s = s + order + " -- " + I2S(GetIssuedOrderId())
    else
        set s = s + I2S(GetIssuedOrderId())
    endif
    
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER then
        if GetOrderTargetDestructable() != null then
            set target = "target destructable -- " + GetDestructableName(GetOrderTargetDestructable())
        elseif GetOrderTargetItem() != null then
            set target = "target item -- " + GetItemName(GetOrderTargetItem())
        else
            set target = "target unit -- " + GetUnitName(GetOrderTargetUnit())
        endif
        
    elseif GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER then
        //set target = "target point -- (" + R2SX(GetOrderPointX()) + ", " + R2SX(GetOrderPointY()) + ")"
    endif
    
    if target != "" then
        set s = s + udg_Sep + target
    endif
    
    //call Message(10., s)
endfunction

//===========================================================================
function InitTrig_Order takes nothing returns nothing
    set gg_trg_Order = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_Order, function Trig_Order_Actions )
endfunction
теперь будет сохраняться
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
20
моя мысль дошла до этого. осталось только отловить применённый приказ, чтобы я перегнал его в Integer переменную
Ну и чтобы мне с синтаксисом custom script подсказали, правильно ли я пишу
отлов типа абилки не важен - я просто буду спамить всеми видами каста поочередно (то есть на юнита, на область и без цели) - нужный сработает, другие нет

ремув локейшен с таргетом и кастером уже переписал
Загруженные файлы
28
function Trig_Order_Actions takes nothing returns nothing
    local string s = GetUnitName(GetTriggerUnit()) + udg_Sep
    local string order = OrderId2String(GetIssuedOrderId())
    local string target = ""
    
    if order != null and order != "" then
        set s = s + order + " -- " + I2S(GetIssuedOrderId())
    else
        set s = s + I2S(GetIssuedOrderId())
    endif
    
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER then
        if GetOrderTargetDestructable() != null then
            set target = "target destructable -- " + GetDestructableName(GetOrderTargetDestructable())
        elseif GetOrderTargetItem() != null then
            set target = "target item -- " + GetItemName(GetOrderTargetItem())
        else
            set target = "target unit -- " + GetUnitName(GetOrderTargetUnit())
        endif
        
    elseif GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER then
        //set target = "target point -- (" + R2SX(GetOrderPointX()) + ", " + R2SX(GetOrderPointY()) + ")"
    endif
    
    if target != "" then
        set s = s + udg_Sep + target
    endif
    
    //call Message(10., s)
endfunction

//===========================================================================
function InitTrig_Order takes nothing returns nothing
    set gg_trg_Order = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_Order, function Trig_Order_Actions )
endfunction
теперь будет сохраняться
Принятый ответ
28
сейчас вникся в тему, нафиг тебе код на джассе я искренне не пойму, это на гуи в 2 строчки делается
насчёт сути
что хочу узнать - есть ли способ по id приказа добавить способность другому юниту и отдать приказ на применение?
бд делай, абилок и их приказов

globals
	integer SpellID
	string SpellOrder
	integer SpellTargetType
	
	constant integer Stomp = 1
endglobals

function init takes nothing returns nothing
	set SpellID[0] = 'A000'
	set SpellOrder[0] = "thunderbolt"
	set SpellTargetType[0] = 0 // 0 - target, 1 - no target, 2 - point
	
	set SpellID[Stomp] = 'A001'
	set SpellOrder[Stomp] = "stomp"
	set SpellTargetType[Stomp] = 1
endfunction

function myfunc takes unit u returns nothing
	local integer i = GetRandomInt( 0, 1 )
	
	call UnitAddAbility( u, SpellID[i] )
    if SpellTargetType[i] == 0 then
        call IssueTargetOrder( u, SpellOrder[i], GetNearUnitInRange( ... ) )
    elseif SpellTargetType[i] == 1 then
        call IssueImmediateOrder( u, SpellOrder[i] )
    elseif SpellTargetType[i] == 2 then
        call IssuePointOrder( u, SpellOrder[i], x, y )
    endif
endfunction
20
rsfghd:
бд можно сделать, но если есть возможность выдавать и кастовать по OrderId - зачем городить лишнее?
28
ssbbssc, может быть много абилок с одинаковым приказом
20
ssbbssc, может быть много абилок с одинаковым приказом
для меня это не играет роли
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.