ISteamInventory

Note

This documentation is auto-generated. Methods marked with πŸ€– are automatically generated bindings. Methods marked with ✍️ are manually implemented and methods marked with βœ‹ are currently not implemented.

Note

Overloaded Steam methods are exposed as distinct Lua functions using a type suffix (for example GetStatInt32 and SetStatFloat).

Note

This interface can be accessed has multiple accessors (e.g. a GameServer variant), the documentation shows Inventory everywhere but it can also be accessed with GameServerInventory.

List of Functions

List of Callbacks

Function Reference

Inventory.AddPromoItem(itemDef)

πŸ€– Auto-generated binding

Parameters:

itemDef (int - SteamItemDef_t) –

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

AddPromoItem

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, resultHandle = Steam.Inventory.AddPromoItem(promoItemDefID)
Inventory.AddPromoItems(pArrayItemDefs, unArrayLength)

πŸ€– Auto-generated binding

Parameters:
  • pArrayItemDefs (int[]?) –

  • unArrayLength (int) – size of the input array pArrayItemDefs

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

AddPromoItems

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, resultHandle = Steam.Inventory.AddPromoItems({item1, item2}, 2)
Inventory.CheckResultSteamID(resultHandle, steamIDExpected)

πŸ€– Auto-generated binding

Parameters:
  • resultHandle (int - SteamInventoryResult_t) –

  • steamIDExpected (uint64 - CSteamID) –

Returns:

(bool) Return value

SteamWorks:

CheckResultSteamID

Inventory.ConsumeItem(itemConsume, unQuantity)

πŸ€– Auto-generated binding

Parameters:
  • itemConsume (uint64 - SteamItemInstanceID_t) –

  • unQuantity (int) –

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

ConsumeItem

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, resultHandle = Steam.Inventory.ConsumeItem(itemInstanceID, 1)
-- Wait for OnSteamInventoryResultReady to confirm
Inventory.DeserializeResult(pBuffer, unBufferSize, bRESERVED_MUST_BE_FALSE)

πŸ€– Auto-generated binding

Parameters:
  • pBuffer (str?) –

  • unBufferSize (int) – size of the input array pBuffer

  • bRESERVED_MUST_BE_FALSE (bool) –

Returns:

(bool) Return value

Returns:

(int) pOutResultHandle

SteamWorks:

DeserializeResult

Signature differences from C++ API:

  • Parameter pOutResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.DestroyResult(resultHandle)

πŸ€– Auto-generated binding

Parameters:

resultHandle (int - SteamInventoryResult_t) –

SteamWorks:

DestroyResult

Notes:

Inventory.ExchangeItems(pArrayGenerate, punArrayGenerateQuantity, unArrayGenerateLength, pArrayDestroy, punArrayDestroyQuantity, unArrayDestroyLength)

πŸ€– Auto-generated binding

Parameters:
  • pArrayGenerate (int[]?) –

  • punArrayGenerateQuantity (int[]?) –

  • unArrayGenerateLength (int) – size of the input arrays pArrayGenerate and punArrayGenerateQuantity

  • pArrayDestroy (uint64[]?) –

  • punArrayDestroyQuantity (int[]?) –

  • unArrayDestroyLength (int) – size of the input arrays pArrayDestroy and punArrayDestroyQuantity

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

ExchangeItems

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.GenerateItems(pArrayItemDefs, punArrayQuantity, unArrayLength)

πŸ€– Auto-generated binding

Parameters:
  • pArrayItemDefs (int[]?) –

  • punArrayQuantity (int[]?) –

  • unArrayLength (int) – size of the input arrays pArrayItemDefs and punArrayQuantity

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

GenerateItems

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.GetAllItems()

πŸ€– Auto-generated binding

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

GetAllItems

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

-- Request all items the current user owns
local ok, resultHandle = Steam.Inventory.GetAllItems()
-- Wait for OnSteamInventoryResultReady callback
Inventory.GetEligiblePromoItemDefinitionIDs(steamID, punItemDefIDsArraySize)

πŸ€– Auto-generated binding

Parameters:
  • steamID (uint64 - CSteamID) –

  • punItemDefIDsArraySize (int?) – size of the buffer to allocate for pItemDefIDs. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(int[]) pItemDefIDs

Returns:

(int) punItemDefIDsArraySize

SteamWorks:

GetEligiblePromoItemDefinitionIDs

Signature differences from C++ API:

  • Parameter pItemDefIDs is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punItemDefIDsArraySize is both an input and an output in C++: you pass the buffer size, and Steam writes the actual count back. luasteam returns it as an additional return value.

Inventory.GetItemDefinitionIDs(punItemDefIDsArraySize)

πŸ€– Auto-generated binding

Parameters:

punItemDefIDsArraySize (int?) – size of the buffer to allocate for pItemDefIDs. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(int[]) pItemDefIDs

Returns:

(int) punItemDefIDsArraySize

SteamWorks:

GetItemDefinitionIDs

Signature differences from C++ API:

  • Parameter pItemDefIDs is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punItemDefIDsArraySize is both an input and an output in C++: you pass the buffer size, and Steam writes the actual count back. luasteam returns it as an additional return value.

Example:

local ids = Steam.Inventory.GetItemDefinitionIDs(256)
for _, defID in ipairs(ids) do
    local ok, name = Steam.Inventory.GetItemDefinitionProperty(defID, 'name', 128)
    print('Item def:', defID, name)
end
Inventory.GetItemDefinitionProperty(iDefinition, pchPropertyName, punValueBufferSizeOut)

πŸ€– Auto-generated binding

Parameters:
  • iDefinition (int - SteamItemDef_t) –

  • pchPropertyName (str?) –

  • punValueBufferSizeOut (int?) – size of the buffer to allocate for pchValueBuffer. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(str) pchValueBuffer

Returns:

(int) punValueBufferSizeOut

SteamWorks:

GetItemDefinitionProperty

Signature differences from C++ API:

  • Parameter pchValueBuffer is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punValueBufferSizeOut is both an input and an output in C++: you pass the buffer size, and Steam writes the actual count back. luasteam returns it as an additional return value.

Notes:

Inventory.GetItemPrice(iDefinition)

πŸ€– Auto-generated binding

Parameters:

iDefinition (int - SteamItemDef_t) –

Returns:

(bool) Return value

Returns:

(uint64) pCurrentPrice

Returns:

(uint64) pBasePrice

SteamWorks:

GetItemPrice

Signature differences from C++ API:

  • Parameter pCurrentPrice is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pBasePrice is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.GetItemsByID(pInstanceIDs, unCountInstanceIDs)

πŸ€– Auto-generated binding

Parameters:
  • pInstanceIDs (uint64[]?) –

  • unCountInstanceIDs (int) – size of the input array pInstanceIDs

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

GetItemsByID

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, resultHandle = Steam.Inventory.GetItemsByID({itemInstanceID1, itemInstanceID2}, 2)
-- Wait for OnSteamInventoryResultReady
Inventory.GetItemsWithPrices(unArrayLength)

πŸ€– Auto-generated binding

Parameters:

unArrayLength (int?) – size of the buffer to allocate for the output arrays pArrayItemDefs, pCurrentPrices, pBasePrices. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(int[]) pArrayItemDefs

Returns:

(uint64[]) pCurrentPrices

Returns:

(uint64[]) pBasePrices

SteamWorks:

GetItemsWithPrices

Signature differences from C++ API:

  • Parameter pArrayItemDefs is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pCurrentPrices is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pBasePrices is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.GetNumItemsWithPrices()

πŸ€– Auto-generated binding

Returns:

(int) Return value

SteamWorks:

GetNumItemsWithPrices

Inventory.GetResultItemProperty(resultHandle, unItemIndex, pchPropertyName, punValueBufferSizeOut)

πŸ€– Auto-generated binding

Parameters:
  • resultHandle (int - SteamInventoryResult_t) –

  • unItemIndex (int) –

  • pchPropertyName (str?) –

  • punValueBufferSizeOut (int?) – size of the buffer to allocate for pchValueBuffer. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(str) pchValueBuffer

Returns:

(int) punValueBufferSizeOut

SteamWorks:

GetResultItemProperty

Signature differences from C++ API:

  • Parameter pchValueBuffer is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punValueBufferSizeOut is both an input and an output in C++: you pass the buffer size, and Steam writes the actual count back. luasteam returns it as an additional return value.

Inventory.GetResultItems(resultHandle, punOutItemsArraySize)

πŸ€– Auto-generated binding

Parameters:
  • resultHandle (int - SteamInventoryResult_t) –

  • punOutItemsArraySize (int?) – size of the buffer to allocate for pOutItemsArray. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(SteamItemDetails_t[]) pOutItemsArray

Returns:

(int) punOutItemsArraySize

SteamWorks:

GetResultItems

Signature differences from C++ API:

  • Parameter pOutItemsArray is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punOutItemsArraySize is both an input and an output in C++: you pass the buffer size, and Steam writes the actual count back. luasteam returns it as an additional return value.

Example:

function Steam.Inventory.OnSteamInventoryResultReady(data)
    if data.m_result ~= Steam.k_EResultOK then return end
    local _, items = Steam.Inventory.GetResultItems(data.m_handle, 256)
    for _, item in ipairs(items) do
        print('Item:', item.m_iDefinition, 'Qty:', item.m_unQuantity)
    end
    Steam.Inventory.DestroyResult(data.m_handle)
end
Inventory.GetResultStatus(resultHandle)

πŸ€– Auto-generated binding

Parameters:

resultHandle (int - SteamInventoryResult_t) –

Returns:

(int - EResult) Return value

SteamWorks:

GetResultStatus

Example:

local status = Steam.Inventory.GetResultStatus(resultHandle)
if status == Steam.k_EResultOK then
    processInventoryResult(resultHandle)
end
Inventory.GetResultTimestamp(resultHandle)

πŸ€– Auto-generated binding

Parameters:

resultHandle (int - SteamInventoryResult_t) –

Returns:

(int) Return value

SteamWorks:

GetResultTimestamp

Inventory.GrantPromoItems()

πŸ€– Auto-generated binding

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

GrantPromoItems

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.InspectItem(pchItemToken)

πŸ€– Auto-generated binding

Parameters:

pchItemToken (str?) –

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

InspectItem

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.LoadItemDefinitions()

πŸ€– Auto-generated binding

Returns:

(bool) Return value

SteamWorks:

LoadItemDefinitions

Example:

-- Trigger loading of item definitions; wait for OnSteamInventoryDefinitionUpdate
Steam.Inventory.LoadItemDefinitions()
Inventory.RemoveProperty(handle, nItemID, pchPropertyName)

πŸ€– Auto-generated binding

Parameters:
  • handle (uint64 - SteamInventoryUpdateHandle_t) –

  • nItemID (uint64 - SteamItemInstanceID_t) –

  • pchPropertyName (str?) –

Returns:

(bool) Return value

SteamWorks:

RemoveProperty

Inventory.RequestEligiblePromoItemDefinitionsIDs(steamID, callback)

πŸ€– Auto-generated binding

Parameters:
Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

RequestEligiblePromoItemDefinitionsIDs

Inventory.RequestPrices(callback)

πŸ€– Auto-generated binding

Parameters:

callback (function) – CallResult callback receiving struct SteamInventoryRequestPricesResult_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

RequestPrices

Example:

Steam.Inventory.RequestPrices(function(data, err)
    if not err and data.m_result == Steam.k_EResultOK then
        local numItems = Steam.Inventory.GetNumItemsWithPrices()
        local ok, items, curPrices, basePrices = Steam.Inventory.GetItemsWithPrices(numItems)
        if ok then
            for i = 1, numItems do
                print('Item', items[i], 'prices', curPrices[i], basePrices[i])
            end
        end
    end
end)
Inventory.SendItemDropHeartbeat()

πŸ€– Auto-generated binding

SteamWorks:

SendItemDropHeartbeat

Inventory.SetPropertyBool(handle, nItemID, pchPropertyName, bValue)

πŸ€– Auto-generated binding

Parameters:
  • handle (uint64 - SteamInventoryUpdateHandle_t) –

  • nItemID (uint64 - SteamItemInstanceID_t) –

  • pchPropertyName (str?) –

  • bValue (bool) –

Returns:

(bool) Return value

SteamWorks:

SetProperty

Signature differences from C++ API:

  • In C++, this is an overloaded method called SetProperty. luasteam exposes each overload as a distinct function with a type suffix.

Inventory.SetPropertyFloat(handle, nItemID, pchPropertyName, flValue)

πŸ€– Auto-generated binding

Parameters:
  • handle (uint64 - SteamInventoryUpdateHandle_t) –

  • nItemID (uint64 - SteamItemInstanceID_t) –

  • pchPropertyName (str?) –

  • flValue (float) –

Returns:

(bool) Return value

SteamWorks:

SetProperty

Signature differences from C++ API:

  • In C++, this is an overloaded method called SetProperty. luasteam exposes each overload as a distinct function with a type suffix.

Inventory.SetPropertyInt64(handle, nItemID, pchPropertyName, nValue)

πŸ€– Auto-generated binding

Parameters:
  • handle (uint64 - SteamInventoryUpdateHandle_t) –

  • nItemID (uint64 - SteamItemInstanceID_t) –

  • pchPropertyName (str?) –

  • nValue (uint64) –

Returns:

(bool) Return value

SteamWorks:

SetProperty

Signature differences from C++ API:

  • In C++, this is an overloaded method called SetProperty. luasteam exposes each overload as a distinct function with a type suffix.

Inventory.SetPropertyString(handle, nItemID, pchPropertyName, pchPropertyValue)

πŸ€– Auto-generated binding

Parameters:
  • handle (uint64 - SteamInventoryUpdateHandle_t) –

  • nItemID (uint64 - SteamItemInstanceID_t) –

  • pchPropertyName (str?) –

  • pchPropertyValue (str?) –

Returns:

(bool) Return value

SteamWorks:

SetProperty

Signature differences from C++ API:

  • In C++, this is an overloaded method called SetProperty. luasteam exposes each overload as a distinct function with a type suffix.

Inventory.StartPurchase(pArrayItemDefs, punArrayQuantity, unArrayLength, callback)

πŸ€– Auto-generated binding

Parameters:
  • pArrayItemDefs (int[]?) –

  • punArrayQuantity (int[]?) –

  • unArrayLength (int) – size of the input arrays pArrayItemDefs and punArrayQuantity

  • callback (function) – CallResult callback receiving struct SteamInventoryStartPurchaseResult_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

StartPurchase

Example:

Steam.Inventory.StartPurchase({itemDefID}, {1}, 1, function(data, err)
    if not err and data.m_result == Steam.k_EResultOK then
        print('Purchase started, orderID:', tostring(data.m_ulOrderID))
    end
end)
Inventory.StartUpdateProperties()

πŸ€– Auto-generated binding

Returns:

(uint64 - SteamInventoryUpdateHandle_t) Return value

SteamWorks:

StartUpdateProperties

Inventory.SubmitUpdateProperties(handle)

πŸ€– Auto-generated binding

Parameters:

handle (uint64 - SteamInventoryUpdateHandle_t) –

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

SubmitUpdateProperties

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.TradeItems(steamIDTradePartner, pArrayGive, pArrayGiveQuantity, nArrayGiveLength, pArrayGet, pArrayGetQuantity, nArrayGetLength)

πŸ€– Auto-generated binding

Parameters:
  • steamIDTradePartner (uint64 - CSteamID) –

  • pArrayGive (uint64[]?) –

  • pArrayGiveQuantity (int[]?) –

  • nArrayGiveLength (int) – size of the input arrays pArrayGive and pArrayGiveQuantity

  • pArrayGet (uint64[]?) –

  • pArrayGetQuantity (int[]?) –

  • nArrayGetLength (int) – size of the input arrays pArrayGet and pArrayGetQuantity

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

TradeItems

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Inventory.TransferItemQuantity(itemIdSource, unQuantity, itemIdDest)

πŸ€– Auto-generated binding

Parameters:
  • itemIdSource (uint64 - SteamItemInstanceID_t) –

  • unQuantity (int) –

  • itemIdDest (uint64 - SteamItemInstanceID_t) –

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

TransferItemQuantity

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

-- Split a stack: move 5 units to a new stack
local ok, resultHandle = Steam.Inventory.TransferItemQuantity(sourceItemID, 5, 0)
Inventory.TriggerItemDrop(dropListDefinition)

πŸ€– Auto-generated binding

Parameters:

dropListDefinition (int - SteamItemDef_t) –

Returns:

(bool) Return value

Returns:

(int) pResultHandle

SteamWorks:

TriggerItemDrop

Signature differences from C++ API:

  • Parameter pResultHandle is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, resultHandle = Steam.Inventory.TriggerItemDrop(dropListDefinitionID)
-- Triggers a potential item drop for playtime rewards

Unimplemented Methods

Inventory.SerializeResult()

βœ‹ Not implemented - blocklist: Uses nullptr as input, we don’t support it

SteamWorks:

SerializeResult

Callbacks

Inventory.OnSteamInventoryResultReady()

Callback for SteamInventoryResultReady_t

callback(data) receives:

  • data.m_handle (int - SteamInventoryResult_t)

  • data.m_result (int - EResult)

Inventory.OnSteamInventoryFullUpdate()

Callback for SteamInventoryFullUpdate_t

callback(data) receives:

  • data.m_handle (int - SteamInventoryResult_t)

Inventory.OnSteamInventoryDefinitionUpdate()

Callback for SteamInventoryDefinitionUpdate_t

callback(data) receives no fields (notification only).

Example:

function Steam.Inventory.OnSteamInventoryDefinitionUpdate()
    print('Item definitions updated')
    local ids = Steam.Inventory.GetItemDefinitionIDs(256)
    print('Loaded', #ids, 'item definitions')
end
Inventory.OnSteamInventoryEligiblePromoItemDefIDs()

Callback for SteamInventoryEligiblePromoItemDefIDs_t

callback(data) receives:

  • data.m_result (int - EResult)

  • data.m_steamID (uint64 - CSteamID)

  • data.m_numEligiblePromoItemDefs (int)

  • data.m_bCachedData (bool)

Inventory.OnSteamInventoryStartPurchaseResult()

Callback for SteamInventoryStartPurchaseResult_t

callback(data) receives:

  • data.m_result (int - EResult)

  • data.m_ulOrderID (uint64)

  • data.m_ulTransID (uint64)

Inventory.OnSteamInventoryRequestPricesResult()

Callback for SteamInventoryRequestPricesResult_t

callback(data) receives:

  • data.m_result (int - EResult)

  • data.m_rgchCurrency (string)

Example:

function Steam.Inventory.OnSteamInventoryRequestPricesResult(data)
    if data.m_result == Steam.k_EResultOK then
        print('Currency:', data.m_rgchCurrency)
    end
end