Difference between revisions of "Walking Through Inventory Items"
Jump to navigation
Jump to search
imported>Haama (Created) |
imported>TheNiceOne |
||
(19 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
There are | __NOTOC__ | ||
#From the end to the beginning - Easier to use with RemoveItem | |||
#From beginning to end | '''{{ReqOBSE}}''' | ||
There are two ways to walk an inventory: | |||
#From the end to the beginning - Easier to use with RemoveItem | |||
#From beginning to end | |||
==From the End to the Beginning== | ==From the End to the Beginning== | ||
<pre>short | <pre>short invPos | ||
ref pInvObj | ref pInvObj | ||
ref pCont | ref pCont | ||
... | ... | ||
set pCont to YourDesiredContainer | set pCont to YourDesiredContainer | ||
set | set invPos to pCont.GetNumItems | ||
While invPos > 0 | |||
set invPos to (invPos - 1) | |||
set | set pInvObj to (pCont.GetInventoryObject invPos) | ||
set pInvObj to (pCont.GetInventoryObject | |||
;Do whatever you want to do | ;Do whatever you want to do | ||
Loop</pre> | |||
==From the Beginning to the End== | ==From the Beginning to the End== | ||
<pre>short | <pre>short invPos | ||
short invCount | |||
ref pInvObj | ref pInvObj | ||
ref pCont | ref pCont | ||
... | ... | ||
set pCont to YourDesiredContainer | set pCont to YourDesiredContainer | ||
set | set invPos to 0 | ||
set invCount to pCont.GetNumItems | |||
set | While invPos < invCount | ||
set pInvObj to (pCont.GetInventoryObject invPos) | |||
set | |||
;Do whatever you want to do | ;Do whatever you want to do | ||
set invPos to invPos + 1 | |||
Loop</pre> | |||
==Notes== | ==Notes== | ||
*[[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). | *[[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 [[Container|containers]] and [[:Category:Actors|actors]]. | *Can be used for both [[Container|containers]] and [[:Category:Actors|actors]]. | ||
<ul> | |||
<li>Some common things to do with the item</li> | |||
*Run tests such as | |||
if (IsQuestItem pInvObj) | |||
if (pInvObj == Apple) | |||
*Find out how many the player has | |||
set InvObjCount to (pCont.GetItemCount pInvObj) | |||
</ul> | |||
==See Also== | |||
*[[GetInventoryObject]] | |||
*[[GetNumItems]] | |||
*[[While]] | |||
[[Category:Useful Code]] | [[Category:Useful Code]] | ||
[[Category:Standardized | [[Category:Standardized Snippets]] |
Latest revision as of 03:29, 15 February 2011
Requires Oblivion Script Extender
Download
There are two ways to walk an inventory:
- From the end to the beginning - Easier to use with RemoveItem
- 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
- Find out how many the player has