Вообщем, дошел я до создания системы инвентаря и понял, что нихрена не умею работать с предметами в рюкзаке, даже перемещать. Вот например:
Code
function Trig_item_Actions takes nothing returns nothing if GetIssuedOrderId()==852003 then call UnitDropItemSlotBJ(GetTriggerUnit(), GetOrderTargetItem(), 6) endif endfunction
//=========================================================================== function InitTrig_item takes nothing returns nothing set gg_trg_item = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_item, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER ) call TriggerAddAction( gg_trg_item, function Trig_item_Actions ) endfunction
По идее этот триггер должен перемещать итем в слот 1 если его переместили в слот 2, но он не перемещается. В чем может быть дело? зы если вместо перемещения написать:
Code
call RemoveItem( GetOrderTargetItem() )
то он удалится) Т.е. проблема именно в строке "call UnitDropItemSlotBJ(GetTriggerUnit(), GetOrderTargetItem(), 6)" которая не хочет работать.
Создай тригер Item,конвертируй,удали всё и вставь это.
Code
function Trig_Item_Func002Func001C takes nothing returns boolean if ( not ( GetOrderTargetItem() == UnitItemInSlotBJ(GetOrderedUnit(), 2) ) ) then return false endif if ( not ( UnitItemInSlotBJ(GetOrderedUnit(), 1) == null ) ) then return false endif return true endfunction
function Trig_Item_Func002C takes nothing returns boolean if ( not Trig_Item_Func002Func001C() ) then return false endif return true endfunction
function Trig_Item_Actions takes nothing returns nothing call TriggerSleepAction( 0.30 ) if ( Trig_Item_Func002C() ) then call UnitDropItemSlotBJ( GetOrderedUnit(), UnitItemInSlotBJ(GetOrderedUnit(), 2), 1 ) else endif endfunction
//=========================================================================== function InitTrig_Item takes nothing returns nothing set gg_trg_Item = CreateTrigger( ) call TriggerRegisterUnitEvent( gg_trg_Item, gg_unit_Hmkg_0000, EVENT_UNIT_ISSUED_TARGET_ORDER ) call TriggerAddAction( gg_trg_Item, function Trig_Item_Actions ) endfunction
Это делает то,что тебе надо(как я понил) Любой предмет,каторый полажили в слот 2,перелаживался в слот 1. Но я ещё зделал проверку,на ноличие 1 слота.Тоесть пуст он или нет.Если пуст то перетащит,если нет то не перетащит. Если что сам настроиш.