Добавлен
Всем привет!
в этой теме описывают про него как его использовать
и здесь тоже
и собственно вопрос
есть некий герой который должен через приказ нападать на Ящик
Ящик это разрушаемый объект
когда он получает приказ Атаки, с этого Ящика падает предмет, 1 предмет имеет шанс 60% на выпадение другой 40%
и теперь вопрос
каким образом сказать этому герою чтобы подобрал этот предмет?
пробовал через LastDropedItem() не получилось
неужели надо Колхозить функцию которая проверит полученный Приказ и проверить Разрушаемый объект?
или как-то проверить координаты этого ящика и подобрать его во время атаки?
вот что пытаюсь сделать
    set udg_Dest[1] = gg_dest_LTcr_0000
    call TriggerRegisterDeathEvent( gg_trg_Neutral_Hostile_Drop_Tables, udg_Dest[1] )
function T takes nothing returns nothing
local widget w = GetTriggerDestructable()
local real x = GetWidgetX(w)
local real y = GetWidgetY(w)
local itempool ItemPool = CreateItemPool()
local item i
call ItemPoolAddItemType(ItemPool, 'phea', 60)
call ItemPoolAddItemType(ItemPool, 'pman', 40)
set i = PlaceRandomItem(ItemPool, x, y)
call DestroyItemPool(ItemPool)
call UnitAddItem(GetTriggerUnit(), i)
//GetTriggerUnit() не работает!
set ItemPool = null
set i = null
endfunction

function InitTrig_Neutral_Hostile_Drop_Tables takes nothing returns nothing
set gg_trg_Neutral_Hostile_Drop_Tables = CreateTrigger(  )
call TriggerAddAction( gg_trg_Neutral_Hostile_Drop_Tables, function T )
endfunction
пример взял с хайва
идеи?

нашел решение
function Trig_d_Actions takes nothing returns nothing
    set udg_H = InitHashtable()
    set udg_Dest[1] = gg_dest_LTcr_0000
    call TriggerRegisterDeathEvent( gg_trg_t, udg_Dest[1] )
endfunction

//===========================================================================
function InitTrig_d takes nothing returns nothing
    set gg_trg_d = CreateTrigger(  )
    call TriggerAddAction( gg_trg_d, function Trig_d_Actions )
//Map Initialization
endfunction
function T takes nothing returns nothing
local widget w = GetTriggerDestructable()
local real x = GetWidgetX(w)
local real y = GetWidgetY(w)
local itempool ItemPool = CreateItemPool()
local item i
local unit u = LoadUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"))
call ItemPoolAddItemType(ItemPool, 'phea', 60)
call ItemPoolAddItemType(ItemPool, 'pman', 40)
set i = PlaceRandomItem(ItemPool, x, y)
call DestroyItemPool(ItemPool)
call UnitAddItem(u, i)
set ItemPool = null
set i = null
set u = null
endfunction

//===========================================================================
function InitTrig_t takes nothing returns nothing
set gg_trg_t = CreateTrigger(  )
call TriggerAddAction( gg_trg_t, function T )
endfunction
function Trig_vsd_Actions takes nothing returns nothing
    call SaveUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"), GetOrderedUnit())
endfunction

//===========================================================================
function InitTrig_vsd takes nothing returns nothing
    set gg_trg_vsd = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_vsd, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerAddAction( gg_trg_vsd, function Trig_vsd_Actions )
endfunction
таким образом Работает
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Tapper, не ,не помогает.
Если ты конечно про
//! nocjass

//! endnocjass
В общем, такая проблема возникает только на JNGP Requiem.
ответ
TeX13:
тип предмета это integer.
 int array MyItemType
ответ
set bj_lastCreatedItem = PlaceRandomItem( . . . )

18
Не вижу события, скорее всего триггер юнит пустой. Привяжи героя в переменную и замени триггер юнит на твою переменную
Ответы (3)
18
local unit u = GetTriggerUnit()
он так не заработает
18
Borodach, в примере с хайва там Событие
//    set gg_trg_Neutral_Hostile_Drop_Tables = CreateTrigger(  )
//    call TriggerRegisterPlayerUnitEventSimple( gg_trg_Neutral_Hostile_Drop_Tables, Player(PLAYER_NEUTRAL_AGGRESSIVE), EVENT_PLAYER_UNIT_DEATH )
//    call TriggerAddAction( gg_trg_Neutral_Hostile_Drop_Tables, function Trig_Neutral_Hostile_Drop_Tables_Actions )
мне это событие не нужно так как я не собираюсь бить крипов чтобы с них падали шмотки а
GetTriggerDestructable()
18
если смотреть со стороны
function Doodad006712_DropItems takes nothing returns nothing
local widget trigWidget=null
local unit trigUnit=null
local integer itemID=0
local boolean canDrop=true
set trigWidget=bj_lastDyingWidget
if(trigWidget==null)then
set trigUnit=GetTriggerUnit()
endif
if(trigUnit!=null)then
set canDrop=not IsUnitHidden(trigUnit)
if(canDrop and GetChangingUnit()!=null)then
set canDrop=(GetChangingUnitPrevOwner()==Player(PLAYER_NEUTRAL_AGGRESSIVE))
endif
endif
if(canDrop)then
call RandomDistReset()
call RandomDistAddItem('I020',60)
call RandomDistAddItem('I01Y',40)
set itemID=RandomDistChoose()
if(trigUnit!=null)then
call UnitDropItem(trigUnit,itemID)
else
call WidgetDropItem(trigWidget,itemID)
endif
endif
set bj_lastDyingWidget=null
call DestroyTrigger(GetTriggeringTrigger())
endfunction

если бы было чтото на подобие
bj_lastKillingWidget
которая отслеживает Кто или Что убил, другое дело но ее нету
18
нашел решение
function Trig_d_Actions takes nothing returns nothing
    set udg_H = InitHashtable()
    set udg_Dest[1] = gg_dest_LTcr_0000
    call TriggerRegisterDeathEvent( gg_trg_t, udg_Dest[1] )
endfunction

//===========================================================================
function InitTrig_d takes nothing returns nothing
    set gg_trg_d = CreateTrigger(  )
    call TriggerAddAction( gg_trg_d, function Trig_d_Actions )
//Map Initialization
endfunction
function T takes nothing returns nothing
local widget w = GetTriggerDestructable()
local real x = GetWidgetX(w)
local real y = GetWidgetY(w)
local itempool ItemPool = CreateItemPool()
local item i
local unit u = LoadUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"))
call ItemPoolAddItemType(ItemPool, 'phea', 60)
call ItemPoolAddItemType(ItemPool, 'pman', 40)
set i = PlaceRandomItem(ItemPool, x, y)
call DestroyItemPool(ItemPool)
call UnitAddItem(u, i)
set ItemPool = null
set i = null
set u = null
endfunction

//===========================================================================
function InitTrig_t takes nothing returns nothing
set gg_trg_t = CreateTrigger(  )
call TriggerAddAction( gg_trg_t, function T )
endfunction
function Trig_vsd_Actions takes nothing returns nothing
    call SaveUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"), GetOrderedUnit())
endfunction

//===========================================================================
function InitTrig_vsd takes nothing returns nothing
    set gg_trg_vsd = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_vsd, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerAddAction( gg_trg_vsd, function Trig_vsd_Actions )
endfunction
таким образом Работает
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.