JediPope
New Member
- Reaction score
- 0
I am having trouble creating this trigger that allows for an extended inventory system. For a reason I do not understand it will not remove the item when I press the inventory switch button (a Hero skill).
This function requires the global variables udg_Item_Hash (hashtable), udg_Item_Real1, udg_Item_Real2 (for another trigger, which is disabled for testing this trigger), the unique hero 'H000', and a custom channel spell ('A000') for the switch inventory. At the moment this is for a single player map. I am wondering if it is leaking somehow or if I corrupted the file again.
This function requires the global variables udg_Item_Hash (hashtable), udg_Item_Real1, udg_Item_Real2 (for another trigger, which is disabled for testing this trigger), the unique hero 'H000', and a custom channel spell ('A000') for the switch inventory. At the moment this is for a single player map. I am wondering if it is leaking somehow or if I corrupted the file again.
Code:
function Trig_Inventory1_Conditions takes nothing returns boolean
if ( GetSpellAbilityId() != 'A000' ) then
return false
endif
if ( GetUnitTypeId(GetSpellAbilityUnit()) != 'H000' ) then
return false
endif
if ( GetOwningPlayer(GetSpellAbilityUnit()) != Player(0) ) then
return false
endif
return true
endfunction
function Inventory1_Actions takes nothing returns nothing
local integer i = 6
set udg_Item_Real2 = 0.00
if ( udg_Item_Real1 == 0.00 ) then
loop
exitwhen i == 0
if ( UnitItemInSlot( GetSpellAbilityUnit(), i) == null ) then
call RemoveSavedHandle(udg_Item_Hash, 1, i)
else
if ( LoadItemHandle( udg_Item_Hash, 1, i) != UnitItemInSlot( GetSpellAbilityUnit(), i) ) then
call SaveItemHandle( udg_Item_Hash, 1, i, (UnitItemInSlot( GetSpellAbilityUnit() , i)))
call UnitRemoveItemFromSlot( GetSpellAbilityUnit(), i )
call SetItemLifeBJ( GetLastRemovedItem(), 0.00 )
else
call UnitRemoveItemFromSlot( GetSpellAbilityUnit(), i )
call SetItemLifeBJ( GetLastRemovedItem(), 0.00 )
endif
endif
set i = i - 1
endloop
set i = 6
loop
exitwhen i == 0
call UnitAddItem( GetTriggerUnit(), LoadItemHandle( udg_Item_Hash, 1, (i+6)))
set i = i - 1
endloop
call LeaderboardSetLabel( udg_Action, "Summon Inventory" )
else
set i = 6
loop
exitwhen i == 0
if ( UnitItemInSlot( GetSpellAbilityUnit(), i) == null ) then
call RemoveSavedHandle(udg_Item_Hash, 1, (i + 6))
else
if ( LoadItemHandle( udg_Item_Hash, 1, (i + 6)) != UnitItemInSlot( GetSpellAbilityUnit(), i) ) then
call SaveItemHandle( udg_Item_Hash, 1, (i + 6), (UnitItemInSlot( GetSpellAbilityUnit() , i)))
call UnitRemoveItemFromSlot( GetSpellAbilityUnit(), i )
call SetItemLifeBJ( GetLastRemovedItem(), 0.00 )
else
call UnitRemoveItemFromSlot( GetSpellAbilityUnit(), i )
call SetItemLifeBJ( GetLastRemovedItem(), 0.00 )
endif
endif
set i = i - 1
endloop
set i = 6
loop
exitwhen i == 0
call UnitAddItem( GetSpellAbilityUnit(), LoadItemHandle( udg_Item_Hash, 1, i))
call SetItemCharges( UnitItemInSlot( GetSpellAbilityUnit(), i), GetItemCharges(LoadItemHandle( udg_Item_Hash, 1, i)) )
set i = i - 1
endloop
call LeaderboardSetLabel( udg_Action, "Item Inventory" )
endif
if ( udg_Item_Real1 == 1.00 ) then
set udg_Item_Real1 = 0.00
else
set udg_Item_Real1 = 1.00
endif
set udg_Item_Real2 = 1.00
endfunction
//===========================================================================
function InitTrig_Inventory1 takes nothing returns nothing
set gg_trg_Inventory1 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Inventory1, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Inventory1, Condition( function Trig_Inventory1_Conditions ) )
call TriggerAddAction( gg_trg_Inventory1, function Inventory1_Actions )
endfunction