Интерфейс управления инвентарём Steam.
Дополнительная информация доступна в разделе «
Служба инвентаря Steam».
Функции-члены
Функции-члены
ISteamInventory
вызываются с помощью глобальной функции доступа
SteamInventory()
.
AddPromoItem
bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
itemDef | SteamItemDef_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 );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
pArrayItemDefs | const SteamItemDef_t * | Список предметов, выдаваемых пользователю. |
unArrayLength | uint32 | Число предметов в 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 );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_t | Дескриптор результата действий с инвентарём, для которого проверяется SteamID. |
steamIDExpected | CSteamID | Проверяемый SteamID. |
Проверяет, принадлежит ли дескриптор результата действий с инвентарём указанному SteamID.
Это важно при использовании
ISteamInventory::DeserializeResult, поскольку позволяет удостовериться, что удалённый игрок не делает вид, что он владеет инвентарём другого пользователя.
Возвращаемые значения: bool
true, если результат принадлежит указанному SteamID, в противном случае
false.
ConsumeItem
bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
itemConsume | SteamItemInstanceID_t | ID экземпляра потребляемого предмета. |
unQuantity | uint32 | Число потребляемых предметов в этом стеке. |
Потребляет предметы из инвентаря пользователя. Если число данных предметов после этого действия будет равно нулю, предмет удаляется из инвентаря.
Как только предмет удалён, он не может быть восстановлен. Это не для слабонервных — если в вашей игре реализовано полное удаление предметов, рекомендуется иметь интерфейс подтверждения этого процесса.
Возвращает: 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 );
Название | Тип | Описание |
pOutResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
pBuffer | const void * | Буфер, который требуется десериализовать. |
unBufferSize | uint32 | Размер pBuffer . |
bRESERVED_MUST_BE_FALSE | bool | Обязательно равняться 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 );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_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 );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
pArrayGenerate | const SteamItemDef_t * | Список предметов, которые будут созданы этим вызовом. На данный момент может быть только один предмет! |
punArrayGenerateQuantity | const uint32 * | Количество предметов, создаваемых в pArrayGenerate . На данный момент может быть только один предмет, должно быть приравнено к 1! |
unArrayGenerateLength | uint32 | Число предметов в pArrayGenerate и punArrayGenerateQuantity . На данный момент должно быть приравнено к 1! |
pArrayDestroy | const SteamItemInstanceID_t * | Список предметов, которые будут уничтожены этим вызовом. |
punArrayDestroyQuantity | const uint32 * | Количество предметов, уничтожаемых в pArrayDestroy . |
unArrayDestroyLength | uint32 | Число предметов в 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Пример:
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 );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
pArrayItemDefs | const SteamItemDef_t * | Список предметов, выдаваемых пользователю. |
punArrayQuantity | const uint32 * | Количество каждого выдаваемого предмета в pArrayItemDefs . Этот параметр необязателен, укажите NULL, чтобы передать единицу каждого предмета. |
unArrayLength | uint32 | Число предметов в 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 );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_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 );
Название | Тип | Описание |
steamID | CSteamID | SteamID пользователя, для которого предназначены эти предметы. Должно совпадать с SteamInventoryEligiblePromoItemDefIDs_t.m_steamID . |
pItemDefIDs | SteamItemDef_t * | Возвращает номера определений предметов, копируя их в этот массив. |
punItemDefIDsArraySize | uint32 * | Должно быть той же длины, что и pItemDefIDs , и совпадать с SteamInventoryEligiblePromoItemDefIDs_t.m_numEligiblePromoItemDefs . |
Получает список предметов, которые могут быть выданы пользователю.
Для получения номеров определений вы должны выполнить этот вызов при обработке результата вызова
SteamInventoryEligiblePromoItemDefIDs_t.
Возвращает: bool
См. также: ISteamInventory::AddPromoItem,
ISteamInventory::AddPromoItemsGetItemDefinitionIDs
bool GetItemDefinitionIDs( SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
Название | Тип | Описание |
pItemDefIDs | SteamItemDef_t * | Возвращает определения предметов, копируя их в этот массив. |
punItemDefIDsArraySize | uint32 * | Должно быть приравнено к длине pItemDefIDs . Если pItemDefIDs будет равно NULL, вернёт число элементов, которое должно содержаться в массиве. |
Возвращает набор всех номеров определений предметов, которые определены на панели управления партнёрского сайта.
Эти номера не обязательно являются последовательными.
Этот вызов выполняется в ответ на обратный вызов
SteamInventoryDefinitionUpdate_t. Нет необходимости выполнять этот вызов, если номера определений жёстко закодированы в игре (к примеру, фиолетовая маска = 20, синяя модификация оружия = 55), и она не позволяет добавлять новые типы предметов без обновлений клиента.
Возвращает: bool
Возвращает
true, если вызов успешен. Возвращает
false, только если определения предметов не были загружены с сервера, либо для текущего приложения нет определений предметов.
Если вызов успешен,
punItemDefIDsArraySize
будет содержать число доступных определений предметов.
GetItemDefinitionProperty
bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
Название | Тип | Описание |
iDefinition | SteamItemDef_t | Определение предмета, для которого требуется получить свойства. |
pchPropertyName | const char * | Название свойства, для которого требуется получить значение. Если передать NULL, pchValueBuffer будет содержать список всех доступных названий свойств (разделитель — запятая). |
pchValueBuffer | char * | Возвращает значение, связанное с pchPropertyName . |
punValueBufferSizeOut | uint32 * | Это должно быть приравнено к размеру 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 );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
pInstanceIDs | const SteamItemInstanceID_t * | Список номеров экземпляров предметов, состояние которых требует обновить. |
unCountInstanceIDs | uint32 | Число предметов в pInstanceIDs . |
Получает состояние подмножества инвентаря текущего пользователя.
Подмножество задаётся массивом номеров экземпляров предметов.
Результаты этого вызова могут быть сериализованы с помощью
ISteamInventory::SerializeResult и переданы другим игрокам, чтобы «доказать», что текущий пользователь владеет указанными предметами без необходимости показывать весь инвентарь пользователя. К примеру, вы можете отправить этот вызов с номерами предметов, которыми сейчас снаряжён игрок, сериализовать результат в буфер, а затем передать этот буфер другим игрокам при присоединении к игре.
Возвращает: bool
Эта функция всегда возвращает
true, если вызывается обычным пользователем, и
false, если вызывается SteamGameServer.
Возвращает дескриптор нового результата с помощью
pResultHandle
.
ВНИМАНИЕ: обязательно вызвать
ISteamInventory::DestroyResult в отношении полученного результата, когда вы закончили действия с ним.
GetItemPrice
bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pPrice );
Название | Тип | Описание |
iDefinition | SteamItemDef_t | ID определения предмета, для которого необходимо получить цену |
pPrice | uint64* | Указатель цены для заполнения. Цены указаны в местной валюте пользователя. |
После успешного вызова
ISteamInventory::RequestPrices можно вызвать этот метод, чтобы получить информацию о цене для конкретного определения предмета.
Возвращает: bool
true при успехе, что означает, что параметр
pPrice
заполнен данными о цене предоставленного ID определения предмета.
false, если параметры недействительны или отсутствует цена ID определения предмета.
См. также: ISteamInventory::RequestPricesGetItemsWithPrices
bool GetItemsWithPrices( SteamItemDef_t *pArrayItemDefs, uint64 *pPrices, uint32 unArrayLength );
Название | Тип | Описание |
pArrayItemDefs | SteamItemDef_t * | Массив номеров определений предмета для заполнения |
pPrices | uint64* | Массив цен для каждого соответствующего номера определений предметов в pArrayItemDefs. Цены указаны в местной валюте пользователя. |
unArrayLength | uint32 | Должно быть той же длины, что и массивы pArrayItemDefs и pPrices , полученных в результате вызова ISteamInventory::GetNumItemsWithPrices . |
После успешного вызова
ISteamInventory::RequestPrices можно вызвать этот метод, чтобы получить информацию обо всех ценах для подходящих определений предметов. Используйте результат
ISteamInventory::GetNumItemsWithPrices в качестве размера передаваемых массивов.
Возвращаемые значения: bool
true в случае успешного вызова, что означает, что
pArrayItemDefs
и
pPrices
были заполнены номерами определений предметов и ценами предметов на продажу.
false, если параметры недействительны.
См. также: ISteamInventory::RequestPrices,
ISteamInventory::GetItemPriceGetNumItemsWithPrices
uint32 GetNumItemsWithPrices();
После успешного вызова
ISteamInventory::RequestPrices возвратится число определений предметов с верными ценами.
Возвращаемые значения: uint32См. также: ISteamInventory::RequestPrices,
ISteamInventory::GetItemsWithPricesGetResultItemProperty
bool GetResultItemProperty( SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char *pchPropertyName, char *pchValueBuffer, uint32 *punValueBufferSizeOut );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_t | Дескриптор результата, содержащий предмет, для которого требуется получить свойства. |
unItemIndex | uint32 | |
pchPropertyName | const char * | Название свойства, для которого требуется получить значение. Если передать NULL, pchValueBuffer будет содержать список всех доступных названий свойств (разделитель — запятая). |
pchValueBuffer | char * | Возвращает значение, связанное с pchPropertyName . |
punValueBufferSizeOut | uint32 * | Это должно быть приравнено к размеру pchValueBuffer . Возвращает число байтов, необходимое для хранения значения. |
Получает динамические свойства предмета в наборе результатов действий с инвентарём.
Названия свойств всегда буквенно-цифровые (могут содержать знак _) и возвращаются в формате ASCII.
Если результаты не помещаются в предоставленный буфер, они могут быть скопированы частично.
Возвращаемые значения: bool
Возвращает
true при успешном вызове. В противном случае
false, если дескриптор результата действий с инвентарём недействителен или предоставленный index не содержит предмет.
GetResultItems
bool GetResultItems( SteamInventoryResult_t resultHandle, SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_t | Дескриптор результата действий с инвентарём, для которого требуется получить предметы. |
pOutItemsArray | SteamItemDetails_t * | Информация копируется в этот массив. |
punOutItemsArraySize | uint32 * | Должно быть приравнено к длине 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 );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_t | Дескриптор результата действий с инвентарём, для которого требуется получить состояние. |
Получает состояние асинхронного дескриптора результата действий с инвентарём.
Это опрос, эквивалентный регистрации функции для обратного вызова
SteamInventoryResultReady_t.
Возвращаемые значения: EResultВозвращает информацию о том, был ли вызов успешен.
Возможные значения:
К примеру: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 );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_t | Дескриптор результата действий с инвентарём, для которого требуется получить метку времени. |
Получает серверное время, когда был сгенерирован результат.
Возвращаемые значения: uint32Метка возвращается в формате UNIX-времени (число секунд с 1 января 1970 года).
Это значение можно сравнить с
ISteamUtils::GetServerRealTime, чтобы определить возраст результата.
GrantPromoItems
bool GrantPromoItems( SteamInventoryResult_t *pResultHandle );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_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 );
Название | Тип | Описание |
steamID | CSteamID | SteamID пользователя, для которого запрашиваются подходящие промопредметы. |
Запрашивает список «подходящих» промопредметов, которые могут быть вручную выданы данному пользователю.
Это промопредметы типа 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::GetItemPriceSendItemDropHeartbeat
void SendItemDropHeartbeat();
Функция устарела.
SerializeResult
bool SerializeResult( SteamInventoryResult_t resultHandle, void *pOutBuffer, uint32 *punOutBufferSize );
Название | Тип | Описание |
resultHandle | SteamInventoryResult_t | Сериализуемый дескриптор результата действий с инвентарём. |
pOutBuffer | void * | Буфер, в который копируется сериализуемый результат. |
punOutBufferSize | uint32 * | Должно быть того же размера, что и 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 );
Название | Тип | Описание |
pArrayItemDefs | SteamItemDef_t * | Массив номеров определений предмета, которые желает приобрести пользователь. |
punArrayQuantity | uint32 * | Массив количеств каждого определения предмета, которые желает приобрести пользователь. |
unArrayLength | uint32 | Должно быть той же длины, что и массивы 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 );
Передаёт предметы между стеками в инвентаре пользователя.
Используется для сбора, разделения и перемещения предметов. У itemIdSource и itemIdDest должен быть один и тот же номер определения предмета (itemdef id). Чтобы переместить предметы в конечный стек, укажите исходный стек, количество предметов и номер конечного предмета. Чтобы разделить существующий стек, передайте
k_SteamItemInstanceIDInvalid в
itemIdDest
. Новый стек предметов будет создан с запрошенным количеством.
ВНИМАНИЕ: ограничения на обмен или продажу копируются с передаваемыми предметами. Конечный стек получает последние данные о датах разрешений на обмен или продажу любых предметов в наборе.
Возвращаемые значения: bool
Эта функция всегда возвращает
true, если вызывается обычным пользователем, и
false, если вызывается SteamGameServer.
Возвращает новый дескриптор результата с помощью
pResultHandle
.
ВНИМАНИЕ: необходимо вызвать
ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.
См. также: ISteamInventory::ConsumeItem,
ISteamInventory::ExchangeItemsК примеру:void CInventory::CombineItems()
{
SteamInventoryResult_t transferResult;
SteamItemInstanceID_t bigStack = GetItemIdFromInventory( ... );
SteamInventory()->TransferItemQuantity( &transferResult, bigStack, 1, k_SteamItemInstanceIDInvalid );
SteamItemInstanceID_t originStack = GetItemIdFromInventory( ... );
SteamItemInstanceID_t destStack = GetItemIdFromInventory( ... );
SteamInventory()->TransferItemQuantity( &transferResult, originStack, 2, destStack );
}
TriggerItemDrop
bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition );
Название | Тип | Описание |
pResultHandle | SteamInventoryResult_t * | Возвращает дескриптор нового результата действий с инвентарём. |
dropListDefinition | SteamItemDef_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::SubmitUpdatePropertiesSubmitUpdateProperties
bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle );
Отправляет запрос транзакции для изменения
динамических свойств предметов для текущего пользователя. См.
ISteamInventory::StartUpdateProperties.
ВНИМАНИЕ: необходимо вызвать
ISteamInventory::DestroyResult для полученного результата, когда вы закончили действия с ним.
Возвращает: bool
См. также: ISteamInventory::StartUpdateProperties,
ISteamInventory::SetProperty,
ISteamInventory::RemovePropertyRemoveProperty
bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName );
Удаляет
динамическое свойство заданного предмета.
Возвращает: bool
См. также: ISteamInventory::StartUpdateProperties,
ISteamInventory::SetProperty,
ISteamInventory::SubmitUpdatePropertiesSetProperty
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 );
Название | Тип | Описание |
handle | SteamInventoryUpdateHandle_t | Дескриптор обновления, относящийся к запросу транзакции, возвращённому ISteamInventory::StartUpdateProperties. |
nItemID | SteamItemInstanceID_t | Изменяет номер предмета. |
pchPropertyName | const char* | Добавляет или обновляет динамическое свойство предмета. |
pchPropertyValue | const char* | Задаёт значение строки. |
bValue | bool | Задаёт булево значение. |
nValue | int64 | Задаёт значение 64-битного целого числа. |
flValue | float | Задаёт значение числа с плавающей точкой. |
Назначает
динамическое свойство заданного предмета. Типы поддерживаемых значений: строки, булевы значения, 64-битные целые числа и 32-битные числа с плавающей запятой.
Возвращает: bool
См. также: ISteamInventory::StartUpdateProperties,
ISteamInventory::RemoveProperty,
ISteamInventory::SubmitUpdatePropertiesОбратные вызовы
Далее приведён список обратных вызовов, которые могут быть получены при вызове
SteamAPI_RunCallbacks. Многие из них могут быть получены сразу в ответ на функции-члены
ISteamInventory
.
SteamInventoryDefinitionUpdate_t
Этот обратный вызов активируется всякий раз, когда обновляются определения предметов: либо в ответ на
ISteamInventory::LoadItemDefinitions, либо когда стали доступны новые определения предметов (к примеру, с помощью динамического добавления новых типов предметов, пока игроки всё ещё в игре).
У данного обратного вызова отсутствуют поля.
Связанные функции: ISteamInventory::LoadItemDefinitionsSteamInventoryEligiblePromoItemDefIDs_t
Возвращается, когда вы запросили список «подходящих» промопредметов, которые могут быть вручную выданы данному пользователю. Это промопредметы типа manual: они не выдаются автоматически. Пример использования — предмет, который становится доступным каждую неделю.
Название | Тип | Описание |
m_result | EResult | k_EResultOK при успехе. Любое другое значение означает сбой. |
m_steamID | CSteamID | SteamID пользователя, для которого предназначены эти предметы. |
m_numEligiblePromoItemDefs | int | Число подходящих промопредметов, которые могут быть выданы этому пользователю. Вы должны создать буфер SteamItemDef_t, и использовать его в ISteamInventory::GetEligiblePromoItemDefinitionIDs для получения определений предметов. |
m_bCachedData | bool | Означает, что данные получены из кэша, а не с сервера. Это происходит, если пользователь не залогинен, либо не удаётся соединиться с серверами Steam по какой-то другой причине. |
Связанные функции: ISteamInventory::RequestEligiblePromoItemDefinitionsIDsSteamInventoryFullUpdate_t
Активируется, когда GetAllItems возвращает результат, который новее предыдущего известного результата. (Не сработает, если инвентарь не изменился или если во время выполнения будут аннулированы результаты двух пересекающихся вызовов и при этом о более раннем результате уже будет известно, что он устарел).
Обычный обратный вызов
SteamInventoryResultReady_t всё равно будет отправлен сразу после этого. Это дополнительное уведомление для вашего удобства.
SteamInventoryResultReady_t
Активируется, когда результат действия с инвентарём переходит из состояния
k_EResultPending в любое другое завершённое состояние. Полный список состояний см. здесь:
ISteamInventory::GetResultStatus. Для каждого дескриптора будет активирован ровно один обратный вызов.
SteamInventoryStartPurchaseResult_t
Возвращается после вызова
ISteamInventory::StartPurchase.
Название | Тип | Описание |
m_result | EResult | k_EResultOK при успехе. Любое другое значение означает сбой. |
m_ulOrderID | uint64 | Номер автоматически сгенерированного заказа для активированной покупки. |
m_ulTransID | uint64 | Номер автоматически сгенерированной транзакции для активированной покупки. |
SteamInventoryRequestPricesResult_t
Возвращается после вызова
ISteamInventory::RequestPrices.
Название | Тип | Описание |
m_result | EResult | k_EResultOK при успехе. Любое другое значение означает сбой. |
m_rgchCurrency | char | Строка указывает код местной валюты пользователя. |
Структуры
Приведённые ниже структуры могут быть возвращены функциями ISteamInventory, а также эти функции могут с ними взаимодействовать.
SteamItemDetails_t
Перечисления
Далее приведён список перечислений, которые определены для использования с ISteamInventory.
ESteamItemFlags
Это битовые флаги, заданные в
SteamItemDetails_t.
Название | Значение | Описание |
k_ESteamItemNoTrade | 1 << 0 | Этот предмет заблокирован на этом аккаунте и не может быть обменян или отдан. Это флаг состояния предмета, который навсегда прикреплён к конкретному экземпляру предмета. |
k_ESteamItemRemoved | 1 << 8 | Предмет уничтожен, обменян, устарел или иным образом стал недействительным. Этот флаг подтверждения действия, который устанавливается однажды, как часть результата. |
k_ESteamItemConsumed | 1 << 9 | Количество экземпляров предмета уменьшено на 1 с помощью вызова ISteamInventory::ConsumeItem. Этот флаг подтверждения действия, который устанавливается однажды, как часть результата. |
Typedefs
Далее приведён список объявлений typedef, которые определены для использования с ISteamInventory.
Название | Базовый тип | Описание |
SteamInventoryResult_t | int32 | Дескриптор асинхронного результата действий с инвентарём. |
SteamItemDef_t | int32 | Типы предметов в игре идентифицируются 32-битным номером определения предмета. Номера определений могут располагаться в диапазоне между 1 и 999999999. Номера, равные или меньшие, чем ноль, являются недействительными. Номера, равные или превышающие миллиард (1x10^9), зарезервированы для внутреннего употребления в Steam. |
SteamItemInstanceID_t | uint64 | У каждого экземпляра предмета есть глобальный уникальный ID экземпляра. Этот ID уникален как комбинация идентификаторов игрока и экземпляра конкретного предмета, он не переносится другим игрокам и не используется для других предметов. |
SteamInventoryUpdateHandle_t | uint64 | Возвращается в результате вызова функции ISteamInventory::StartUpdateProperties, которая инициирует запрос транзакции для изменения динамических свойств предметов для текущего пользователя. |
Константы
Далее приведён список констант, которые определены для использования с ISteamInventory.
Название | Тип | Значение | Описание |
k_SteamInventoryResultInvalid | SteamInventoryResult_t | -1 | Недействительный дескриптор результата действий с инвентарём. |
k_SteamItemInstanceIDInvalid | SteamItemInstanceID_t | (SteamItemInstanceID_t)~0 | Недействительный ID экземпляра предмета. Обычно возвращается, когда при выполнении операции произошёл сбой. Рекомендуется инициализировать все новые экземпляры предметов с этим значением. |
STEAMINVENTORY_INTERFACE_VERSION | const char * | "STEAMINVENTORY_INTERFACE_V002" | |