Walking Through Inventory Items

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search


Requires Oblivion Script Extender
Download

There are two ways to walk an inventory:

  1. From the end to the beginning - Easier to use with RemoveItem
  2. From beginning to end

From the End to the Beginning[edit | edit source]

short invPos
ref pInvObj
ref pCont
...
set pCont to YourDesiredContainer
set invPos to pCont.GetNumItems
While invPos > 0
  set invPos to (invPos - 1)
  set pInvObj to (pCont.GetInventoryObject invPos)
  ;Do whatever you want to do
Loop

From the Beginning to the End[edit | edit source]

short invPos
short invCount
ref pInvObj
ref pCont
...
set pCont to YourDesiredContainer
set invPos to 0
set invCount to pCont.GetNumItems
While invPos < invCount
  set pInvObj to (pCont.GetInventoryObject invPos)
  ;Do whatever you want to do
  set invPos to invPos + 1
Loop

Notes[edit | edit source]

  • GetInventoryObject returns the base object FormID. It can't be used when a reference should be used. The information returned about it (i.e., using GetSoulLevel) will be about the base object and not necessarily each object in the player's inventory. That is, if the player has 2 petty soul gems, one filled and the other empty and you use GetSoulLevel it will return the same for both (empty).
  • Can be used for both containers and actors.
  • Some common things to do with the item
    • Run tests such as
    if (IsQuestItem pInvObj) if (pInvObj == Apple)
    • Find out how many the player has
    set InvObjCount to (pCont.GetItemCount pInvObj)

See Also[edit | edit source]