Steamworks

Документация Steamworks
Интерфейс ISteamInventory

Актуальная версия доступна на английском языке

В английскую версию документа внесены изменения, которые пока не отражены в его текущем переводе.
Текст на английском языке.
Интерфейс управления инвентарём Steam.

Дополнительная информация доступна в разделе «Служба инвентаря Steam».

Функции-члены

Функции-члены ISteamInventory вызываются с помощью глобальной функции доступа SteamInventory().

AddPromoItem

bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
itemDefSteamItemDef_tОпределение предмета (ItemDef), который требуется передать игроку.

Выдаёт определённый одноразовый промопредмет текущему пользователю.

Этот вызов может быть отправлен из клиента, поскольку предоставляемые им предметы, можно заблокировать с помощью правил определений предметов. Одним из основных сценариев для этого вызова является выдача предмета пользователям, которые владеют конкретной другой игрой. Это может быть полезно, если в вашей игре есть особый интерфейс для показа определённого промопредмета пользователю. Если же вы хотите выдать несколько промопредметов, используйте ISteamInventory::AddPromoItems или ISteamInventory::GrantPromoItems.

Все предметы, которые могут быть выданы, ДОЛЖНЫ иметь атрибут promo в определении предмета. В нём должен быть список номеров приложений, которыми должен владеть пользователь для выдачи ему данного предмета. Эта версия выдаст все предметы, у которых есть атрибуты promo, указанные для них в определениях предметов. Это позволяет добавить дополнительные предметы без необходимости обновлять игровой клиент. К примеру, следующий код выдаст предмет, если пользователь владеет TF2 или SpaceWar.

promo: owns:440;owns:480

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

При успехе результат действий с инвентарём будет включать предметы, которые были выданы (если они выданы). Если предметы не выданы, поскольку пользователь не удовлетворяет требованиям, это всё равно считается успешным вызовом.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

Пример:
void CInventory::GrantPromoItems() { SteamInventory()->AddPromoItem( &s_GenerateRequestResult, 110 ); }

AddPromoItems

bool AddPromoItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
pArrayItemDefsconst SteamItemDef_t *Список предметов, выдаваемых пользователю.
unArrayLengthuint32Число предметов в pArrayItemDefs.

Выдаёт определённый одноразовый промопредмет текущему пользователю.

Этот вызов может быть отправлен из клиента, поскольку предоставляемые им предметы, можно заблокировать с помощью правил определений предметов. Одним из основных сценариев для этого вызова является выдача предмета пользователям, которые владеют конкретной другой игрой. Если вы хотите выдать один промопредмет, используйте ISteamInventory::AddPromoItem. Если вы хотите выдать все возможные промопредметы, используйте ISteamInventory::GrantPromoItems.

Все предметы, которые могут быть выданы, ДОЛЖНЫ иметь атрибут promo в определении предмета. В нём должен быть список номеров приложений, которыми должен владеть пользователь для выдачи ему данного предмета. Эта версия выдаст все предметы, у которых есть атрибуты promo, указанные для них в определениях предметов. Это позволяет добавить дополнительные предметы без необходимости обновлять игровой клиент. К примеру, следующий код выдаст предмет, если пользователь владеет TF2 или SpaceWar.

promo: owns:440;owns:480

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

При успехе результат действий с инвентарём будет включать предметы, которые были выданы (если они выданы). Если предметы не выданы, поскольку пользователь не удовлетворяет требованиям, это всё равно считается успешным вызовом.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

Пример:
void CInventory::GrantPromoItems() { SteamItemDef_t newItems[2]; newItems[0] = 110; newItems[1] = 111; SteamInventory()->AddPromoItems( &s_GenerateRequestResult, newItems, 2 ); }

CheckResultSteamID

bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected );
НазваниеТипОписание
resultHandleSteamInventoryResult_tДескриптор результата действий с инвентарём, для которого проверяется SteamID.
steamIDExpectedCSteamIDПроверяемый SteamID.

Проверяет, принадлежит ли дескриптор результата действий с инвентарём указанному SteamID.

Это важно при использовании ISteamInventory::DeserializeResult, поскольку позволяет удостовериться, что удалённый игрок не делает вид, что он владеет инвентарём другого пользователя.

Возвращаемые значения: bool
true, если результат принадлежит указанному SteamID, в противном случае false.

ConsumeItem

bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
itemConsumeSteamItemInstanceID_tID экземпляра потребляемого предмета.
unQuantityuint32Число потребляемых предметов в этом стеке.

Потребляет предметы из инвентаря пользователя. Если число данных предметов после этого действия будет равно нулю, предмет удаляется из инвентаря.

Как только предмет удалён, он не может быть восстановлен. Это не для слабонервных — если в вашей игре реализовано полное удаление предметов, рекомендуется иметь интерфейс подтверждения этого процесса.

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

См. также: ISteamInventory::ExchangeItems, ISteamInventory::TransferItemQuantity

Пример:
void CInventory::DrinkOnePotion( SteamItemInstanceID_t itemID ) { SteamInventory()->ConsumeItem( &s_ConsumeRequestResult, itemID, 1 ); }

DeserializeResult

bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false );
НазваниеТипОписание
pOutResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
pBufferconst void *Буфер, который требуется десериализовать.
unBufferSizeuint32Размер pBuffer.
bRESERVED_MUST_BE_FALSEboolОбязательно равняться false!

Десериализует набор результатов и подтверждает байты подписи.

У этого вызова есть режим потенциального мягкого сбоя, при котором состояние дескриптора задаётся как k_EResultExpired. В этом режиме ISteamInventory::GetResultItems будет успешным вызовом. Результат "expired" может означать, что данные могли устареть: не только по времени (1 час), но и потому, что один из предметов в наборе результатов мог быть обменян или потреблен с того времени, как был сгенерирован набор результатов. Вы можете сравнить временную метку из ISteamInventory::GetResultTimestamp с ISteamUtils::GetServerRealTime, чтобы определить, насколько устарели данные. Вы можете просто проигнорировать код результата "expired" и продолжить как обычно, либо запросить у игрока с устаревшими данными новый набор результатов.

Чтобы удостовериться, что удалённый игрок не делает вид, что он владеет инвентарём другого пользователя, вы должны вызвать ISteamInventory::CheckResultSteamID с дескриптором результата после его завершения.

ВНИМАНИЕ: параметр bRESERVED_MUST_BE_FALSE зарезервирован на будущее, его запрещено приравнивать к true.

Возвращает: bool
Всегда возвращает true после чего предоставляет коды ошибок в ISteamInventory::GetResultStatus.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

DestroyResult

void DestroyResult( SteamInventoryResult_t resultHandle );
НазваниеТипОписание
resultHandleSteamInventoryResult_tУничтожаемый дескриптор результата действий с инвентарём.

Уничтожает дескриптор результата и освобождает всю связанную память.

ExchangeItems

bool ExchangeItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayGenerate, const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t *pArrayDestroy, const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
pArrayGenerateconst SteamItemDef_t *Список предметов, которые будут созданы этим вызовом. На данный момент может быть только один предмет!
punArrayGenerateQuantityconst uint32 *Количество предметов, создаваемых в pArrayGenerate. На данный момент может быть только один предмет, должно быть приравнено к 1!
unArrayGenerateLengthuint32Число предметов в pArrayGenerate и punArrayGenerateQuantity. На данный момент должно быть приравнено к 1!
pArrayDestroyconst SteamItemInstanceID_t *Список предметов, которые будут уничтожены этим вызовом.
punArrayDestroyQuantityconst uint32 *Количество предметов, уничтожаемых в pArrayDestroy.
unArrayDestroyLengthuint32Число предметов в pArrayDestroy и punArrayDestroyQuantity.

Выдаёт один предмет в обмен на набор других предметов.

Используется, чтобы реализовать ковку предметов или превращения, либо предметы, при распаковке которых получаются другие предметы (к примеру, ящики).

Сторона, вызывающая этот API, передаёт зарегистрированный предмет и массив существующих предметов для обмена и их количества. API принимает массив генерируемых предметов, но пока что как размер этого массива, так и количество новых предметов должны быть равны единице.

Все предметы, которые могут быть выданы, ДОЛЖНЫ иметь атрибут exchange в определении предмета. Атрибут exchange определяет те наборы параметров, которые являются разрешёнными рецептами обмена для этого предмета. Рецепты обмена автоматически оцениваются службой инвентаря. Если предоставленные компоненты не соответствуют рецепту, или их не хватает, обмен не состоится.

Пример:
exchange: 101x1,102x1;103x5;104x3,105x3

Этот код позволит предмету быть обменянным на один предмет №101 и один №102, либо на пять предметов №105, либо на три предмета №104 и три №105. Дополнительная информация доступна в разделе «Схема инвентаря Steam».

Возвращает: bool
Эта функция возвращает true, что означает успешное выполнение, либо false если она была вызвана SteamGameServer или если unArrayGenerateLength или punArrayGenerateQuantity не приравнены к единице 1.

Если обмен не соответствует рецепту, либо компонентов недостаточно, он не будет выполнен.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

См. также: ISteamInventory::ConsumeItem, ISteamInventory::TransferItemQuantity

Пример:
// Найдём предмет с данным itemdef в инвентаре пользователя SteamItemInstanceID_t CInventory::GetItemIdFromInventory( SteamItemDef_t itemDefId ); void CInventory::Exchange() { SteamItemInstanceID_t inputItems[2]; uint32 inputQuantities[2]; inputItems[0] = GetItemIdFromInventory( 103 ); inputQuantities[0] = 3; inputItems[1] = GetItemIdFromInventory( 104 ); inputQuantities[1] = 3; SteamItemDef_t outputItems[1]; outputItems[0] = 100; uint32 outputQuantity[1]; outputQuantity[0] = 1; SteamInventory()->ExchangeItems( &s_ExchangeRequestResult, outputItems, outputQuantity, 1, inputItems, inputQuantities, 2 ); }

GenerateItems

bool GenerateItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
pArrayItemDefsconst SteamItemDef_t *Список предметов, выдаваемых пользователю.
punArrayQuantityconst uint32 *Количество каждого выдаваемого предмета в pArrayItemDefs. Этот параметр необязателен, укажите NULL, чтобы передать единицу каждого предмета.
unArrayLengthuint32Число предметов в pArrayItemDefs.

Выдаёт конкретные предметы текущему пользователю, только для разработчиков.

Этот интерфейс предназначен только для прототипирования: его могут использовать только те аккаунты Steam, которые входят в издательскую группы вашей игры.

Вы можете передать массив предметов, идентифицированных с помощью SteamItemDef_t, а также, при желании, второй массив с количеством для каждого предмета. Длина массивов должна совпадать.

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

Пример:
void CInventory::GrantTestItems() { SteamItemDef_t newItems[2]; uint32 quantities[2]; newItems[0] = 110; newItems[1] = 111; quantities[0] = 1; quantities[1] = 1; SteamInventory()->GenerateItems( &s_GenerateRequestResult, newItems, quantities, 2 ); }

GetAllItems

bool GetAllItems( SteamInventoryResult_t *pResultHandle );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.

Начинает получение всех предметов в инвентаре текущего пользователя.

ВНИМАНИЕ: число вызовов данной функции может быть ограничено. Если она будет вызываться слишком часто, она может возвращать кэшированные результаты. Рекомендуется вызывать эту функцию, только если вы хотите показать весь инвентарь пользователя, либо если вы считаете, что инвентарь изменился.

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

К примеру:
void SpaceWarItem::LoadInventory( IGameEngine *pGameEngine ) { SteamInventory()->GetAllItems( &s_RequestResult ); }

GetEligiblePromoItemDefinitionIDs

bool GetEligiblePromoItemDefinitionIDs( CSteamID steamID, SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
НазваниеТипОписание
steamIDCSteamIDSteamID пользователя, для которого предназначены эти предметы. Должно совпадать с SteamInventoryEligiblePromoItemDefIDs_t.m_steamID.
pItemDefIDsSteamItemDef_t *Возвращает номера определений предметов, копируя их в этот массив.
punItemDefIDsArraySizeuint32 *Должно быть той же длины, что и pItemDefIDs, и совпадать с SteamInventoryEligiblePromoItemDefIDs_t.m_numEligiblePromoItemDefs.

Получает список предметов, которые могут быть выданы пользователю.

Для получения номеров определений вы должны выполнить этот вызов при обработке результата вызова SteamInventoryEligiblePromoItemDefIDs_t.

Возвращает: bool


См. также: ISteamInventory::AddPromoItem, ISteamInventory::AddPromoItems

GetItemDefinitionIDs

bool GetItemDefinitionIDs( SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
НазваниеТипОписание
pItemDefIDsSteamItemDef_t *Возвращает определения предметов, копируя их в этот массив.
punItemDefIDsArraySizeuint32 *Должно быть приравнено к длине pItemDefIDs. Если pItemDefIDs будет равно NULL, вернёт число элементов, которое должно содержаться в массиве.

Возвращает набор всех номеров определений предметов, которые определены на панели управления партнёрского сайта.

Эти номера не обязательно являются последовательными.

Этот вызов выполняется в ответ на обратный вызов SteamInventoryDefinitionUpdate_t. Нет необходимости выполнять этот вызов, если номера определений жёстко закодированы в игре (к примеру, фиолетовая маска = 20, синяя модификация оружия = 55), и она не позволяет добавлять новые типы предметов без обновлений клиента.

Возвращает: bool
Возвращает true, если вызов успешен. Возвращает false, только если определения предметов не были загружены с сервера, либо для текущего приложения нет определений предметов.

Если вызов успешен, punItemDefIDsArraySize будет содержать число доступных определений предметов.

GetItemDefinitionProperty

bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
НазваниеТипОписание
iDefinitionSteamItemDef_tОпределение предмета, для которого требуется получить свойства.
pchPropertyNameconst char *Название свойства, для которого требуется получить значение. Если передать NULL, pchValueBuffer будет содержать список всех доступных названий свойств (разделитель — запятая).
pchValueBufferchar *Возвращает значение, связанное с pchPropertyName.
punValueBufferSizeOutuint32 *Это должно быть приравнено к размеру pchValueBuffer. Возвращает число байтов, необходимое для хранения значения.

Получает строковое свойство из указанного определения предмета.
Получает значение свойства для указанного определения предмета.

Обратите внимание, что некоторые свойства (к примеру, "name") могут быть локализованы, и зависят от текущих языковых настроек (см. ISteamApps::GetCurrentGameLanguage). Названия свойств всегда буквенно-цифровые (могут содержать знак _) и возвращаются в формате ASCII.

Передайте NULL в pchPropertyName, чтобы получить список всех доступных названий свойств (разделитель — запятая). В этом случае punValueBufferSizeOut будет содержать предлагаемый размер буфера. В противном случае он будет равен числу байтов, скопированных в pchValueBuffer.

Возвращает: bool
Возвращает true, если вызов успешен. В противном случае false, что означает, что определения предметов не были загружены с сервера, либо для текущего приложения нет определений предметов, либо название свойства не найдено в определении предмета.

Связанное значение возвращается с помощью pchValueBuffer, а общее число байтов, необходимых для хранения значения доступно в punValueBufferSizeOut. Рекомендуется вызывать эту функцию дважды, первый раз с pchValueBuffer, приравненным к NULL и punValueBufferSizeOut равным нулю, чтобы получить требуемый для буфера размер для последующего вызова.

Вывод будет выглядеть примерно так:
pchPropertyName приравнено к NULL:
appid,itemdefid,Timestamp и т. д.
pchPropertyName приравнено к "name":
SW_DECORATION_HAT

ВНИМАНИЕ: сначала вызовите ISteamInventory::LoadItemDefinitions, чтобы убедиться, что предметы готовы к использованию, прежде чем вызывать GetItemDefinitionProperty.

GetItemsByID

bool GetItemsByID( SteamInventoryResult_t *pResultHandle, const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
pInstanceIDsconst SteamItemInstanceID_t *Список номеров экземпляров предметов, состояние которых требует обновить.
unCountInstanceIDsuint32Число предметов в pInstanceIDs.

Получает состояние подмножества инвентаря текущего пользователя.

Подмножество задаётся массивом номеров экземпляров предметов.

Результаты этого вызова могут быть сериализованы с помощью ISteamInventory::SerializeResult и переданы другим игрокам, чтобы «доказать», что текущий пользователь владеет указанными предметами без необходимости показывать весь инвентарь пользователя. К примеру, вы можете отправить этот вызов с номерами предметов, которыми сейчас снаряжён игрок, сериализовать результат в буфер, а затем передать этот буфер другим игрокам при присоединении к игре.

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

Возвращает дескриптор нового результата с помощью pResultHandle.

ВНИМАНИЕ: обязательно вызвать ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.

GetItemPrice

bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pPrice );
НазваниеТипОписание
iDefinitionSteamItemDef_tID определения предмета, для которого необходимо получить цену
pPriceuint64*Указатель цены для заполнения. Цены указаны в местной валюте пользователя.

После успешного вызова ISteamInventory::RequestPrices можно вызвать этот метод, чтобы получить информацию о цене для конкретного определения предмета.

Возвращает: bool
true при успехе, что означает, что параметр pPrice заполнен данными о цене предоставленного ID определения предмета.
false, если параметры недействительны или отсутствует цена ID определения предмета.

См. также: ISteamInventory::RequestPrices

GetItemsWithPrices

bool GetItemsWithPrices( SteamItemDef_t *pArrayItemDefs, uint64 *pPrices, uint32 unArrayLength );
НазваниеТипОписание
pArrayItemDefsSteamItemDef_t *Массив номеров определений предмета для заполнения
pPricesuint64*Массив цен для каждого соответствующего номера определений предметов в pArrayItemDefs. Цены указаны в местной валюте пользователя.
unArrayLengthuint32Должно быть той же длины, что и массивы pArrayItemDefs и pPrices, полученных в результате вызова ISteamInventory::GetNumItemsWithPrices .

После успешного вызова ISteamInventory::RequestPrices можно вызвать этот метод, чтобы получить информацию обо всех ценах для подходящих определений предметов. Используйте результат ISteamInventory::GetNumItemsWithPrices в качестве размера передаваемых массивов.

Возвращаемые значения: bool
true в случае успешного вызова, что означает, что pArrayItemDefs и pPrices были заполнены номерами определений предметов и ценами предметов на продажу.
false, если параметры недействительны.

См. также: ISteamInventory::RequestPrices, ISteamInventory::GetItemPrice

GetNumItemsWithPrices

uint32 GetNumItemsWithPrices();
После успешного вызова ISteamInventory::RequestPrices возвратится число определений предметов с верными ценами.

Возвращаемые значения: uint32

См. также: ISteamInventory::RequestPrices, ISteamInventory::GetItemsWithPrices

GetResultItemProperty

bool GetResultItemProperty( SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
НазваниеТипОписание
resultHandleSteamInventoryResult_tДескриптор результата, содержащий предмет, для которого требуется получить свойства.
unItemIndexuint32
pchPropertyNameconst char *Название свойства, для которого требуется получить значение. Если передать NULL, pchValueBuffer будет содержать список всех доступных названий свойств (разделитель — запятая).
pchValueBufferchar *Возвращает значение, связанное с pchPropertyName.
punValueBufferSizeOutuint32 *Это должно быть приравнено к размеру pchValueBuffer. Возвращает число байтов, необходимое для хранения значения.

Получает динамические свойства предмета в наборе результатов действий с инвентарём.

Названия свойств всегда буквенно-цифровые (могут содержать знак _) и возвращаются в формате ASCII.

Если результаты не помещаются в предоставленный буфер, они могут быть скопированы частично.

Возвращаемые значения: bool
Возвращает true при успешном вызове. В противном случае false, если дескриптор результата действий с инвентарём недействителен или предоставленный index не содержит предмет.

GetResultItems

bool GetResultItems( SteamInventoryResult_t resultHandle, SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize );
НазваниеТипОписание
resultHandleSteamInventoryResult_tДескриптор результата действий с инвентарём, для которого требуется получить предметы.
pOutItemsArraySteamItemDetails_t *Информация копируется в этот массив.
punOutItemsArraySizeuint32 *Должно быть приравнено к длине pOutItemsArray. Если pOutItemsArray будет равно NULL, вернёт число элементов, которое должно содержаться в массиве.

Получает предметы, связанные с дескриптором результата действий с инвентарём.

Возвращаемые значения: bool
true, если вызов успешен, в противном случае false.
Возможные причины сбоев:
  • resultHandle оказался недействительным, либо дескриптор результата действий с инвентарём оказался не готов.
  • Массив не уместился в pOutItemsArray.
  • У пользователя нет предметов.

Если вызов успешен, punItemDefIDsArraySize будет содержать число доступных определений предметов.

К примеру:
bool bGotResult = false; std::vector<SteamItemDetails_t> vecDetails; uint32 count = 0; if ( SteamInventory()->GetResultItems( callback->m_handle, NULL, &count ) ) { vecDetails.resize( count ); bGotResult = SteamInventory()->GetResultItems( callback->m_handle, vecDetails.data(), &count ); }

GetResultStatus

EResult GetResultStatus( SteamInventoryResult_t resultHandle );
НазваниеТипОписание
resultHandleSteamInventoryResult_tДескриптор результата действий с инвентарём, для которого требуется получить состояние.

Получает состояние асинхронного дескриптора результата действий с инвентарём.

Это опрос, эквивалентный регистрации функции для обратного вызова SteamInventoryResultReady_t.

Возвращаемые значения: EResult
Возвращает информацию о том, был ли вызов успешен.

Возможные значения:
  • k_EResultPending. Всё ещё в процессе.
  • k_EResultOK. Выполнено, запрос успешно завершён, результат готов.
  • k_EResultExpired. Выполнено, результат готов, может быть устаревшим (см. DeserializeResult).
  • k_EResultInvalidParam. ОШИБКА: недействительные параметры вызова API.
  • k_EResultServiceUnavailable. ОШИБКА: служба временно недоступна, вы можете попробовать снова позже.
  • k_EResultLimitExceeded. ОШИБКА: выполнение операции привело бы к превышению пользовательского лимита на инвентарь.
  • k_EResultFail. ОШИБКА: ошибка общего характера.

К примеру:
void SpaceWarItem::CheckInventory( IGameEngine *pGameEngine ) { if ( s_RequestResult != 0 ) { EResult result = SteamInventory()->GetResultStatus( s_RequestResult ); if ( result == k_EResultOK ) { // Делаем что-то здесь } } }

GetResultTimestamp

uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle );
НазваниеТипОписание
resultHandleSteamInventoryResult_tДескриптор результата действий с инвентарём, для которого требуется получить метку времени.

Получает серверное время, когда был сгенерирован результат.

Возвращаемые значения: uint32
Метка возвращается в формате UNIX-времени (число секунд с 1 января 1970 года).

Это значение можно сравнить с ISteamUtils::GetServerRealTime, чтобы определить возраст результата.

GrantPromoItems

bool GrantPromoItems( SteamInventoryResult_t *pResultHandle );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.

Выдаёт все возможные одноразовые промопредметы текущему пользователю.

Этот вызов может быть отправлен из клиента, поскольку предоставляемые им предметы, можно заблокировать с помощью правил определений предметов. Одним из основных сценариев для этого вызова является выдача предмета пользователям, которые владеют конкретной другой игрой. Если вы хотите выдать определённые промопредметы (а не все), см. ISteamInventory::AddPromoItem и ISteamInventory::AddPromoItems.

Все предметы, которые могут быть выданы, ДОЛЖНЫ иметь атрибут promo в определении предмета. В нём должен быть список номеров приложений (AppID), которыми должен владеть пользователь для выдачи ему данного предмета. Эта версия выдаст все предметы, у которых есть атрибуты promo, указанные для них в определениях предметов. Это позволяет добавить дополнительные промопредметы без необходимости обновлять игровой клиент. К примеру, следующий код выдаст предмет, если пользователь владеет TF2 или SpaceWar.

promo: owns:440;owns:480

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

При успехе результат действий с инвентарём будет включать предметы, которые были выданы (если они выданы). Если предметы не выданы, поскольку пользователь не удовлетворяет требованиям, это всё равно считается успешным вызовом.

Возвращает новый дескриптор результата с помощью pResultHandle.

ВНИМАНИЕ: необходимо вызвать ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.

Пример:
void CInventory::GrantPromoItems() { SteamInventory()->GrantPromoItems( &s_GenerateRequestResult ); }

LoadItemDefinitions

bool LoadItemDefinitions();
Активирует асинхронную загрузку и обновление определений предметов.

Определения предметов представляют собой сопоставление нескольких definition ID (целые числа между 1 и 999999999) и набором строковых свойств. Некоторые из свойств требуются, чтобы отображать предметы на сайте сообщества Steam. Другие свойства могут быть определены приложениями. Нет необходимости выполнять этот вызов, если номера определений (definition ID) жёстко закодированы в игре (к примеру, фиолетовая маска = 20, синяя модификация оружия = 55) и невозможно добавить новые типы предметов без обновлений клиента.

Возвращает: bool
Активирует обратный вызов SteamInventoryDefinitionUpdate_t.
Этот вызов всегда возвращает true.

RequestEligiblePromoItemDefinitionsIDs

SteamAPICall_t RequestEligiblePromoItemDefinitionsIDs( CSteamID steamID );
НазваниеТипОписание
steamIDCSteamIDSteamID пользователя, для которого запрашиваются подходящие промопредметы.

Запрашивает список «подходящих» промопредметов, которые могут быть вручную выданы данному пользователю.

Это промопредметы типа manual: они не выдаются автоматически. Пример использования: предмет, который становится доступным каждую неделю.

После вызова этой функции необходимо вызвать ISteamInventory::GetEligiblePromoItemDefinitionIDs для получения текущих номеров определений предметов (definition ID).

Возвращает: SteamAPICall_t, который необходимо использовать с результатом вызова SteamInventoryEligiblePromoItemDefIDs_t.
Возвращает k_uAPICallInvalid, если steamID не является действительным индивидуальным аккаунтом.

RequestPrices

SteamAPICall_t RequestPrices();

Запрашивает цены для всех определений предметов, которые можно приобрести в местной валюте пользователя. Результат вызова SteamInventoryRequestPricesResult_t будет возвращён с кодом местной валюты пользователя. После этого можно вызвать ISteamInventory::GetNumItemsWithPrices и ISteamInventory::GetItemsWithPrices, чтобы получить информацию о ценах для всех известных определений предметов, или ISteamInventory::GetItemPrice для конкретного определения предмета.

Возвращает: SteamAPICall_t, который необходимо использовать с результатом вызова SteamInventoryRequestPricesResult_t.
Возвращает k_uAPICallInvalid, если возникла внутренняя проблема.

См. также: ISteamInventory::GetNumItemsWithPrices, ISteamInventory::GetItemsWithPrices, ISteamInventory::GetItemPrice

SendItemDropHeartbeat

void SendItemDropHeartbeat();
Функция устарела.

SerializeResult

bool SerializeResult( SteamInventoryResult_t resultHandle, void *pOutBuffer, uint32 *punOutBufferSize );
НазваниеТипОписание
resultHandleSteamInventoryResult_tСериализуемый дескриптор результата действий с инвентарём.
pOutBuffervoid *Буфер, в который копируется сериализуемый результат.
punOutBufferSizeuint32 *Должно быть того же размера, что и pOutBuffer. Если pOutBuffer равно NULL, вернёт размер, необходимый для хранения массива.

Наборы сериализованных результатов содержат короткую подпись, которая не может быть подделана или использована в нескольких игровых сессиях.

Набор результатов может быть сериализован на локальном клиенте, а затем передан другим игрокам по сети и десериализован удалёнными игроками. Это безопасный способ помешать хакерам, которые могут лгать о владении редкими или дорогими предметами. Сериализует набор результатов и отправляет байты подписи в буфер вывода. Размер сериализованного результата зависит от числа сериализуемых предметов. При безопасной передаче предметов другим игрокам рекомендуется сначала использовать ISteamInventory::GetItemsByID для создания минимального набора результатов.

У результатов есть встроенная временная метка, которая будет иметь атрибут expired через час. См. ISteamInventory::DeserializeResult для дополнительной информации об обработке устаревших результатов.

Если для pOutBuffer установить значение NULL, тогда punOutBufferSize будет приравнен к необходимому размеру буфера. Так что вы можете создать буфер и затем заново выполнить этот вызов, чтобы заполнить буфер данными.

Возвращает: bool
true в случае успешного вызова, что означает, что в punOutBufferSize добавлен размер буфера, и если pOutBuffer указывает на буфер достаточного размера, он также заполняется.
false при следующих условиях:
  • Эта функция вызвана не обычным пользователем. Этот вызов не поддерживается на игровых серверах.
  • resultHandle оказался недействительным, либо дескриптор результата действий с инвентарём оказался не готов.
  • Значение, переданное punOutBufferSize было ниже, чем ожидаемое, а pOutBuffer не равнялся NULL.

StartPurchase

SteamAPICall_t StartPurchase( const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );
НазваниеТипОписание
pArrayItemDefsSteamItemDef_t *Массив номеров определений предмета, которые желает приобрести пользователь.
punArrayQuantityuint32 *Массив количеств каждого определения предмета, которые желает приобрести пользователь.
unArrayLengthuint32Должно быть той же длины, что и массивы pArrayItemDefs и punArrayQuantity.

Инициирует процесс покупки для пользователя при наличии «корзины» определений предметов, которые он желает приобрести. Пользователю будет предоставлен интерфейс завершения покупки в оверлее (в том числе, при необходимости, пополнения кошелька Steam и т. д.) в местной валюте.

Если процесс покупки успешно начался, m_ulOrderID и m_ulTransID
будут действительными в результате вызова SteamInventoryStartPurchaseResult_t.

Если пользователь авторизует транзакцию и завершает покупку, будет активирован обратный вызов SteamInventoryResultReady_t, а вы сможете получить информацию о том, какие новые предметы приобрёл пользователь. Обратите внимание: обязательно вызвать ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.

Возвращаемые значения: SteamAPICall_t, который необходимо использовать с результатом вызова SteamInventoryStartPurchaseResult_t.
Возвращает k_uAPICallInvalid, если входные данные недействительны.
Тестирование во время разработки: при тестировании StartPurchase до выпуска приложения все операции, совершённые участниками разработки или издателями, в системе будут проводиться через API микротранзакций экспериментальной среды (sandbox). Это означает, что с вас не будут списаны средства за покупки, совершённые до выпуска приложения, если вы являетесь издателем Steamworks.

TransferItemQuantity

bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
itemIdSourceSteamItemInstanceID_tИсходный предмет, который требуется передать.
unQuantityuint32Количество предмета, которое будет передано от itemIdSource к itemIdDest.
itemIdDestSteamItemInstanceID_tКонечный предмет. Вы можете передать k_SteamItemInstanceIDInvalid, чтобы разделить исходный стек, получив новый стек с запрошенным количеством.

Передаёт предметы между стеками в инвентаре пользователя.

Используется для сбора, разделения и перемещения предметов. У itemIdSource и itemIdDest должен быть один и тот же номер определения предмета (itemdef id). Чтобы переместить предметы в конечный стек, укажите исходный стек, количество предметов и номер конечного предмета. Чтобы разделить существующий стек, передайте k_SteamItemInstanceIDInvalid в itemIdDest. Новый стек предметов будет создан с запрошенным количеством.

ВНИМАНИЕ: ограничения на обмен или продажу копируются с передаваемыми предметами. Конечный стек получает последние данные о датах разрешений на обмен или продажу любых предметов в наборе.

Возвращаемые значения: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

Возвращает новый дескриптор результата с помощью pResultHandle.

ВНИМАНИЕ: необходимо вызвать ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.

См. также: ISteamInventory::ConsumeItem, ISteamInventory::ExchangeItems

К примеру:
void CInventory::CombineItems() { SteamInventoryResult_t transferResult; // отделяем 2 предмета из текущего стека SteamItemInstanceID_t bigStack = GetItemIdFromInventory( ... ); SteamInventory()->TransferItemQuantity( &transferResult, bigStack, 1, k_SteamItemInstanceIDInvalid ); // перемещаем 2 предмета из стека A в стек B SteamItemInstanceID_t originStack = GetItemIdFromInventory( ... ); SteamItemInstanceID_t destStack = GetItemIdFromInventory( ... ); SteamInventory()->TransferItemQuantity( &transferResult, originStack, 2, destStack ); }

TriggerItemDrop

bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition );
НазваниеТипОписание
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.
dropListDefinitionSteamItemDef_tЭтот параметр должен отсылать к предмету типа "playtimegenerator". Дополнительная информация доступна в разделе «Схема инвентаря Steam».

Активирует выдачу предмета, если пользователь играл достаточно долго.

Необходимый для выдачи интервал времени может быть задан в двух местах:
  • На уровне приложения в службе инвентаря: выдача предметов за время в игре. Эта настройка автоматически применяется ко всем предметам типа "playtimegenerator", для которых не указаны другие, более приоритетные значения.
  • На уровне конкретного определения "playtimegenerator". Эта настройка будет иметь приоритет над значением, заданном на уровне приложения.

Можно создавать только предметы, помеченные как playtimegenerator.

Обычно эта функция вызывается в конце игры, уровня или матча, либо в какой-то другой значимый для игры момент, в который может происходить выдача предмета. Настройки playtimegenerator выставляются в минутах, поэтому вызов этой функции с большей частотой бесполезен и будет ограничиваться в клиенте Steam. Чтобы предотвратить слишком частые выдачи, учёт игрового времени ведут серверы Steam. Серверы также управляют добавлением предмета в инвентарь игрока.

Возвращает: bool
Эта функция всегда возвращает true, если вызывается обычным пользователем, и false, если вызывается SteamGameServer.

Возвращает новый дескриптор результата с помощью pResultHandle.

ВНИМАНИЕ: необходимо вызвать ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.

Результат действий с инвентарём, возвращаемый данной функцией, представляет собой новый выданный предмет, если игрок имеет на него право. Если пользователь не имеет права, будет возвращён пустой результат ('[]').

Пример:
void CInventory::FinishGame() { SteamInventory()->TriggerItemDrop( &s_PlaytimeRequestResult, 10 ); }

StartUpdateProperties

SteamInventoryUpdateHandle_t StartUpdateProperties();

Инициирует запрос транзакции для обновления динамических свойств предметов для текущего пользователя. Этот вызов ограничен пользователем, поэтому изменения свойств должны быть собраны вместе и совершены в конце карты или игровой сессии. После вызова ISteamInventory::SetProperty или ISteamInventory::RemoveProperty для всех предметов, которые вы хотите изменить, вам понадобится вызвать ISteamInventory::SubmitUpdateProperties, чтобы отправить запрос серверам Steam. Обратный вызов SteamInventoryResultReady_t будет сделан с результатами операции.

К примеру:
void CInventory::FinishLevel() { SteamInventoryUpdateHandle_t updateHandle = SteamInventory()->StartUpdateProperties(); for ( SteamItemInstanceID_t itemid : m_vecItemIDs ) { SteamInventory()->SetProperty( updateHandle, itemid, "string_value", "blah" ); SteamInventory()->SetProperty( updateHandle, itemid, "bool_value", true ); SteamInventory()->SetProperty( updateHandle, itemid, "int64_value", (int64)55 ); SteamInventory()->SetProperty( updateHandle, itemid, "float_value", 123.456f ); } SteamInventoryResult_t resultHandle; SteamInventory()->SubmitUpdateProperties( updateHandle, &resultHandle ); }

ВНИМАНИЕ: необходимо вызвать ISteamInventory::DestroyResult в отношении полученного результата для ISteamInventory::SubmitUpdateProperties, когда вы закончили действия с ним.

Возвращает: SteamInventoryUpdateHandle_t

См. также: ISteamInventory::SetProperty, ISteamInventory::RemoveProperty, ISteamInventory::SubmitUpdateProperties

SubmitUpdateProperties

bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle );
НазваниеТипОписание
handleSteamInventoryUpdateHandle_tДескриптор обновления, относящийся к запросу транзакции, возвращённому ISteamInventory::StartUpdateProperties.
pResultHandleSteamInventoryResult_t *Возвращает дескриптор нового результата действий с инвентарём.

Отправляет запрос транзакции для изменения динамических свойств предметов для текущего пользователя. См. ISteamInventory::StartUpdateProperties.

ВНИМАНИЕ: необходимо вызвать ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.

Возвращает: bool

См. также: ISteamInventory::StartUpdateProperties, ISteamInventory::SetProperty, ISteamInventory::RemoveProperty

RemoveProperty

bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName );
НазваниеТипОписание
handleSteamInventoryUpdateHandle_tДескриптор обновления, относящийся к запросу транзакции, возвращённому ISteamInventory::StartUpdateProperties.
nItemIDSteamItemInstanceID_tИзменяет номер предмета.
pchPropertyNameconst char*Удаляет динамическое свойство предмета.

Удаляет динамическое свойство заданного предмета.

Возвращает: bool

См. также: ISteamInventory::StartUpdateProperties, ISteamInventory::SetProperty, ISteamInventory::SubmitUpdateProperties

SetProperty

bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, const char *pchPropertyValue ); bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, bool bValue ); bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, int64 nValue ); bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, float flValue );
НазваниеТипОписание
handleSteamInventoryUpdateHandle_tДескриптор обновления, относящийся к запросу транзакции, возвращённому ISteamInventory::StartUpdateProperties.
nItemIDSteamItemInstanceID_tИзменяет номер предмета.
pchPropertyNameconst char*Добавляет или обновляет динамическое свойство предмета.
pchPropertyValueconst char*Задаёт значение строки.
bValueboolЗадаёт булево значение.
nValueint64Задаёт значение 64-битного целого числа.
flValuefloatЗадаёт значение числа с плавающей точкой.

Назначает динамическое свойство заданного предмета. Типы поддерживаемых значений: строки, булевы значения, 64-битные целые числа и 32-битные числа с плавающей запятой.

Возвращает: bool

См. также: ISteamInventory::StartUpdateProperties, ISteamInventory::RemoveProperty, ISteamInventory::SubmitUpdateProperties

Обратные вызовы

Далее приведён список обратных вызовов, которые могут быть получены при вызове SteamAPI_RunCallbacks. Многие из них могут быть получены сразу в ответ на функции-члены ISteamInventory.

SteamInventoryDefinitionUpdate_t

Этот обратный вызов активируется всякий раз, когда обновляются определения предметов: либо в ответ на ISteamInventory::LoadItemDefinitions, либо когда стали доступны новые определения предметов (к примеру, с помощью динамического добавления новых типов предметов, пока игроки всё ещё в игре).

У данного обратного вызова отсутствуют поля.

Связанные функции: ISteamInventory::LoadItemDefinitions

SteamInventoryEligiblePromoItemDefIDs_t

Возвращается, когда вы запросили список «подходящих» промопредметов, которые могут быть вручную выданы данному пользователю. Это промопредметы типа manual: они не выдаются автоматически. Пример использования — предмет, который становится доступным каждую неделю.

НазваниеТипОписание
m_resultEResultk_EResultOK при успехе. Любое другое значение означает сбой.
m_steamIDCSteamIDSteamID пользователя, для которого предназначены эти предметы.
m_numEligiblePromoItemDefsintЧисло подходящих промопредметов, которые могут быть выданы этому пользователю. Вы должны создать буфер SteamItemDef_t, и использовать его в ISteamInventory::GetEligiblePromoItemDefinitionIDs для получения определений предметов.
m_bCachedDataboolОзначает, что данные получены из кэша, а не с сервера. Это происходит, если пользователь не залогинен, либо не удаётся соединиться с серверами Steam по какой-то другой причине.

Связанные функции: ISteamInventory::RequestEligiblePromoItemDefinitionsIDs

SteamInventoryFullUpdate_t

Активируется, когда GetAllItems возвращает результат, который новее предыдущего известного результата. (Не сработает, если инвентарь не изменился или если во время выполнения будут аннулированы результаты двух пересекающихся вызовов и при этом о более раннем результате уже будет известно, что он устарел).
Обычный обратный вызов SteamInventoryResultReady_t всё равно будет отправлен сразу после этого. Это дополнительное уведомление для вашего удобства.

НазваниеТипОписание
m_handleSteamInventoryResult_tНовый дескриптор результата действий с инвентарём.

SteamInventoryResultReady_t

Активируется, когда результат действия с инвентарём переходит из состояния k_EResultPending в любое другое завершённое состояние. Полный список состояний см. здесь: ISteamInventory::GetResultStatus. Для каждого дескриптора будет активирован ровно один обратный вызов.

НазваниеТипОписание
m_handleSteamInventoryResult_tГотовый результат действия с инвентарём.
m_resultEResultНовое состояние дескриптора. Эквивалент вызова ISteamInventory::GetResultStatus.

SteamInventoryStartPurchaseResult_t

Возвращается после вызова ISteamInventory::StartPurchase.

НазваниеТипОписание
m_resultEResultk_EResultOK при успехе. Любое другое значение означает сбой.
m_ulOrderIDuint64Номер автоматически сгенерированного заказа для активированной покупки.
m_ulTransIDuint64Номер автоматически сгенерированной транзакции для активированной покупки.

SteamInventoryRequestPricesResult_t

Возвращается после вызова ISteamInventory::RequestPrices.

НазваниеТипОписание
m_resultEResultk_EResultOK при успехе. Любое другое значение означает сбой.
m_rgchCurrencycharСтрока указывает код местной валюты пользователя.

Структуры

Приведённые ниже структуры могут быть возвращены функциями ISteamInventory, а также эти функции могут с ними взаимодействовать.

SteamItemDetails_t



НазваниеТипОписание
m_itemIdSteamItemInstanceID_tГлобальный уникальный дескриптор экземпляра предмета.
m_iDefinitionSteamItemDef_tНомер определения данного предмета.
m_unQuantityuint16Текущее количество предмета.
m_unFlagsuint16Семейство флагов ESteamItemFlags с битовой маской.

Перечисления

Далее приведён список перечислений, которые определены для использования с ISteamInventory.

ESteamItemFlags

Это битовые флаги, заданные в SteamItemDetails_t.

НазваниеЗначениеОписание
k_ESteamItemNoTrade1 << 0Этот предмет заблокирован на этом аккаунте и не может быть обменян или отдан. Это флаг состояния предмета, который навсегда прикреплён к конкретному экземпляру предмета.
k_ESteamItemRemoved1 << 8Предмет уничтожен, обменян, устарел или иным образом стал недействительным. Этот флаг подтверждения действия, который устанавливается однажды, как часть результата.
k_ESteamItemConsumed1 << 9Количество экземпляров предмета уменьшено на 1 с помощью вызова ISteamInventory::ConsumeItem. Этот флаг подтверждения действия, который устанавливается однажды, как часть результата.

Typedefs

Далее приведён список объявлений typedef, которые определены для использования с ISteamInventory.

НазваниеБазовый типОписание
SteamInventoryResult_tint32Дескриптор асинхронного результата действий с инвентарём.
SteamItemDef_tint32Типы предметов в игре идентифицируются 32-битным номером определения предмета.
Номера определений могут располагаться в диапазоне между 1 и 999999999. Номера, равные или меньшие, чем ноль, являются недействительными. Номера, равные или превышающие миллиард (1x10^9), зарезервированы для внутреннего употребления в Steam.
SteamItemInstanceID_tuint64У каждого экземпляра предмета есть глобальный уникальный ID экземпляра.
Этот ID уникален как комбинация идентификаторов игрока и экземпляра конкретного предмета, он не переносится другим игрокам и не используется для других предметов.
SteamInventoryUpdateHandle_tuint64Возвращается в результате вызова функции ISteamInventory::StartUpdateProperties, которая инициирует запрос транзакции для изменения динамических свойств предметов для текущего пользователя.

Константы

Далее приведён список констант, которые определены для использования с ISteamInventory.

НазваниеТипЗначениеОписание
k_SteamInventoryResultInvalidSteamInventoryResult_t-1Недействительный дескриптор результата действий с инвентарём.
k_SteamItemInstanceIDInvalidSteamItemInstanceID_t(SteamItemInstanceID_t)~0Недействительный ID экземпляра предмета. Обычно возвращается, когда при выполнении операции произошёл сбой. Рекомендуется инициализировать все новые экземпляры предметов с этим значением.
STEAMINVENTORY_INTERFACE_VERSIONconst char *"STEAMINVENTORY_INTERFACE_V002"