Перемещение предметов в рюкзаке
|
|
Торвальд | Дата: Суббота, 11 Сентября 2010, 22:43:10 | Сообщение # 1 |
3 уровень
Группа: Проверенные
Сообщений: 51
Награды: 0
Репутация: 11
Блокировки:
| Вообщем, дошел я до создания системы инвентаря и понял, что нихрена не умею работать с предметами в рюкзаке, даже перемещать. Вот например: 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)" которая не хочет работать.
|
|
|
|
[san9] | Дата: Суббота, 11 Сентября 2010, 22:49:32 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Code call UnitDropItemSlotBJ( твой юнит, UnitItemInSlotBJ(твой юнит, 1), 2 ) Добавлено (11-09-2010, 22:49) --------------------------------------------- ой не так вопрос понил)
|
|
|
|
Торвальд | Дата: Суббота, 11 Сентября 2010, 23:06:04 | Сообщение # 3 |
3 уровень
Группа: Проверенные
Сообщений: 51
Награды: 0
Репутация: 11
Блокировки:
| [san9], попробовал то что ты написал, результат - вылет вара Пойду спать, надеюсь за ночь кто-нибудь ответит.
|
|
|
|
[san9] | Дата: Воскресенье, 12 Сентября 2010, 00:27:34 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Создай тригер 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 слота.Тоесть пуст он или нет.Если пуст то перетащит,если нет то не перетащит. Если что сам настроиш.
|
|
|
|
Торвальд | Дата: Воскресенье, 12 Сентября 2010, 09:55:52 | Сообщение # 5 |
3 уровень
Группа: Проверенные
Сообщений: 51
Награды: 0
Репутация: 11
Блокировки:
| [san9], спасибо. Твой способ не использовал, но он натолкнул меня на правильную мысль. Теперь все работает. Лови плюсег.
|
|
|
|
kurock | Дата: Воскресенье, 12 Сентября 2010, 10:48:19 | Сообщение # 6 |
7 уровень
Группа: Заблокированные
Сообщений: 286
Награды: 0
Репутация: 9
Блокировки:
| Теперь скажи намэтот кодж ПРАВЕЛЬНЫЙ
Хочешь раздел для мапы? Хочешь знать джасс? пиши мне... я подскажу что и как..
|
|
|
|