Steamworks ドキュメンテーション
ISteamInventory インターフェイス
Steam インベントリクエリと操作 API

詳細は、Steamインベントリサービス を参照してください。

メンバー関数

ISteamInventory のメンバー関数はグローバルアクセサー関数 SteamInventory() を通して呼び出されます。

AddPromoItem

bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef );
名前説明
pResultHandleSteamInventoryResult_t *新しいインベントリ結果ハンドルを返します。
itemDefSteamItemDef_tプレイヤーに付与する ItemDef です。

現在のユーザーに、1 回限りの特定のプロモーションアイテムを付与します。

Itemdefs 内のポリシーによって付与可能なアイテムをロックダウンできるため、クライアントから安全に呼び出すことができます。 この呼び出しを行う主な状況の 1 つは、特定の他のゲームを所有するユーザーにアイテムを付与する場合です。 これは、ゲームが特定のプロモーションアイテムをユーザーに表示するカスタム UI を持っている場合に便利ですが、それ以外で複数のプロモーションアイテムを付与したい場合は、AddPromoItems または GrantPromoItems を使用してください。

付与可能なアイテムは itemdef 内に「promo」属性が必要です。 プロモーションアイテムは、付与されるアイテムを所有するのに必要な一連の APPID をリストします。 このバージョンは、設定されたアイテム定義内で promo 属性が指定された全てのアイテムを付与します。 これにより、ゲームクライアントをアップデートすることなく、プロモーションアイテムを追加できます。 次の例では、ユーザーが TF2 または SpaceWar のどちらかを所有している場合にアイテムが付与されます。

promo: owns:440;owns:480

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常に true を返し、SteamGameServer から呼び出された場合には常に false を返します。

成功した場合、インベントリの結果には付与されたアイテムが含まれます。 ユーザーがプロモーションの対象資格を有していないためアイテムが全く付与されていない場合でも、成功と見なされます。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で 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 *ユーザーに付与するアイテムのリストです。
unArrayLengthuint32pArrayItemDefs 内のアイテム数です。

現在のユーザーに、1 回限りの特定のプロモーションアイテムを付与します。

Itemdefs 内のポリシーによって付与可能なアイテムをロックダウンできるため、クライアントから安全に呼び出すことができます。 この呼び出しを行う主な状況の 1 つは、特定の他のゲームを所有するユーザーにアイテムを付与する場合です。 1 個のプロモーションアイテムを付与したい場合は AddPromoItem を使用してください。 使用できるすべてのプロモーションアイテムを付与したい場合は GrantPromoItems を使用してください、

付与可能なアイテムは itemdef 内に「promo」属性が必要です。 プロモーションアイテムは、アイテム付与されるために所有する必要のある一連の APPID をリストします。 このバージョンは、設定されたアイテム定義内で promo 属性が指定された全てのアイテムを付与します。 これにより、ゲームクライアントをアップデートすることなく、プロモーションアイテムを追加できます。 次の例では、ユーザーが TF2 または SpaceWar のどちらかを所有している場合にアイテムが付与されます。

promo: owns:440;owns:480

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常に true を返し、SteamGameServer から呼び出された場合には常に false を返します。

成功した場合、インベントリの結果には付与されたアイテムが含まれます。 ユーザーがプロモーションの対象資格を有していないためアイテムが全く付与されていない場合でも、成功と見なされます。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で 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_tSteamID を確認するためのインベントリ結果ハンドルです。
steamIDExpectedCSteamID確認する Steam ID です。

インベントリ結果ハンドルが指定された Steam ID に属しているかどうかを確認します。

これは、リモートユーザーが別のユーザーのインベントリを偽装していないかを確認するために DeserializeResult を使用する際に重要です。

戻り値: bool
true 結果がターゲットの Steam ID に属する場合; それ以外の場合は false

ConsumeItem

bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity );
名前説明
pResultHandleSteamInventoryResult_t *新しいインベントリ結果ハンドルを返します。
itemConsumeSteamItemInstanceID_t消費するアイテムのインスタンス id です。
unQuantityuint32スタック内で消費するアイテムの数です。

ユーザーのインベントリからアイテムを消費します。 指定されたアイテムの数量がゼロになると、永久に削除されます。

一旦アイテムが削除されると回復できません。 心配性の方には不向きです - ゲームにアイテムの削除機能が全く実装されていない場合、何重もの UI 確認プロセスを強く推奨します。

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常に true を返し、SteamGameServer から呼び出された場合には常に false を返します。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で DestroyResult を必ず呼び出してください。

参照: ExchangeItems, 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 *逆シリアル化するバッファです。
unBufferSizeuint32pBuffer のサイズです。
bRESERVED_MUST_BE_FALSEboolこれは false である必要があります!

結果セットを逆シリアル化し、シグネチャバイトを確認します。

この呼び出しには、ハンドルステータスが k_EResultExpired に設定される潜在的ソフトエラーモードがあります。 GetResultItems はこのモードでも成功します。 「期限切れ」の結果は、 単に時間的な期限切れ (1 時間) だけでなく、結果セットが生成された後に、結果セット内のアイテムのひとつがトレードされたり、消費されたために、データが最新ではないことを示す場合があります。 GetResultTimestampISteamUtils::GetServerRealTime のタイムスタンプを比較してデータの古さを判断できます。 「期限切れ」の結果コードを無視して通常通りに続行するか、または期限切れのデータを持つプレイヤーに、更新された結果セットを送信するよう要求できます。

完了後、リモートユーザーが別のユーザーのインベントリを偽装していないかを確認するために CheckResultSteamID を結果ハンドルで呼び出します。

注意: bRESERVED_MUST_BE_FALSE パラメーターは将来の使用のために予約されているため、 true に設定しないでください。

戻り値: bool
常に true を返し、GetResultStatus を介してエラーコードを渡します。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で 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 *この呼び出しによって作成されるアイテムのリストです。 現時点では 1 つのアイテムのみです!
punArrayGenerateQuantityconst uint32 *pArrayGenerate 内の各アイテムの数量です。 現時点では 1 アイテムのみで、1 に設定する必要があります!
unArrayGenerateLengthuint32pArrayGenerate および punArrayGenerateQuantity 内のアイテム数です。 現時点では 1 でなければなりません!
pArrayDestroyconst SteamItemInstanceID_t *この呼び出しによって破棄されるアイテムのリストです。
punArrayDestroyQuantityconst uint32 *pArrayDestroy 内で破棄する各アイテムの数量です。
unArrayDestroyLengthuint32pArrayDestroy および punArrayDestroyQuantity 内のアイテムの数です。

他のアイテムのセットと引き換えに 1 個のアイテムを付与します。

これは、アイテムの生成レシピや、変形、または自身を他のアイテムに展開するアイテム (例: 宝箱) を実装するために使用することができます。

この API の呼び出し元は、要求されたアイテムと、交換する既存のアイテムと数量の配列を渡します。 API では現在、生成するアイテムの配列を使用しますが、この時点での配列のサイズは 1 である必要があり、新規アイテムの数量も 1 でなければなりません。

付与可能なアイテムは itemdef 内に 「exchange」 属性が必要です。 exchange 属性は、このアイテムに対して交換が有効なレシピのセットを指定します。 交換レシピはインベントリサービスによって細かく検証され、供給された素材がレシピと一致しない場合や、十分な数量が含まれていない場合、交換は失敗します。

例:
exchange: 101x1,102x1;103x5;104x3,105x3

次のいずれかの場合に交換が許可されます。#101 と#102 を 1個ずつ・#103 を 5 個・#104 と #105 をそれぞれ 3 個ずつ。 詳細は、Steamインベントリスキーマ のドキュメントを参照してください。

戻り値: bool
この関数は成功すると true を返し、SteamGameServer から呼び出された場合や、unArrayGenerateLength または punArrayGenerateQuantity1 に設定されていない場合に false を返します。

レシピと一致しない、また必要な数量が供給されない交換は失敗します。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で DestroyResult を必ず呼び出してください。

参照: ConsumeItem, 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 内で付与する各アイテムの数量です。 これはオプションです。各アイテムに 1 を指定するには NULL を渡します。
unArrayLengthuint32pArrayItemDefs 内のアイテム数です。

特定のアイテムを現在のユーザーに付与します (開発者のみ使用)。

この API はプロトタイプ専用です。ゲームのパブリッシャーグループに属する Steam アカウントでのみ使用可能です。

SteamItemDef_t で識別されたアイテムの配列や、オプションで、各アイテムに対応する数量の 2 番目の配列を渡すことができます。 これらの配列の長さは一致する必要があります!

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常に true を返し、SteamGameServer から呼び出された場合には常に false を返します。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で 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 を返し、SteamGameServer から呼び出された場合には常に false を返します。

pResultHandle を介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果で DestroyResult を必ず呼び出してください。

例:
void SpaceWarItem::LoadInventory( IGameEngine *pGameEngine ) { SteamInventory()->GetAllItems( &s_RequestResult ); }

GetEligiblePromoItemDefinitionIDs

bool GetEligiblePromoItemDefinitionIDs( CSteamID steamID, SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
名前説明
steamIDCSteamIDこれらのアイテムの対象となるユーザーの Steam ID。 これは、SteamInventoryEligiblePromoItemDefIDs_t.m_steamID と同じです。
pItemDefIDsSteamItemDef_t *アイテム定義 id をこの配列にコピーして返します。
punItemDefIDsArraySizeuint32 *これは pItemDefIDs の長さで、SteamInventoryEligiblePromoItemDefIDs_t.m_numEligiblePromoItemDefs と同じです。

ユーザーに付与できるアイテム定義 id のリストを取得します。

この関数は、アイテム定義 id を取得するために SteamInventoryEligiblePromoItemDefIDs_t の呼び出し結果を処理している間に呼び出します。

戻り値: bool


参照: AddPromoItem, AddPromoItems

GetItemDefinitionIDs

bool GetItemDefinitionIDs( SteamItemDef_t *pItemDefIDs, uint32 *punItemDefIDsArraySize );
名前説明
pItemDefIDsSteamItemDef_t *アイテム定義をこの配列にコピーして返します。
punItemDefIDsArraySizeuint32 *これは pItemDefIDs の長さに設定されます。 pItemDefIDsNULL の場合、これは配列で保持する必要がある要素の数を返します。

Steamworks Web サイトのアプリ管理パネルで定義したすべてのアイテム定義 ID のセットを返します。

これらのアイテム定義は連続した整数である必要はありません。

これは SteamInventoryDefinitionUpdate_t コールバックへの応答として呼び出します。 ゲームで数字の定義 IDがハードコードされており (例: 紫色のフェイスマスク = 20、青い武器の mod = 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」) はローカライズされる可能性があり、現在の Steam 言語設定に依存することに注意してください (ISteamApps::GetCurrentGameLanguage を参照)。 プロパティ名は常に ASCII 英数字とアンダースコア「_」です。

使用可能なプロパティ名のコンマ区切りのリストを取得するために、NULLpchPropertyName に渡します。 このモードでは、punValueBufferSizeOut は推奨バッファサイズを含みます。 それ以外の場合は、実際に pchValueBuffer にコピーされたバイト数です。

戻り値: bool
この呼び出しは、成功すると true を返します。それ以外の場合は、アイテム定義がサーバーからロードされていないか、現在のアプリケーション用のアイテム定義が存在しないか、アイテム定義内にプロパティ名が見つからないことを示す false を返します。

関連する値は pchValueBuffer を介して返され、値を保持するのに必要なバイト数の合計は punValueBufferSizeOut から取得できます。 この関数は 2 回呼び出すことを推奨しています。最初の呼び出しでは pchValueBufferNULL に設定し、次の呼び出しでは punValueBufferSizeOut にゼロを設定し、バッファに必要なサイズを取得します。

出力例:
pchPropertyName NULL に設定:
appid,itemdefid、Timestamp 等...
pchPropertyName "name" に設定:
SW_DECORATION_HAT

注: はじめにLoadItemDefinitionsを呼び出し、GetItemDefinitionPropertyの呼び出し前にアイテムが使用可能なことを確認します。

GetItemsByID

bool GetItemsByID( SteamInventoryResult_t *pResultHandle, const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs );
名前説明
pResultHandleSteamInventoryResult_t *新しいインベントリ結果ハンドルを返します。
pInstanceIDsconst SteamItemInstanceID_t *ステータスを更新するアイテムインスタンス id のリスト。
unCountInstanceIDsuint32pInstanceIDs 内のアイテム数。

現在のユーザーのインベントリのサブセットのステータスを取得します。

サブセットはアイテムインスタンスIDの配列によって指定されます。

この呼び出しの結果は SerializeResult を使用してシリアル化でき、ユーザーのインベントリ全体を公開することなく現在のユーザーが特定のアイテムを所有していることを「証明」するために、他のユーザーに渡すことができます。 例えば、ユーザーが現在装備しているアイテムの ID でこの関数を呼び出し、バッファにシリアル化し、その後ゲームに参加する時にこのバッファを他のプレイヤーに送信できます。

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常にtrueを返し、SteamGameServerから呼び出された場合には常にfalseを返します。

pResultHandleを介して新しい結果ハンドルを返します。

注: 使用後、指定されたインベントリの結果でDestroyResultを必ず呼び出してください。

GetItemPrice

bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pPrice );
名前説明
iDefinitionSteamItemDef_t価格を取得するアイテム定義
pPriceuint64*作成する価格ポインター。 価格はユーザーの現地通貨で表示されます。

RequestPricesの呼び出しが成功した後、このメソッドを呼び出して特定のアイテム定義の価格を取得できます。

戻り値: bool
true 成功した場合、指定のアイテム定義IDの価格にpPriceが正しく代入されたことを示します。
false はパラメータが無効、または指定されたアイテム定義IDの価格がない場合です。

こちらも参照してください: RequestPrices

GetItemsWithPrices

bool GetItemsWithPrices( SteamItemDef_t *pArrayItemDefs, uint64 *pPrices, uint32 unArrayLength );
名前説明
pArrayItemDefsSteamItemDef_t *作成するアイテム定義 id の配列
pPricesuint64*pArrayItemDefs 内で対応するアイテム定義 id ごとの価格の配列。 価格はユーザーの現地通貨で表示されます。
unArrayLengthuint32これは pArrayItemDefs の長さで、pPrices 配列は GetNumItemsWithPrices の呼び出し結果から派生します。

RequestPricesの呼び出しに成功した後、適用可能なアイテム定義のすべての価格を取得するために、このメソッドを呼び出します。 渡す配列のサイズとしてGetNumItemsWithPricesの結果を使用します。

戻り値: bool
true 成功した場合、pArrayItemDefspPricesにアイテム定義idおよび販売するアイテムの価格が正しく代入されたことを示します。
false パラメーターが無効な場合

こちらも参照してください: RequestPrices, GetItemPrice

GetNumItemsWithPrices

uint32 GetNumItemsWithPrices();
RequestPricesの呼び出しが成功した後、有効な価格と共にアイテム定義の数を返します。

戻り値: uint32

こちらも参照してください: RequestPrices, 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が返されます。

GetResultItems

bool GetResultItems( SteamInventoryResult_t resultHandle, SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize );
名前説明
resultHandleSteamInventoryResult_tアイテムを取得するインベントリ結果ハンドル。
pOutItemsArraySteamItemDetails_t *詳細はこの配列にコピーすることによって返されます。
punOutItemsArraySizeuint32 *これは pOutItemsArray の長さに設定されます。 pOutItemsArrayNULL の場合、配列で保持する必要がある要素の数を返します。

インベントリ結果ハンドルに関連付けられたアイテムを取得します。

戻り値: 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
呼び出しが成功したかどうか。

可能な値:

例:
void SpaceWarItem::CheckInventory( IGameEngine *pGameEngine ) { if ( s_RequestResult != 0 ) { EResult result = SteamInventory()->GetResultStatus( s_RequestResult ); if ( result == k_EResultOK ) { // Do something here } } }

GetResultTimestamp

uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle );
名前説明
resultHandleSteamInventoryResult_tタイムスタンプを取得するインベントリ結果ハンドル。

結果が生成されたサーバー時刻を取得します。

戻り値: uint32
タイムスタンプはUnixエポック時間 (1970 年 1月 1日以降の時間)で提供されます

この値とISteamUtils::GetServerRealTimeを比較して結果の経過時間 (古さ) を確定できます。

GrantPromoItems

bool GrantPromoItems( SteamInventoryResult_t *pResultHandle );
名前説明
pResultHandleSteamInventoryResult_t *新しいインベントリ結果ハンドルを返します。

現在のユーザーに、潜在的な1回限りのプロモーションアイテムをすべて付与します。

Itemdefs内のポリシーによって付与可能なアイテムをロックダウンできるため、クライアントから安全に呼び出すことができます。 この呼び出しを行う主な状況の 1 つは、特定の他のゲームを所有するユーザーにアイテムを付与する場合です。 すべてのアイテムではなく、特定のプロモーションアイテムを付与したい場合はこちらを参照してください: AddPromoItemおよびAddPromoItems

付与可能なアイテムはitemdef内に「promo」属性が必要です。 プロモーションアイテムは、付与されるアイテムを所有するのに必要な一連のAPPIDをリストします。 このバージョンは、設定されたアイテム定義内でpromo属性が指定された全てのアイテムを付与します。 これにより、ゲームクライアントをアップデートすることなく、プロモーションアイテムを追加できます。 次の例では、ユーザーがTF2またはSpaceWarのどちらかを所有している場合にアイテムが付与されます。

promo: owns:440;owns:480

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常にtrueを返し、SteamGameServerから呼び出された場合には常にfalseを返します。

成功した場合、インベントリの結果には付与されたアイテムが含まれます。 ユーザーがプロモーションの対象資格を有していないためアイテムが全く付与されていない場合でも、成功と見なされます。

pResultHandleを介して新しい結果ハンドルを返します。

注: 使用後、指定されたインベントリの結果でDestroyResultを必ず呼び出してください。

例:
void CInventory::GrantPromoItems() { SteamInventory()->GrantPromoItems( &s_GenerateRequestResult ); }

LoadItemDefinitions

bool LoadItemDefinitions();
非同期ロードをトリガーし、アイテム定義を更新します。

アイテム定義は一連の文字列プロパティへの「定義ID」(1 ~ 999999999 の範囲内の整数) のマッピングです。 これらのプロパティのいくつかは、Steamコミュニティwebサイトでアイテムを表示するために必用です。 その他のプロパティはアプリケーションによって定義できます。 ゲームで数字の定義IDがハードコードされており (例: 紫色のフェイスマスク = 20、青い武器のmod = 55) 、クライアントへのパッチ無しで新しいアイテムタイプを追加することを許可しない場合、この関数を呼び出す理由はありません。

戻り値: bool
SteamInventoryDefinitionUpdate_tコールバックをトリガーします。
この呼び出しは常にtrueを返します。

RequestEligiblePromoItemDefinitionsIDs

SteamAPICall_t RequestEligiblePromoItemDefinitionsIDs( CSteamID steamID );
名前説明
steamIDCSteamID対象となるプロモーションアイテムをリクエストするユーザーの Steam ID

指定のユーザーに手動で付与「可能」なプロモーションアイテムのリストを要求します。

これらの「手動」タイプのプロモーションアイテムは自動的には付与されません。 この使用例は、毎週使用可能になるアイテムです。

この関数の呼び出し後、実際のアイテム定義idを取得するためにGetEligiblePromoItemDefinitionIDsを呼び出す必要があります。

戻り値: SteamAPICall_tSteamInventoryEligiblePromoItemDefIDs_t呼び出し結果で使用されます。
steamIDが有効な個人アカウントではない場合に、k_uAPICallInvalidを返します。

RequestPrices

SteamAPICall_t RequestPrices();

ユーザーの使用通貨で購入できるすべてのアイテム定義の価格をリクエストします。 SteamInventoryRequestPricesResult_tの呼び出し結果は、ユーザーの現地支払通貨コードで返されます。 その後、既知のすべてのアイテム定義に対する価格を取得するためにGetNumItemsWithPricesおよびGetItemsWithPricesを呼び出すか、特定のアイテム定義に対してGetItemPriceを呼び出すことができます。

戻り値: SteamAPICall_tSteamInventoryRequestPricesResult_tの呼び出し結果で使用されます。
内部エラーの場合はk_uAPICallInvalidを返します。

こちらも参照してください: GetNumItemsWithPrices, GetItemsWithPrices, GetItemPrice

SendItemDropHeartbeat

void SendItemDropHeartbeat();
使用されていません。

SerializeResult

bool SerializeResult( SteamInventoryResult_t resultHandle, void *pOutBuffer, uint32 *punOutBufferSize );
名前説明
resultHandleSteamInventoryResult_tシリアル化するインベントリ結果ハンドル。
pOutBuffervoid *シリアル化された結果がコピーされるバッファ。
punOutBufferSizeuint32 *pOutBuffer のサイズに設定されます。 pOutBufferNULL の場合、バッファを保持するのに必要なサイズを返します。

シリアル化された結果セットは、偽造できない、または他のゲームセッションでは使用できない短いシグネチャを含みます。

結果セットは、ローカルクライアント上でのシリアル化、ゲームネットワーキングを介して他のプレイヤーに送信、およびリモートプレイヤーによって逆シリアル化できます。 これはハッカーが希少または高価なアイテムの所有を偽装するのを防止する安全な方法です。 シグネチャバイト付き結果セットを出力バッファにシリアル化します。 シリアル化された結果のサイズは、シリアル化されるアイテム数によって異なります。 他のプレイヤーにアイテムを安全に送信する場合は、まずGetItemsByIDを使用して、最小限の結果セットを作成することをお勧めします。

結果には、 1時間後に「期限切れ」と判断する組み込みタイムスタンプが含まれます。 有効期限の処理に関する詳細はDeserializeResultを参照してください。

これがpOutBufferNULLに設定すると、punOutBufferSizeは必要なバッファサイズに設定されます。 それによってバッファを作成し、この呼び出しを再度実行して、バッファをデータで埋めることができます。

戻り値: bool
true 成功すると punOutBufferSizeがバッファのサイズで正常に埋められた事を示し、pOutBufferが十分なサイズのバッファを指している場合は、そちらも同様に埋められます。
false は次の場合:
  • 関数は通常のユーザーによって呼び出されませんでした。 この呼び出しは GameServers ではサポートされていません。
  • resultHandle が無効、またはインベントリ結果ハンドルの準備ができていません。
  • punOutBufferSize に渡された値が期待値よりも小さく、pOutBufferNULL ではありませんでした。

StartPurchase

SteamAPICall_t StartPurchase( const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );
名前説明
pArrayItemDefsSteamItemDef_t *ユーザーが購入を希望するアイテム定義 id の配列。
punArrayQuantityuint32 *ユーザーが購入を希望する各アイテム定義の数量の配列。
unArrayLengthuint32これは pArrayItemDefspunArrayQuantity 配列の長さです。

ユーザーが購入を希望するアイテム定義の「ショッピングカート」によって、ユーザーの購入プロセスを開始します。 ユーザーは、Steamオーバーレイ内で使用通貨での購入を完了し、必要に応じてSteamウォレットにチャージするよう指示されます。

購入プロセスが正常に開始された場合、m_ulOrderIDおよびm_ulTransID
SteamInventoryStartPurchaseResult_t呼び出し結果で有効です。

ユーザーが取引を承認し購入を完了すると、コールバックSteamInventoryResultReady_tがトリガーされ、その後ユーザーが購入した新しいアイテムを取得できます。 注意:使用後に、インベントリ結果でDestroyResultを必ず呼び出してください。

戻り値: SteamAPICall_tSteamInventoryStartPurchaseResult_tの呼び出し結果で使用されます。
入力が無効な場合はk_uAPICallInvalidを返します。
開発時のテスト: アプリのリリース前に StartPurchase をテストする場合、開発 / パブリッシングチームのメンバーによって行われたすべての取引は、Sandbox マイクロトランザクション API を介して内部で処理されます。 Steamworks パブリッシャーの一員である場合は、アプリのリリース前に行った購入に対して請求されないことを意味します。

TransferItemQuantity

bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest );
名前説明
pResultHandleSteamInventoryResult_t *新しいインベントリ結果ハンドルを返します。
itemIdSourceSteamItemInstanceID_t転送するソースアイテムです。
unQuantityuint32itemIdSource から itemIdDest へ転送されるアイテムの数量です。
itemIdDestSteamItemInstanceID_t転送先のアイテムです。 ソーススタックを要求された数量の新しいアイテムスタックに分割するために k_SteamItemInstanceIDInvalid を渡すことができます。

ユーザーインベントリのスタック間でアイテムを転送します。

これは、アイテムのスタック、分割、および転送に使用できます。 ソースと送信先アイテムは同じitemdef idを持つ必要があります。 アイテムを送信先のスタックに転送するには、ソース、転送する数量および転送先のアイテム id を指定してください。 既存のスタックを分割するには、k_SteamItemInstanceIDInvaliditemIdDestに渡します。 要求された数量の新しいアイテムスタックが生成されます。

注: トレードの可否/マーケットでの制限は転送されるアイテムと共にコピーされます。 転送先のスタックは、スタック内のすべてのアイテムの最新のトレード可能日、マーケットでの取引可能日を受け取ります。

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常にtrueを返し、SteamGameServerから呼び出された場合には常にfalseを返します。

pResultHandleを介して新しい結果ハンドルを返します。

注: 使用後、指定されたインベントリの結果でDestroyResultを必ず呼び出してください。

こちらも参照してください: ConsumeItem, ExchangeItems

例:
void CInventory::CombineItems() { SteamInventoryResult_t transferResult; // 既存のスタックから2個のアイテムを分割します SteamItemInstanceID_t bigStack = GetItemIdFromInventory( ... ); SteamInventory()->TransferItemQuantity( &transferResult, bigStack, 1, k_SteamItemInstanceIDInvalid ); // スタックAからスタックBに2つ転送します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」型の itemdefid を参照する必要があります。 詳細は、inventory schemaを参照してください。

ユーザーが十分な時間をプレイした場合、アイテムドロップを発生させます。

この期間は 2 箇所でカスタマイズできます:
  • インベントリサービス内のアプリケーションレベル: プレイ時間によるアイテム付与。 これはオーバーライドが指定されていないすべての 「playtimegenerator」アイテムに自動的に適用されます。
  • 個々の 「playtimegenerator」アイテム定義内での設定。 この設定は、アプリケーションレベルの設定よりも優先されます。

「playtime item generators」とマークされたアイテム定義のみ生成できます。

通常、この関数は、ゲームやレベル、またはマッチの終了時や、アイテムドロップが発生する可能性がある等のゲーム内の重要なポイントで呼び出します。 playtime generator設定の単位は分であり、それよりも頻繁に呼び出すことは有用ではなく、Steamクライアントではレート制限が適用されます。 Steamサーバーは、頻繁なドロップを防止するために、プレイ時間の計算を行います。 また、サーバーは、プレイヤーのインベントリへのアイテムの追加も管理します。

戻り値: bool
この関数では通常のユーザーによって呼び出された場合には常にtrueを返し、SteamGameServerから呼び出された場合には常にfalseを返します。

pResultHandleを介して新しい結果ハンドルを返します。

注意: 使用後、指定されたインベントリの結果でDestroyResultを必ず呼び出してください。

この関数によって返されるインベントリの結果は、プレイヤーに資格がある場合に付与される新しいアイテムです。 ユーザーに資格がない場合は、空の結果 ('[]') を返します。

例:
void CInventory::FinishGame() { SteamInventory()->TriggerItemDrop( &s_PlaytimeRequestResult, 10 ); }

StartUpdateProperties

SteamInventoryUpdateHandle_t StartUpdateProperties();

現在のユーザーのアイテムの動的プロパティを更新するためにトランザクション要求を開始します。 この呼び出しはユーザーごとにレート制限が適用されるため、プロパティの変更は可能な限り (例: マップやゲームセッションの最後に) 一括して行うべきです。 変更したいすべてのアイテムに対してSetPropertyまたはRemovePropertyを呼び出した後、Steamサーバーにリクエストを送信するためにSubmitUpdatePropertiesを呼び出す必要があります。 処理の結果で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 ); }

注: 使用後、 DestroyResultSubmitUpdateProperties で指定したインベントリ結果で必ず呼び出してください。

戻り値: SteamInventoryUpdateHandle_t

こちらも参照してください: SetProperty, RemoveProperty, SubmitUpdateProperties

SubmitUpdateProperties

bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle );
名前説明
handleSteamInventoryUpdateHandle_tStartUpdateProperties から返された、取引要求に対応する更新ハンドル。
pResultHandleSteamInventoryResult_t *新しいインベントリ結果ハンドルを返します。

現在のユーザーのアイテムの動的プロパティを変更するトランザクション要求を送信します。 StartUpdateProperties を参照。

注意: 使用後、指定されたインベントリの結果で DestroyResult を必ず呼び出してください。

戻り値: bool

こちらも参照してください: StartUpdateProperties, SetProperty, RemoveProperty

RemoveProperty

bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName );
名前説明
handleSteamInventoryUpdateHandle_tStartUpdateProperties から返された、取引要求に対応する更新ハンドル。
nItemIDSteamItemInstanceID_t変更されるアイテムの ID
pchPropertyNameconst char*削除される動的プロパティ

指定されたアイテムの動的プロパティを削除します。

戻り値: bool

こちらも参照してください: StartUpdateProperties, SetProperty, 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_tStartUpdateProperties から返された、取引要求に対応する更新ハンドル。
nItemIDSteamItemInstanceID_t変更されるアイテムの ID
pchPropertyNameconst char*追加または更新される動的プロパティ。
pchPropertyValueconst char*設定される文字列値
bValuebool設定されるブール値
nValueint64設定される 64 ビット整数値
flValuefloat設定される浮動小数点値

動的プロパティを指定されたアイテムに設定します。 サポートされている値の型は、文字列、ブール値、64 ビット整数、および 32 ビット浮動小数点数です。

戻り値: bool

こちらも参照してください: StartUpdateProperties, RemoveProperty, SubmitUpdateProperties

コールバック

以下はSteamAPI_RunCallbacksを呼び出すことによって実行されるコールバックです。 これらの多くは ISteamInventory のメンバー関数への応答として直接実行されます。

SteamInventoryDefinitionUpdate_t

このコールバックは LoadItemDefinitions への応答や、新しいアイテム定義が使用可能になった場合 (例: プレイヤーがまだゲーム中に、新しいアイテムの型を動的に追加) など、アイテム定義が更新された際にトリガーされます。

このコールバックにはフィールドはありません。

関連する関数: LoadItemDefinitions

SteamInventoryEligiblePromoItemDefIDs_t

指定のユーザーに手動で付与「可能」なプロモーションアイテムのリストを要求した際に返されます。 これらの「手動」タイプのプロモーションアイテムは自動的には付与されません。 これの使用例は、毎週使用可能になるアイテムです。

名前説明
m_resultEResultk_EResultOK 成功時、その他の値の場合は失敗を意味します。
m_steamIDCSteamIDこれらのアイテムの対象となるユーザーの Steam ID。
m_numEligiblePromoItemDefsintこのユーザーが受け取れるプロモーションアイテムの数です。 実際の ItemDef を取得するために GetEligiblePromoItemDefinitionIDs で使用する SteamItemDef_t バッファを作成するためにこれを使用します。
m_bCachedDataboolデータがサーバーではなくキャッシュから取得されたことを示します。 これは、ユーザーがログインしていないか、または Steam サーバーに接続できない場合に発生します。

関連する関数: RequestEligiblePromoItemDefinitionsIDs

SteamInventoryFullUpdate_t

GetAllItemsが前回の既知の結果よりも新しい、または更新された結果を正常に返すとトリガーされます。 (インベントリが変更されていない場合や、2つの重複する呼び出し結果が実行中に取り消され、以前の結果が古い、または期限切れであることが既に判明している場合にはトリガーされません)。
通常のSteamInventoryResultReady_tコールバックは、その後もすぐに引き続きトリガーされます。これは便宜的な追加の通知です。

名前説明
m_handleSteamInventoryResult_t新しいインベントリ結果ハンドル。

SteamInventoryResultReady_t

これは、インベントリの結果がk_EResultPendingからその他の完了状態に移行する際に常に実行されます。状態の完全なリストはGetResultStatusを参照してください。 ハンドルごとに常に1個のコールバックがあります。

名前説明
m_handleSteamInventoryResult_t準備完了のインベントリ結果。
m_resultEResultハンドルの新しいステータス。 これは GetResultStatus 呼び出しと同等です。

SteamInventoryStartPurchaseResult_t

StartPurchaseを呼び出した後に返されます。

名前説明
m_resultEResultk_EResultOK 成功時、その他の値の場合は失敗を意味します。
m_ulOrderIDuint64開始された購入に対して自動生成された注文 id
m_ulTransIDuint64開始された購入に対して自動生成された取引 id

SteamInventoryRequestPricesResult_t

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アイテムは破棄されたか、トレード済み、期限切れです。それ以外の場合は無効化されています。 これは結果セットの一部として 1 度だけ設定されるアクション確認フラグです。
k_ESteamItemConsumed1 << 9アイテムの数量は ConsumeItem API を通して 1 つ減少しています。 これは結果セットの一部として 1 度だけ設定されるアクション確認フラグです。

Typedef

これらはISteamInventoryで使用するために定義されたtypedefです。

名前ベース型説明
SteamInventoryResult_tint32非同期インベントリ結果へのハンドル。
SteamItemDef_tint32ゲーム内のアイテムの種類は 32 ビットの「アイテム定義番号」によって識別されます。
有効な定義番号の範囲は 1 ~ 999999999 です。0以下の数値は無効で、10 億( 1x10 ^ 9) 以上の数値は、Steam 内部で使用するために予約されています。
SteamItemInstanceID_tuint64アイテムの各インスタンスは、グローバルに一意のインスタンス ID を持ちます。
この ID はプレイヤーと特定のアイテムインスタンスの組み合わせに固有で、別のプレイヤーに転送されたり、別のアイテムに再利用されたりすることはありません。
SteamInventoryUpdateHandle_tuint64現在のユーザーに対してアイテムの動的プロパティを変更するトランザクション要求を開始する StartUpdateProperties 呼び出しから返されます。

定数

これらはISteamInventoryで使用するために定義された定数です。

名前説明
k_SteamInventoryResultInvalidSteamInventoryResult_t-1無効な Steam インベントリ結果ハンドルです。
k_SteamItemInstanceIDInvalidSteamItemInstanceID_t(SteamItemInstanceID_t)~0無効なアイテムインスタンス id です。 これは通常、操作が失敗したときに返されます。 この値で新しいアイテムインスタンスをすべて初期化することを推奨します。
STEAMINVENTORY_INTERFACE_VERSIONconst char *"STEAMINVENTORY_INTERFACE_V002"
  翻译: