Difference between revisions of "RemoveItem - ObjectReference"
Jump to navigation
Jump to search
imported>B1gBadDaddy (added a script for removing items using a form list) |
imported>B1gBadDaddy m (added notes to script) |
||
Line 38: | Line 38: | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
Function SomeFunction() | Function SomeFunction() | ||
;In this example, let's say you have 2 misc objects in your formlist. | |||
;This script will remove 10 count of any quantity of those items. | |||
;So it could be 5 of one, 5 of the other, or 9 of one and 1 of the other. | |||
int ListSize = myFormList.GetSize() | int ListSize = myFormList.GetSize() |
Revision as of 07:58, 22 September 2013
Member of: ObjectReference Script
Removes X of the specified item from this reference's inventory, possibly silently.
Syntax
Function RemoveItem(Form akItemToRemove, int aiCount = 1, bool abSilent = false, ObjectReference akOtherContainer = None) native
Parameters
- akItemToRemove: The item (or base form) to remove from this reference's inventory. If a reference is passed, the reference is deleted once it's removed.
- aiCount: How many references to remove.
- Default: 1
- abSilent: If true, no message will be printed to the screen
- Default: false
- akOtherContainer: If not None, the removed item(s) will be moved into this ref's inventory
- Default: None
Return Value
None.
Examples
; Take away an apple
Chest.RemoveItem(Apple)
; Remove 50 gold from the player
Game.GetPlayer().RemoveItem(GoldBase, 50)
Notes
- The function accepts a form object, however you can't make a property to a form object, you need to create a property to another type of object that extends form. Most often a MiscObject, or Weapon, etc.
- If you pass in a form list, it will remove aiCount of each item in the form list from the container. If there isn't aiCount of a particular item in the container, it will remove all of them. If you wish to remove X amount of objects from a container, by checking against a form list, use the following script (the script uses PlayerREF as the ObjectReference to remove items from):
Function SomeFunction()
;In this example, let's say you have 2 misc objects in your formlist.
;This script will remove 10 count of any quantity of those items.
;So it could be 5 of one, 5 of the other, or 9 of one and 1 of the other.
int ListSize = myFormList.GetSize()
int CurrentItems = 0
int ItemsLeft = 10; remove 10 items, change this to whatever number you want to remove
while CurrentItems <= ListSize && ItemsLeft > 0
Form CurrentItem1 = myFormList.GetAt(CurrentItems)
int ItemCount = PlayerREF.GetItemCount(CurrentItem1)
PlayerREF.RemoveItem(CurrentItem1, ItemsLeft)
ItemsLeft -= ItemCount
CurrentItems += 1
endwhile
endFunction
- The function seems to have a preference for equipped items. Or if not equipped items then the first instance of the item that's in inventory (which is the same thing, since when you equip something, it's the first instance of the object in the inventory).
- The akItemToAdd argument of AddItem - ObjectReference can be a LeveledItem. A LeveledItem as akItemToRemove, however, won't work and the members of the LeveledItem must be passed individually as akItemToRemove.