//---------------------------------------------------------------------------
//***************************************************************************
//---------------------------------------------------------------------------
//INVENTORY
//---------------------------------------------------------------------------
//***************************************************************************
//---------------------------------------------------------------------------
//***************************************************************************
//Returns what box the item was dropped on, if it was not a drop order,
//returns -1
//***************************************************************************
function getItemDropBox takes integer o returns integer
if ( (o > 852001) and (o < 852008) ) then
return (o - 852001)
else
return -1
endif
endfunction
//***************************************************************************
//Sets an item on the specified page
//***************************************************************************
function setPageItem takes string t, integer playernum, item o, integer page, integer slot returns nothing
call SetInvHandle( (I2S(playernum) + t + I2S(page) ), ( "item" + I2S(slot) ), o)
call SetHandleInt( o, "var_nInvSlot" + t, slot )
call SetHandleInt( o, "var_nInvPage" + t, page )
endfunction
//***************************************************************************
//Adds an item to the first free inventory slot on specified page
//***************************************************************************
function addPageItem takes string t, integer playernum, item o, integer page, integer maxslots returns boolean
local integer x
local boolean b
set b = false
set x = 1
loop
exitwhen x > maxslots
if ( GetInvHandle((I2S(playernum) + t + I2S(page) ), ( "item" + I2S(x) )) == null ) then
call SetInvHandle( (I2S(playernum) + t + I2S(page) ), ( "item" + I2S(x) ), o)
call SetHandleInt( o, "var_nInvSlot" + t, x )
call SetHandleInt( o, "var_nInvPage" + t, page )
set b = true
set x = maxslots
endif
set x = x + 1
endloop
return b
endfunction
//***************************************************************************
//Adds an item to the first free inventory slot
//***************************************************************************
function addItem takes string t, integer playernum, item o, integer maxslots, integer maxpages returns boolean
local integer x
local boolean b
set b = false
set x = 1
loop
exitwhen x > maxpages
if ( addPageItem(t, playernum, o, x, maxslots) == true ) then
set b = true
set x = maxpages
endif
set x = x + 1
endloop
return b
endfunction
//***************************************************************************
//Removes an item from a specific inventory page/slot
//***************************************************************************
function removeItemAt takes string t, integer playernum, item o, integer page, integer slot returns nothing
call SetInvHandle( (I2S(playernum) + t + I2S(page) ), ( "item" + I2S(slot) ), null)
if ( o != null ) then
call SetHandleInt( o, "var_nInvSlot" + t, 0 )
call SetHandleInt( o, "var_nInvPage" + t, 0 )
endif
endfunction
//***************************************************************************
//Removes a specific item from inventory
//***************************************************************************
function removeItem takes string t, integer playernum, item o, integer maxslots, integer maxpages returns boolean
local integer x
local integer page
local boolean b
set b = false
set page = 1
set x = 1
loop
exitwhen page > maxpages
loop
exitwhen x > maxslots
if ( GetInvHandle((I2S(playernum) + t + I2S(page) ), ( "item" + I2S(x) )) == o ) then
call SetInvHandle( (I2S(playernum) + t + I2S(page) ), ( "item" + I2S(x) ), null)
call SetHandleInt( o, "var_nInvSlot" + t, 0 )
call SetHandleInt( o, "var_nInvPage" + t, 0 )
set b = true
set x = maxslots
set page = maxpages
endif
set x = x + 1
endloop
set page = page + 1
endloop
return b
endfunction
//***************************************************************************
//Gets an item from an inventory page in a specified slot
//***************************************************************************
function getPageItem takes string t, integer playernum, integer page, integer slot returns item
return GetInvHandle( ( I2S(playernum) + t + I2S(page) ), ( "item" + I2S(slot) ) )
endfunction
//***************************************************************************
//Gets a page of items
//***************************************************************************
function getPage takes string t, integer playernum, integer page, integer num returns nothing
local integer x
set x = 1
loop
exitwhen x > num
set udg_INVENTORY_itemInvSlot_A[(((playernum - 1) * 6) + x)] = getPageItem(t, playernum, page, x)
//call DisplayTextToForce( GetPlayersAll(), GetItemName(udg_INVENTORY_itemInvSlot_A[( ( ( udg_OTHER_nPlayerIndex - 1 ) * 6 ) + x )]) )
set x = x + 1
endloop
endfunction
//***************************************************************************
//Gives the unit an item in a specified real inventory slot
//***************************************************************************
function giveItemInSlot takes unit u, item i, integer slot returns nothing
local integer x
//call PolledWait( 0.01 )
set x = 1
loop
exitwhen x > (slot - 1)
if ( UnitItemInSlotBJ(u, x) == null ) then
call UnitAddItemByIdSwapped( 'ches', u )
set udg_EQUIPMENT_itemDummy_A[x] = GetLastCreatedItem()
else
call DoNothing( )
endif
set x = x + 1
endloop
call UnitRemoveItemFromSlotSwapped( x, u )
call SetItemPositionLoc( UnitItemInSlotBJ(u, x), GetRectCenter(GetPlayableMapRect()) )
call UnitAddItemSwapped( i, u )
set x = 1
loop
exitwhen x > (slot - 1)
call RemoveItem( udg_EQUIPMENT_itemDummy_A[x] )
set x = x + 1
endloop
endfunction