From NWN Lexicon
Jump to: navigation, search

Determines the first item in an object's inventory.

object GetFirstItemInInventory(
    object oTarget = OBJECT_SELF


The object that has the inventory. (Default: OBJECT_SELF)


Returns the first item in oTarget's inventory (start to cycle through oTarget's inventory) and OBJECT_INVALID if the caller is not a creature, item, placeable, or store, or if no item is found.


Look at the second example script for an excellent function for determining if a faction has an item or a certain quantity of an item equipped; this can be done with a for loop because the integers associated with INVENTORY_SLOT_* start at 0 and end at 17 (for 18 total possible equipped slots).

When an item with an inventory (such as a bag of holding) is returned using the GetFirstItemInInventory() and GetNextItemInInventory() functions, the next call to GetNextItemInInventory() will start to look inside the nested inventory (e.g. the bag of holding's inventory).




// This function counts up the total number of items in the first PC's inventory.  (The number of items in a stackable count toward the total)
void main()
    int nItems = 0;
    object oItem = GetFirstItemInInventory(GetFirstPC());
    while (GetIsObjectValid(oItem))
        nItems = nItems + GetNumStackedItems(oItem);
        oItem = GetNextItemInInventory(GetFirstPC());
  CheckFactionForItems example
  With this function, you can check, whether a faction has got a certain amount
  of a certain item in its members inventories or equipped items.
  Created By: Arlas Gilhith (
  Created On: 29.07.2003
int CheckFactionForItems(object oMemberOfFaction, string sItem, int nAmount = 2)
    int i, nCount;
    object oMember = GetFirstFactionMember(oMemberOfFaction, FALSE);
    object oItem;
    // loop through members
    while (GetIsObjectValid(oMember) && (nCount < nAmount))
        // check inventory for item
        oItem = GetFirstItemInInventory(oMember);
        while (GetIsObjectValid(oItem) && (nCount < nAmount))
            if (GetTag(oItem) == sItem)
            oItem = GetNextItemInInventory(oMember);
        // If we've already reached the max number of items, don't bother
        // looping through their equipped items.
        if (nCount >= nAmount)
        // check equipped items for item
        for (i = 0; i < NUM_INVENTORY_SLOTS; ++i)
            oItem = GetItemInSlot(i, oMember);
            if (GetIsObjectValid(oItem)) && (GetTag(oItem) == sItem))
        oMember = GetNextFactionMember(oMemberOfFaction, FALSE);
    return (nCount >= nAmount);
// This example (used as starting conditional in a dialogue) checks whether the
// faction of the speaker has got four hatchets.
int StartingConditional()
    return CheckFactionForItems(OBJECT_SELF, "NW_WAXHN001", 4);

See Also

functions:  GetNextItemInInventory

 author: Tom Cassiotis, editor: Lilac Soul, additional contributor(s): Marc Ermshaus, Ian Christie