Agent skill
SND Inventory Functions
Use this skill when working with player inventory, item management, and container operations in SND macros. Covers inventory queries, item counts, container types, and item manipulation.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/snd-inventory
SKILL.md
Inventory Functions for SND
This skill covers inventory management and item operations in SND macros.
Source Status: Unverified - documented from screenshots and testing. These are SND built-in functions.
Inventory Types
SND provides access to various inventory containers:
-- Main inventory types (InventoryType enum)
local InventoryType = {
Inventory1 = 0,
Inventory2 = 1,
Inventory3 = 2,
Inventory4 = 3,
EquippedItems = 1000,
Currency = 2000,
Crystals = 2001,
-- Retainer inventories
RetainerPage1 = 10000,
RetainerPage2 = 10001,
RetainerPage3 = 10002,
RetainerPage4 = 10003,
RetainerPage5 = 10004,
RetainerPage6 = 10005,
RetainerPage7 = 10006,
RetainerEquipped = 10007,
RetainerGil = 10008,
RetainerCrystals = 10009,
RetainerMarket = 10010,
-- Saddlebag
SaddleBag1 = 4000,
SaddleBag2 = 4001,
PremiumSaddleBag1 = 4100,
PremiumSaddleBag2 = 4101,
-- Glamour dresser
GlamourChest = 20000,
-- Armoire
Armoire = 2500,
}
Core Inventory Functions
Checking Item Counts
-- Get count of item in all inventories
GetItemCount(number itemId) → number
-- Get count of item in specific inventory type
GetItemCountInContainer(number itemId, number inventoryType) → number
-- Check if player has item
HasItem(number itemId) → boolean
-- Get count including HQ items separately
GetItemCountHQ(number itemId) → number
Inventory Space
-- Get free inventory slots
GetFreeInventorySlots() → number
-- Check if inventory is full
IsInventoryFull() → boolean
Container Access
-- Get inventory container
GetInventoryContainer(number inventoryType) → InventoryContainer
-- Container properties
container.Size → number
container[slotIndex] → InventoryItem
Item Properties
-- InventoryItem properties
item.ItemId → number
item.Quantity → number
item.IsHQ → boolean
item.Spiritbond → number
item.Condition → number
item.Slot → number
item.Container → number
Usage Patterns
Count Items in Inventory
function CountItem(itemId)
local count = GetItemCount(itemId)
return count or 0
end
-- Example: Count Gil
local gilCount = CountItem(1) -- Gil item ID is 1
Check for Required Items
function HasRequiredItems(requirements)
for itemId, requiredCount in pairs(requirements) do
local count = GetItemCount(itemId)
if count < requiredCount then
return false, itemId
end
end
return true
end
-- Usage
local requirements = {
[5111] = 10, -- Earth Shard x10
[5112] = 10, -- Ice Shard x10
}
local hasAll, missingId = HasRequiredItems(requirements)
Check Inventory Space
function EnsureInventorySpace(minSlots)
local freeSlots = GetFreeInventorySlots()
if freeSlots < minSlots then
yield("/echo [Script] Need " .. minSlots .. " free slots, have " .. freeSlots)
return false
end
return true
end
Iterate Through Inventory
function FindItemSlot(itemId)
for containerType = 0, 3 do -- Inventory1-4
local container = GetInventoryContainer(containerType)
if container then
for i = 0, container.Size - 1 do
local item = container[i]
if item and item.ItemId == itemId then
return containerType, i, item
end
end
end
end
return nil
end
Check Equipped Item
function GetEquippedItem(slot)
local container = GetInventoryContainer(1000) -- EquippedItems
if container then
return container[slot]
end
return nil
end
-- Equipment slots
local EquipSlot = {
MainHand = 0,
OffHand = 1,
Head = 2,
Body = 3,
Hands = 4,
Waist = 5,
Legs = 6,
Feet = 7,
Ears = 8,
Neck = 9,
Wrists = 10,
Ring1 = 11,
Ring2 = 12,
SoulCrystal = 13,
}
Item Manipulation
Use Item
-- Use item from inventory (food, potions, etc.)
yield("/item <itemname>")
-- Use item on target
yield("/item <itemname> <t>")
Discard Item
-- Discard requires interacting with the inventory UI
-- Use with caution - this is destructive!
function DiscardItem(itemId)
-- Implementation depends on addon interaction
-- See snd-addons skill for UI automation
end
Common Item IDs
local CommonItems = {
-- Currency
Gil = 1,
-- Crystals (Shards)
FireShard = 2,
IceShard = 3,
WindShard = 4,
EarthShard = 5,
LightningShard = 6,
WaterShard = 7,
-- Crystals
FireCrystal = 8,
IceCrystal = 9,
WindCrystal = 10,
EarthCrystal = 11,
LightningCrystal = 12,
WaterCrystal = 13,
-- Clusters
FireCluster = 14,
IceCluster = 15,
WindCluster = 16,
EarthCluster = 17,
LightningCluster = 18,
WaterCluster = 19,
-- Ventures (for retainers)
Venture = 21072,
}
Best Practices
- Always check item existence before assuming count is valid
- Use container iteration for complex inventory operations
- Check inventory space before automated gathering/crafting
- Cache item counts if checking repeatedly in a loop
- Prefer GetItemCount over manual iteration for simple counts
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?