PowBot LogoPowBot

Item Type

Item

Represents an item in Old School RuneScape. Items can be in different locations such as inventory, bank, or equipment slots.

Methods

id()

Get the item ID.

Returns: number - The unique item ID

Example:

local item = inventory:find_first({name = "Lobster"})
if item then
    print("Item ID:", item:id())
end

name()

Get the item name.

Returns: string - The item's display name

Example:

local item = inventory:find_first({id = 385})
print("Item name:", item:name()) -- "Shark"

stack_size()

Get the stack size.

Returns: number - The number of items in the stack

Example:

local coins = inventory:find_first({name = "Coins"})
if coins then
    print("You have", coins:stack_size(), "coins")
end

index()

Get the inventory slot index.

Returns: number - The slot index (0-27 for inventory)

Example:

local item = inventory:find_first({name = "Tinderbox"})
if item then
    print("Tinderbox is in slot", item:index())
end

click()

Human-like left click the item.

Returns: boolean - true if clicked successfully, false otherwise

Example:

local food = inventory:find_first({name = "Lobster"})
if food then
    food:click() -- Eat the food
end

interact(filter_input)

Right-click and select menu option by filters.

Parameters:

NameTypeDescription
filter_inputtable or nilOptional menu item filters (action, target, etc.)

Returns: boolean - true if interaction succeeded, false otherwise

Example:

-- Use an item on a game object
local tinderbox = inventory:find_first({name = "Tinderbox"})
if tinderbox then
    tinderbox:interact({action = "Use"})
    -- Then click on logs
end

-- Drop an item
local junk = inventory:find_first({name = "Junk"})
if junk then
    junk:interact({action = "Drop"})
end

use_on(target)

Use this item on an interactable target. Handles the full "use item on target" interaction: deselects any currently selected item, selects this item by clicking "Use", then uses it on the target.

Parameters:

NameTypeDescription
targetItem, GameObject, NPC, GroundItem, or PlayerThe target to use this item on

Returns: boolean - true if the interaction succeeded, false otherwise

Example:

-- Use a tinderbox on logs (item on item)
local tinderbox = inventory:find_first({name = "Tinderbox"})
local logs = inventory:find_first({name = "Logs"})
if tinderbox and logs then
    tinderbox:use_on(logs)
end

-- Use a knife on logs to fletch
local knife = inventory:find_first({name = "Knife"})
local logs = inventory:find_first({name = "Logs"})
if knife and logs then
    knife:use_on(logs)
end

-- Use a food item on another player
local food = inventory:find_first({name = "Shark"})
local player = players:find_first({name = "Friend"})
if food and player then
    food:use_on(player)
end

move_mouse_to()

Move the mouse to this item with human-like movement. Uses the item's clickable point (e.g. inventory or bank slot).

Returns: boolean - true on success, false if the position is invalid or the move fails

Example:

local food = inventory:find_first({name = "Lobster"})
if food and food:move_mouse_to() then
    mouse:click()
end

track()

Move the mouse to this item (one-shot; same as move_mouse_to()). Items do not support continuous tracking.

Returns: boolean - true on success

Example:

local item = inventory:find_first({name = "Tinderbox"})
if item then
    item:track()  -- One-shot move to the item
end

is_inventory_item()

Check if this is an inventory item.

Returns: boolean - true if the item is in inventory, false otherwise


is_bank_item()

Check if this is a bank item.

Returns: boolean - true if the item is in the bank, false otherwise


is_equipment_item()

Check if this is an equipment item.

Returns: boolean - true if the item is equipped, false otherwise


is_valid()

Check if this item is valid (has a valid ID > 0).

Returns: boolean - true if valid, false otherwise

Example:

local item = inventory:find_first({name = "Unknown"})
if item and item:is_valid() then
    -- Item exists and is valid
end

actions()

Get the available actions for this item (e.g., 'Eat', 'Wear', 'Wield', 'Drop').

Returns: table - Array of action strings

Example:

local sword = inventory:find_first({name = "Iron sword"})
if sword then
    local actions = sword:actions()
    for _, action in ipairs(actions) do
        print("Available action:", action)
    end
    -- Output: Wield, Drop, Examine
end

is_visible()

Check if item is visible in the viewport.

Returns: boolean - true if visible, false otherwise


is_stackable()

Check if item is stackable (can have multiple in one slot).

Returns: boolean - true if stackable, false otherwise

Example:

local item = inventory:find_first({name = "Coins"})
if item and item:is_stackable() then
    print("This item stacks")
end

is_noted()

Check if item is noted (bank note version).

Returns: boolean - true if noted, false otherwise

Example:

local logs = inventory:find_first({name_contains = "logs"})
if logs and logs:is_noted() then
    print("These are noted logs")
end

high_price()

Get the high price from the Grand Exchange price cache.

Returns: number or nil - The high price, or nil if no data available

Example:

local item = inventory:find_first({name = "Shark"})
if item then
    local high = item:high_price()
    if high then
        print("High price:", high, "gp")
    end
end

low_price()

Get the low price from the Grand Exchange price cache.

Returns: number or nil - The low price, or nil if no data available

Example:

local item = inventory:find_first({name = "Shark"})
if item then
    local low = item:low_price()
    if low then
        print("Low price:", low, "gp")
    end
end

charges()

Get the charge count from item names like 'Ring of dueling(4)' or 'Amulet of glory (3)'.

Returns: number or nil - The number of charges, or nil if item has no charges

Example:

local ring = inventory:find_first({name_contains = "Ring of dueling"})
if ring then
    local charges = ring:charges()
    if charges then
        print("Ring has", charges, "charges remaining")
        if charges < 2 then
            print("Running low on charges!")
        end
    end
end