GS2-Inventory トランザクションアクション

検証/消費/入手の各トランザクションアクションの仕様

アクションの組み合わせと同時実行

すべてのサービスに共通する前提は トランザクションアクションの組み合わせ にまとめています。先にそちらを読んでください。この節の残りは GS2-Inventory 固有の内容です。

GS2-Inventory のトランザクションアクションは 4 種類の対象を扱います。

  • アイテム : ネームスペース・ユーザー・インベントリ・アイテムモデルの組で決まります。そのアイテムのスタックと、スタックに付いた参照をまとめて保持します。スタックはアイテムセット名で区別されるひとまとまりで、有効期限を分けたい場合などに 1 つのアイテムが複数のスタックを持てます。
  • ビッグアイテム : 同じ組で決まります。通常のアイテムより大きな数を扱える所持数を 1 つ保持します。アイテムとは名前が同じでも別の対象です。
  • シンプルインベントリ : ネームスペース・ユーザー・インベントリの組で決まります。1 つの中にすべてのシンプルアイテムの所持数を保持しますが、書き込みはアイテム名ごとに分かれます。
  • インベントリの容量 : ネームスペース・ユーザー・インベントリの組で決まります。最大容量と使用量を別々に保持します。
操作 同じ行を重ねたとき 入れ子越し 別の対象になる境界 直列実行モード有効時
アイテムの入手
AcquireItemSetByUserId
同じスタックなら統合され、個数が合算される。違うスタックへの入手を並べると失敗する 失敗する インベントリ・アイテムモデル (アイテム) 成立する。同じトランザクション内で違うスタックへの入手を並べた場合も、入れ子越しの場合も、どちらも失敗しなくなる。各アクションが直前のアクションの結果を見て実行されるため
アイテムの入手 (グレード指定)
AcquireItemSetWithGradeByUserId
スタックを 1 つ作る。同じアイテムへの 2 件目は黙って捨てられる 失敗する インベントリ・アイテムモデル (アイテム) 入れ子越しでも成立する。ただし同じトランザクション内の場合とは結果が違う。1 件にまとめられなくなるため、同じアイテムへの 2 件目は捨てられずに 2 つ目のスタックを作る
アイテムの消費
ConsumeItemSetByUserId
統合され、個数が合算される 失敗する インベントリ・アイテムモデル (アイテム) 成立する。入れ子越しでも合算され、同じアイテムへの入手と同じトランザクションに置けるようになる
参照の追加
AddReferenceOfByUserId
スタックと参照先がどちらも同じなら統合される。片方でも違うと失敗する 失敗する インベントリ・アイテムモデル (アイテム) スタックや参照先が違っても、入れ子越しでも成立する。各アクションがアイテムを都度読み直すため、自分の追加が直前のアクションの書き込みの上に積み重なる
参照の削除
DeleteReferenceOfByUserId
スタックと参照先がどちらも同じなら統合される。片方でも違うと失敗する 失敗する インベントリ・アイテムモデル (アイテム) 参照の追加と同じ理由で、スタックや参照先が違っても、入れ子越しでも成立する
ビッグアイテムの入手
AcquireBigItemByUserId
統合され、個数が合算される 失敗する インベントリ・アイテムモデル (ビッグアイテム) 成立する。入れ子越しでも合算される
ビッグアイテムの消費
ConsumeBigItemByUserId
統合され、個数が合算される 失敗する インベントリ・アイテムモデル (ビッグアイテム) 成立する。入れ子越しでも合算される
ビッグアイテムの設定
SetBigItemByUserId
同値なら統合。値が違えば発行時にエラー 失敗する インベントリ・アイテムモデル (ビッグアイテム) 入れ子越しでも成立する。同値なら通り、値が違えば後から実行された方の値になる
シンプルアイテムの入手・消費
AcquireSimpleItemsByUserId ConsumeSimpleItemsByUserId
混在してよい。アイテムごとに統合され、個数が合算される 合算される インベントリ・アイテム名 変わらない。もともと合算されて成立する
シンプルアイテムの設定
SetSimpleItemsByUserId
同値なら統合。値が違えば発行時にエラー 失敗する インベントリ・アイテム名 同値なら入れ子越しでも成立する。値が違う場合は引き続きエラー (400)。所持数の絶対指定なので、後から実行された方が先の値を黙って上書きすることは許されない
容量の加算
AddCapacityByUserId
統合され、合算される 合算される インベントリ・最大容量 変わらない。もともと合算されて成立する
容量の設定
SetCapacityByUserId
同値なら統合。値が違えば発行時にエラー 失敗する インベントリ・最大容量 入れ子越しでも成立する。同値なら通り、値が違えば後から実行された方の値になる
所持数の検証
VerifyItemSetByUserId VerifySimpleItemByUserId VerifyBigItemByUserId
multiplyValueSpecifyingQuantity 未指定なら、検証タイプが greater greaterEqual のときしきい値が合算され、less lessEqual equal notEqual はまったく同じ検証が 1 件にまとめられる。明示的に指定した場合は検証タイプによらずその指定に従う 読み取りだけなので衝突しない インベントリ・アイテムモデル・アイテムセット (指定できるアクションの場合)・検証タイプ 変わらない。読み取りだけなのでもともと衝突しない
容量の検証
VerifyInventoryCurrentMaxCapacityByUserId
まったく同じ検証は 1 件にまとめられる 読み取りだけなので衝突しない インベントリ・検証タイプ・しきい値 変わらない。読み取りだけなのでもともと衝突しない
参照の検証
VerifyReferenceOfByUserId
まったく同じ検証は 1 件にまとめられる。しきい値を持たないため常にこの扱い 読み取りだけなので衝突しない アイテム・検証タイプ・参照先 変わらない。読み取りだけなのでもともと衝突しない

グレードを指定した入手は、同じアイテムに対して 1 トランザクションにつき 1 件までにしてください。 このアクションは個数を持たず、同じアイテムへの 2 件目はエラーにならないまま捨てられます。アイテムが違えばそれぞれ実行されます。

在庫数の検証 (VerifyItemSetByUserId VerifySimpleItemByUserId VerifyBigItemByUserId) は、しきい値が 1 個あたりの量なので既定で合算されます。最大容量の検証 (VerifyInventoryCurrentMaxCapacityByUserId) はインベントリの状態を見るものなので既定では合算されません。 最大容量でも合算したい場合は multiplyValueSpecifyingQuantity を明示的に true にしてください。

参照の追加・削除は、1 つのアクションで複数の参照先を指定する API がありません。同じアイテムに 2 つの参照を付けたい場合はトランザクションを分けてください。

同じ個数の入手が内側と外側から届いた場合は失敗せず、1 件にまとめられます。 抽選 2 本がどちらも同じアイテムを 1 個配ると、入るのは 1 個だけでエラーは出ません。個数が違えば失敗するので、静かに合わないのは個数が一致したときだけです。消費も同様です。

アイテムとビッグアイテムは、行が分かれていても境界が同じです。同じアイテムを触る 2 つの行を 1 つのトランザクションに入れると失敗します。入手と消費、入手と参照の追加、といった組み合わせがこれに当たります。

直列実行モード(enableSequentialExecution または TransactionSettingV2)を有効にすると、この制約はなくなります。アクションが 1 件ずつ実行され、それぞれが直前のアクションの結果を見た状態でアイテムを読むため、同じアイテムへの入手と消費、入手と参照の変更を 1 つのトランザクションに入れられるようになります。

アイテムの入手・消費は容量の使用量も更新しますが、こちらは最大容量とは別の属性なので、容量の加算・設定と衝突することはありません。

スタック上限や容量を超えた入手はエラーになりません。 収まらなかったぶんはオーバーフローとして扱われ、ネームスペースに設定があれば GS2-Inbox などへ転送されます。設定がなければ失われます。統合されて個数が合算されると、単独なら収まっていた入手が上限に触れることがあるので、オーバーフローの受け皿を用意していない場合は注意してください。

打ち切られる条件は 3 つです。スタック上限まで詰めたうえで新しいスタックを作れないとき、つまり複数スタックが許可されていないか、インベントリの容量に空きがないときと、1 つのアイテムのスタック数が上限に達したときです。アイテムセット名を明示した入手は、そのスタックに収まらなかったぶんがそのままオーバーフローになります。

シンプルアイテムはアイテム名ごとに書き込みが分かれるので、違うアイテムであればいくつ並べても衝突しません。統合後の合計が所持数を超える消費はコンフリクト (409) として拒否され、何も消費されません。

検証アクションはトランザクション開始時点の状態を見ます。同じトランザクションで到達する所持数や容量を検証することはできません。

入れ子になったトランザクションに注意

シンプルアイテムと容量は入れ子越しでも安全です。値ごとに書き込むので、どちらの経路から届いても 1 回の更新にまとまります。

アイテムとビッグアイテムは違います。同じアイテムを内側と外側の両方から更新すると、行が同じでもトランザクションが失敗します。報酬や抽選が配るアイテムを外側でも触っていないか確認してください。

直列実行モードを有効にすると、この失敗も起こらなくなります。内側のトランザクションは外側と同じ直列実行の区間で実行されるようになるため、両方の経路から更新されたアイテムは衝突する代わりに統合されます。

制限を回避したい場合

アイテムの入手、参照の追加・削除、容量とシンプルアイテムとビッグアイテムの設定は入手アクション、アイテムの消費は消費アクションです。入手アクションどうしの衝突は acquireActionUseJobQueue を有効にすれば解消できますが、入手と消費の同居は enableAtomicCommit を無効にしないと解消しません。

同時実行とリトライ

シンプルアイテムの入手・消費と、容量の加算は、同時実行のリクエストが何本重なってもコンフリクトしません。シンプルアイテムの例外は、同時に走った消費の合計が所持数を超えた場合で、このときはコンフリクト (409) になります。リトライすればその時点で所持数が足りていれば成功します。

アイテム、ビッグアイテム、容量の設定、管理コンソールやサーバー API からの変更は、リビジョンの照合を伴う書き込みなので、同じ対象への別の更新と重なるとコンフリクト (409) が返ることがあります。とくに容量の設定はインベントリ全体のリビジョンを見るため、同じインベントリへのアイテムの出し入れと重なっただけでも起こります。リクエストの内容に問題があるわけではないので、リトライすれば成功します。


Verify Action

検証アクション

Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId

ユーザーIDを指定してインベントリの最大容量を検証

指定されたユーザーの現在の最大インベントリ容量が指定された条件を満たすことを検証します。
6つの比較演算子をサポートします:less、lessEqual、greater、greaterEqual、equal、notEqual。
検証にはバフ適用後の容量値(GS2-Buff からのアクティブなバフ効果を反映)が使用されます。

数量指定可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
inventoryName string
✓
~ 128文字 インベントリモデル名
このインベントリの構造と容量設定を定義するインベントリモデルの名前です。ユーザーのインベントリインスタンスをモデル定義にリンクし、使用可能なアイテムの種類と容量制限を決定します。
verifyType 文字列列挙型
enum {
  “less”,
  “lessEqual”,
  “greater”,
  “greaterEqual”,
  “equal”,
  “notEqual”
}
✓
検証の種類
定義説明
less現在のインベントリの最大容量が指定値未満であること
lessEqual現在のインベントリの最大容量が指定値以下であること
greater現在のインベントリの最大容量が指定値超過であること
greaterEqual現在のインベントリの最大容量が指定値以上であること
equal現在のインベントリの最大容量が指定値と一致すること
notEqual現在のインベントリの最大容量が指定値と一致しないこと
currentInventoryMaxCapacity int
✓
0 ~ 2147483646 現在のインベントリの最大容量
multiplyValueSpecifyingQuantity bool true 数量指定した際に、検証に使用する値も乗算するか
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "inventoryName": "[string]インベントリモデル名",
        "verifyType": "[string]検証の種類",
        "currentInventoryMaxCapacity": "[int]現在のインベントリの最大容量",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  inventoryName: "[string]インベントリモデル名"
  verifyType: "[string]検証の種類"
  currentInventoryMaxCapacity: "[int]現在のインベントリの最大容量"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").verify.verify_inventory_current_max_capacity_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    inventoryName="[string]インベントリモデル名",
    verifyType="[string]検証の種類",
    currentInventoryMaxCapacity="[int]現在のインベントリの最大容量",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:VerifyItemSetByUserId

ユーザーIDを指定してアイテムセットの所持数量の検証

指定されたユーザーの合計アイテム数量が指定された条件を満たすことを検証します。
数量は指定されたアイテムタイプのすべてのアイテムセットを合算して計算されます。
6つの比較演算子をサポートします:less、lessEqual、greater、greaterEqual、equal、notEqual。

数量指定可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
inventoryName string
✓
~ 128文字 インベントリモデル名
インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
verifyType 文字列列挙型
enum {
  “less”,
  “lessEqual”,
  “greater”,
  “greaterEqual”,
  “equal”,
  “notEqual”
}
✓
検証の種類
定義説明
less所持数量が指定値未満であること
lessEqual所持数量が指定値以下であること
greater所持数量が指定値超過であること
greaterEqual所持数量が指定値以上であること
equal所持数量が指定値と一致すること
notEqual所持数量が指定値と一致しないこと
itemSetName string ~ 36文字 アイテムセットを識別する名前
count long
✓
0 ~ 9223372036854775805 所持数量
multiplyValueSpecifyingQuantity bool true 数量指定した際に、検証に使用する値も乗算するか
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:VerifyItemSetByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "inventoryName": "[string]インベントリモデル名",
        "itemName": "[string]アイテムモデル名",
        "verifyType": "[string]検証の種類",
        "itemSetName": "[string]アイテムセットを識別する名前",
        "count": "[long]所持数量",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:VerifyItemSetByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  inventoryName: "[string]インベントリモデル名"
  itemName: "[string]アイテムモデル名"
  verifyType: "[string]検証の種類"
  itemSetName: "[string]アイテムセットを識別する名前"
  count: "[long]所持数量"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").verify.verify_item_set_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    inventoryName="[string]インベントリモデル名",
    itemName="[string]アイテムモデル名",
    verifyType="[string]検証の種類",
    itemSetName="[string]アイテムセットを識別する名前",
    count="[long]所持数量",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:VerifyReferenceOfByUserId

ユーザーIDを指定してアイテムの参照元を検証

指定ユーザーのアイテムセット上の参照元の状態を検証します。
4つの検証タイプをサポート: not_entry(参照元が未登録)、already_entry(参照元が登録済み)、empty(参照元がゼロ)、not_empty(参照元が1つ以上存在)。
条件が満たされない場合はエラーが返されます。

数量指定可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
このアイテムセットを含むインベントリモデルの名前です。itemNameと組み合わせて、この所持品がどのインベントリとアイテムの種類に属するかを識別するために使用されます。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
itemSetName string
✓
UUID ~ 36文字 アイテムセットを識別する名前
アイテムセットの一意な名前を保持します。
名前は UUID(Universally Unique Identifier)フォーマットで自動的に生成され、各アイテムセットを識別するために使用されます。
referenceOf string
✓
~ 1024文字 参照元
装備スロットや編成バインドなど、このアイテムセットへの外部参照を表す文字列識別子です。インベントリモデルでprotectReferencedItemが有効な場合、参照元を持つアイテムセットは消費または削除できません。
verifyType 文字列列挙型
enum {
  “not_entry”,
  “already_entry”,
  “empty”,
  “not_empty”
}
✓
検証の種類
定義説明
not_entry指定した参照元がまだ登録されていないこと
already_entry指定した参照元が既に登録されていること
empty参照元として登録されている要素がゼロであること
not_empty参照元として登録されている要素が1以上であること
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:VerifyReferenceOfByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]アイテムモデル名",
        "itemSetName": "[string]アイテムセットを識別する名前",
        "referenceOf": "[string]参照元",
        "verifyType": "[string]検証の種類",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:VerifyReferenceOfByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]アイテムモデル名"
  itemSetName: "[string]アイテムセットを識別する名前"
  referenceOf: "[string]参照元"
  verifyType: "[string]検証の種類"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").verify.verify_reference_of_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]アイテムモデル名",
    itemSetName="[string]アイテムセットを識別する名前",
    referenceOf="[string]参照元",
    verifyType="[string]検証の種類",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:VerifySimpleItemByUserId

ユーザーIDを指定してシンプルアイテムの所持数量を検証

指定されたユーザーのシンプルアイテムの数量が指定された条件を満たすことを検証します。
6つの比較演算子をサポートします:less、lessEqual、greater、greaterEqual、equal、notEqual。

数量指定可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
inventoryName string
✓
~ 128文字 シンプルインベントリモデル名
シンプルインベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
itemName string
✓
~ 128文字 シンプルアイテムモデル名
このレコードに格納されているアイテムの種類を定義するシンプルアイテムモデルの名前です。この所持品がどのアイテム定義に対応するかを識別するために使用されます。
verifyType 文字列列挙型
enum {
  “less”,
  “lessEqual”,
  “greater”,
  “greaterEqual”,
  “equal”,
  “notEqual”
}
✓
検証の種類
定義説明
less所持数量が指定値未満であること
lessEqual所持数量が指定値以下であること
greater所持数量が指定値超過であること
greaterEqual所持数量が指定値以上であること
equal所持数量が指定値と一致すること
notEqual所持数量が指定値と一致しないこと
count long
✓
0 ~ 9223372036854775805 所持数量
multiplyValueSpecifyingQuantity bool true 数量指定した際に、検証に使用する値も乗算するか
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:VerifySimpleItemByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "inventoryName": "[string]シンプルインベントリモデル名",
        "itemName": "[string]シンプルアイテムモデル名",
        "verifyType": "[string]検証の種類",
        "count": "[long]所持数量",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:VerifySimpleItemByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  inventoryName: "[string]シンプルインベントリモデル名"
  itemName: "[string]シンプルアイテムモデル名"
  verifyType: "[string]検証の種類"
  count: "[long]所持数量"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").verify.verify_simple_item_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    inventoryName="[string]シンプルインベントリモデル名",
    itemName="[string]シンプルアイテムモデル名",
    verifyType="[string]検証の種類",
    count="[long]所持数量",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:VerifyBigItemByUserId

ユーザーIDを指定して巨大アイテムの所持数量を検証

指定ユーザーの巨大アイテム数量が指定された条件を満たすかどうかを検証します。
6つの比較演算子をサポート: less, lessEqual, greater, greaterEqual, equal, notEqual。
比較は文字列ベースの数量に対して任意精度演算で実行されます。
条件が満たされない場合はエラーが返され、満たされる場合はリクエストが成功します。

数量指定可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
inventoryName string
✓
~ 128文字 巨大インベントリモデル名
巨大インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
itemName string
✓
~ 128文字 巨大アイテムモデル名
このレコードに格納されているアイテムの種類を定義する巨大アイテムモデルの名前です。この巨大アイテムの所持品がどのアイテム定義に対応するかを識別するために使用されます。
verifyType 文字列列挙型
enum {
  “less”,
  “lessEqual”,
  “greater”,
  “greaterEqual”,
  “equal”,
  “notEqual”
}
✓
検証の種類
定義説明
less所持数量が指定値未満であること
lessEqual所持数量が指定値以下であること
greater所持数量が指定値超過であること
greaterEqual所持数量が指定値以上であること
equal所持数量が指定値と一致すること
notEqual所持数量が指定値と一致しないこと
count string
✓
~ 1024文字 所持数量
最大1024桁までの整数値文字列
multiplyValueSpecifyingQuantity bool true 数量指定した際に、検証に使用する値も乗算するか
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:VerifyBigItemByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "inventoryName": "[string]巨大インベントリモデル名",
        "itemName": "[string]巨大アイテムモデル名",
        "verifyType": "[string]検証の種類",
        "count": "[string]所持数量",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:VerifyBigItemByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  inventoryName: "[string]巨大インベントリモデル名"
  itemName: "[string]巨大アイテムモデル名"
  verifyType: "[string]検証の種類"
  count: "[string]所持数量"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").verify.verify_big_item_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    inventoryName="[string]巨大インベントリモデル名",
    itemName="[string]巨大アイテムモデル名",
    verifyType="[string]検証の種類",
    count="[string]所持数量",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Consume Action

消費アクション

Gs2Inventory:ConsumeItemSetByUserId

ユーザーIDを指定してアイテムセットを消費

指定されたユーザーのインベントリ内の特定アイテムの数量を減少させます。
itemSetName を指定すると、その特定のスタックのみが消費対象になります。指定しない場合、そのアイテムタイプのすべてのスタックから消費されます。
アイテムセットの数量がゼロになると、自動的に削除されます。
十分なアイテムがない場合、Insufficient エラーが返されます。

数量指定可能なアクション:はい

反転可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
このアイテムセットを含むインベントリモデルの名前です。itemNameと組み合わせて、この所持品がどのインベントリとアイテムの種類に属するかを識別するために使用されます。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
consumeCount long
✓
1 ~ 9223372036854775805 消費する量
itemSetName string ~ 36文字 アイテムセットを識別する名前
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:ConsumeItemSetByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]アイテムモデル名",
        "consumeCount": "[long]消費する量",
        "itemSetName": "[string]アイテムセットを識別する名前",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:ConsumeItemSetByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]アイテムモデル名"
  consumeCount: "[long]消費する量"
  itemSetName: "[string]アイテムセットを識別する名前"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").consume.consume_item_set_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]アイテムモデル名",
    consumeCount="[long]消費する量",
    itemSetName="[string]アイテムセットを識別する名前",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:ConsumeSimpleItemsByUserId

ユーザーIDを指定してシンプルアイテムを消費

消費数量のバッチを使用して、指定されたユーザーのシンプルインベントリ内のアイテム数量を減少させます。
単一のアトミック操作で複数のアイテムを消費できます。いずれかのアイテムの数量が不足している場合、操作全体が失敗します。

数量指定可能なアクション:いいえ

反転可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 シンプルインベントリモデル名
シンプルインベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
consumeCounts List<ConsumeCount>
✓
1 ~ 100 items シンプルアイテムの消費数量のリスト
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:ConsumeSimpleItemsByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]シンプルインベントリモデル名",
        "userId": "[string]ユーザーID",
        "consumeCounts": [
            {
                "itemName": "[string]シンプルアイテムモデル名",
                "count": "[long]消費する量"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:ConsumeSimpleItemsByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]シンプルインベントリモデル名"
  userId: "[string]ユーザーID"
  consumeCounts: 
    - itemName: "[string]シンプルアイテムモデル名"
      count: "[long]消費する量"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").consume.consume_simple_items_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]シンプルインベントリモデル名",
    userId="[string]ユーザーID",
    consumeCounts={
        {
            itemName="[string]シンプルアイテムモデル名",
            count="[long]消費する量"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:ConsumeBigItemByUserId

ユーザーIDを指定して巨大アイテムを消費

任意精度演算を使用して、指定ユーザーの巨大アイテム数量から指定された数量を減算します。
consumeCount は最大1024桁の有効な整数文字列でなければなりません。
現在の数量が不足している場合、Insufficient エラーが返され、減算は行われません。
ネームスペース設定により、巨大アイテム消費時にカスタムロジックを実行する GS2-Script を設定できます。

数量指定可能なアクション:はい

反転可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 巨大インベントリモデル名
巨大インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 巨大アイテムモデル名
巨大アイテムモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
consumeCount string
✓
~ 1024文字 巨大アイテムの消費数量
最大1024桁までの整数値文字列
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:ConsumeBigItemByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]巨大インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]巨大アイテムモデル名",
        "consumeCount": "[string]巨大アイテムの消費数量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:ConsumeBigItemByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]巨大インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]巨大アイテムモデル名"
  consumeCount: "[string]巨大アイテムの消費数量"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").consume.consume_big_item_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]巨大インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]巨大アイテムモデル名",
    consumeCount="[string]巨大アイテムの消費数量",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Acquire Action

入手アクション

Gs2Inventory:AddCapacityByUserId

ユーザーIDを指定してインベントリのキャパシティサイズを加算

指定された量だけユーザーのインベントリ容量を増加させます。
結果の容量はインベントリモデルの maxCapacity を超えることはできません。
インベントリがまだ存在しない場合、initialCapacity で自動的に作成された後、指定された値が加算されます。

数量指定可能なアクション:はい

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
このインベントリの構造と容量設定を定義するインベントリモデルの名前です。ユーザーのインベントリインスタンスをモデル定義にリンクし、使用可能なアイテムの種類と容量制限を決定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
addCapacityValue int
✓
1 ~ 2147483646 加算するキャパシティサイズ
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:AddCapacityByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "userId": "[string]ユーザーID",
        "addCapacityValue": "[int]加算するキャパシティサイズ",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:AddCapacityByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  userId: "[string]ユーザーID"
  addCapacityValue: "[int]加算するキャパシティサイズ"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.add_capacity_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    userId="[string]ユーザーID",
    addCapacityValue="[int]加算するキャパシティサイズ",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:SetCapacityByUserId

ユーザーIDを指定してインベントリのキャパシティサイズを設定

ユーザーのインベントリ容量を指定された絶対値に設定します。
更新前後のインベントリ状態を両方返すため、新旧の容量値を比較できます。
新しい容量値はインベントリモデルの maxCapacity を超えることはできません。

数量指定可能なアクション:はい

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
このインベントリの構造と容量設定を定義するインベントリモデルの名前です。ユーザーのインベントリインスタンスをモデル定義にリンクし、使用可能なアイテムの種類と容量制限を決定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
newCapacityValue int
✓
1 ~ 2147483646 インベントリの新しい最大キャパシティ
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:SetCapacityByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "userId": "[string]ユーザーID",
        "newCapacityValue": "[int]インベントリの新しい最大キャパシティ",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:SetCapacityByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  userId: "[string]ユーザーID"
  newCapacityValue: "[int]インベントリの新しい最大キャパシティ"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.set_capacity_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    userId="[string]ユーザーID",
    newCapacityValue="[int]インベントリの新しい最大キャパシティ",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:AcquireItemSetByUserId

ユーザーIDを指定してアイテムセットを入手

ユーザーのインベントリにアイテムを追加します。既存のアイテムセットに空き(スタック制限未満)がある場合はそこに追加され、そうでない場合は複数スタックが許可されていれば新しいアイテムセットが作成されます。
オプションの expiresAt で、新しく作成されるアイテムセットの有効期限を設定できます。有効期限が既に過去のアイテムは空として扱われます。
createNewItemSet が true の場合、既存のセットに空きがあっても常に新しいアイテムセットが作成されます。
合計数量がインベントリ容量を超える場合、オーバーフロー数量が返され、ネームスペースの設定に応じてオーバーフロー分が GS2-Inbox に転送される場合があります。

数量指定可能なアクション:はい

反転可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
acquireCount long
✓
1 ~ 9223372036854775805 入手する量
expiresAt long 0 有効期限
UNIX 時間・ミリ秒
createNewItemSet bool false 既存のアイテムセットに空きがあったとしても、新しいアイテムセットを作成するか
itemSetName string ~ 36文字 アイテムセットを識別する名前
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:AcquireItemSetByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "itemName": "[string]アイテムモデル名",
        "userId": "[string]ユーザーID",
        "acquireCount": "[long]入手する量",
        "expiresAt": "[long]有効期限",
        "createNewItemSet": "[bool]既存のアイテムセットに空きがあったとしても、新しいアイテムセットを作成するか",
        "itemSetName": "[string]アイテムセットを識別する名前",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:AcquireItemSetByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  itemName: "[string]アイテムモデル名"
  userId: "[string]ユーザーID"
  acquireCount: "[long]入手する量"
  expiresAt: "[long]有効期限"
  createNewItemSet: "[bool]既存のアイテムセットに空きがあったとしても、新しいアイテムセットを作成するか"
  itemSetName: "[string]アイテムセットを識別する名前"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.acquire_item_set_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    itemName="[string]アイテムモデル名",
    userId="[string]ユーザーID",
    acquireCount="[long]入手する量",
    expiresAt="[long]有効期限",
    createNewItemSet="[bool]既存のアイテムセットに空きがあったとしても、新しいアイテムセットを作成するか",
    itemSetName="[string]アイテムセットを識別する名前",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:AcquireItemSetWithGradeByUserId

ユーザーIDを指定して GS2-Grade にグレードを設定しつつ、アイテムセットを1つ入手

アイテムを1つ入手すると同時に、GS2-Grade を通じてグレード値を設定します。
各アイテムが異なるグレード値を持つ品質/ランクシステム(例:異なるステータスの装備)を持つアイテムに使用されます。
常に新しいアイテムセットが作成され(createNewItemSet の動作)、アイテム入手後に GS2-Grade の SetGradeByUserId を通じてグレードが設定されます。

数量指定可能なアクション:いいえ

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
gradeModelId string
✓
~ 1024文字 グレードモデル GRN
gradeValue long
✓
1 ~ 9223372036854775805 設定するグレード値
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:AcquireItemSetWithGradeByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "itemName": "[string]アイテムモデル名",
        "userId": "[string]ユーザーID",
        "gradeModelId": "[string]グレードモデルGRN",
        "gradeValue": "[long]設定するグレード値",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:AcquireItemSetWithGradeByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  itemName: "[string]アイテムモデル名"
  userId: "[string]ユーザーID"
  gradeModelId: "[string]グレードモデルGRN"
  gradeValue: "[long]設定するグレード値"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.acquire_item_set_with_grade_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    itemName="[string]アイテムモデル名",
    userId="[string]ユーザーID",
    gradeModelId="[string]グレードモデルGRN",
    gradeValue="[long]設定するグレード値",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:AddReferenceOfByUserId

ユーザーIDを指定してアイテムに参照元を追加

指定ユーザーの指定されたアイテムセットに参照元文字列を登録します。
参照元はアイテムセットを外部エンティティ(装備スロットやキャラクターなど)に関連付けます。
インベントリモデルで protectReferencedItem が有効な場合、参照元を持つアイテムは消費・削除できなくなり、装備中のアイテムの誤消費を防止できます。

数量指定可能なアクション:いいえ

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
このアイテムセットを含むインベントリモデルの名前です。itemNameと組み合わせて、この所持品がどのインベントリとアイテムの種類に属するかを識別するために使用されます。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
itemSetName string
✓
UUID ~ 36文字 アイテムセットを識別する名前
アイテムセットの一意な名前を保持します。
名前は UUID(Universally Unique Identifier)フォーマットで自動的に生成され、各アイテムセットを識別するために使用されます。
referenceOf string
✓
~ 1024文字 参照元
装備スロットや編成バインドなど、このアイテムセットへの外部参照を表す文字列識別子です。インベントリモデルでprotectReferencedItemが有効な場合、参照元を持つアイテムセットは消費または削除できません。
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:AddReferenceOfByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]アイテムモデル名",
        "itemSetName": "[string]アイテムセットを識別する名前",
        "referenceOf": "[string]参照元",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:AddReferenceOfByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]アイテムモデル名"
  itemSetName: "[string]アイテムセットを識別する名前"
  referenceOf: "[string]参照元"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.add_reference_of_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]アイテムモデル名",
    itemSetName="[string]アイテムセットを識別する名前",
    referenceOf="[string]参照元",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:DeleteReferenceOfByUserId

ユーザーIDを指定してアイテムの参照元を削除

指定ユーザーの指定されたアイテムセットから特定の参照元文字列を削除します。
削除後、protectReferencedItem が有効で他の参照元が残っていない場合、アイテムは再び消費・削除が可能になります。

数量指定可能なアクション:いいえ

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 インベントリモデル名
このアイテムセットを含むインベントリモデルの名前です。itemNameと組み合わせて、この所持品がどのインベントリとアイテムの種類に属するかを識別するために使用されます。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 アイテムモデル名
このセットに格納されているアイテムの種類を定義するアイテムモデルの名前です。inventoryNameと組み合わせて、このアイテムセットのスタック上限と複数スタック動作を決定します。
itemSetName string
✓
UUID ~ 36文字 アイテムセットを識別する名前
アイテムセットの一意な名前を保持します。
名前は UUID(Universally Unique Identifier)フォーマットで自動的に生成され、各アイテムセットを識別するために使用されます。
referenceOf string
✓
~ 1024文字 参照元
装備スロットや編成バインドなど、このアイテムセットへの外部参照を表す文字列識別子です。インベントリモデルでprotectReferencedItemが有効な場合、参照元を持つアイテムセットは消費または削除できません。
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:DeleteReferenceOfByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]アイテムモデル名",
        "itemSetName": "[string]アイテムセットを識別する名前",
        "referenceOf": "[string]参照元",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:DeleteReferenceOfByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]アイテムモデル名"
  itemSetName: "[string]アイテムセットを識別する名前"
  referenceOf: "[string]参照元"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.delete_reference_of_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]アイテムモデル名",
    itemSetName="[string]アイテムセットを識別する名前",
    referenceOf="[string]参照元",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:AcquireSimpleItemsByUserId

ユーザーIDを指定してシンプルアイテムを入手

入手数量のバッチを使用して、ユーザーのシンプルインベントリにアイテムを追加します。
単一のアトミック操作で複数のアイテムを入手できます。acquireCounts 配列で各アイテムの名前と数量を指定します。
通常のアイテムセットとは異なり、シンプルアイテムには容量制限、スタック制限、有効期限がありません。

数量指定可能なアクション:いいえ

反転可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 シンプルインベントリモデル名
シンプルインベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
acquireCounts List<AcquireCount>
✓
1 ~ 100 items シンプルアイテムの入手数量リスト
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:AcquireSimpleItemsByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]シンプルインベントリモデル名",
        "userId": "[string]ユーザーID",
        "acquireCounts": [
            {
                "itemName": "[string]シンプルアイテムモデル名",
                "count": "[long]入手する量"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:AcquireSimpleItemsByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]シンプルインベントリモデル名"
  userId: "[string]ユーザーID"
  acquireCounts: 
    - itemName: "[string]シンプルアイテムモデル名"
      count: "[long]入手する量"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.acquire_simple_items_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]シンプルインベントリモデル名",
    userId="[string]ユーザーID",
    acquireCounts={
        {
            itemName="[string]シンプルアイテムモデル名",
            count="[long]入手する量"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:SetSimpleItemsByUserId

ユーザーIDを指定してシンプルアイテムを設定

単一のアトミック操作で複数のシンプルアイテムの絶対数量を設定します。
counts 配列で各アイテムの名前とターゲット数量を指定します。
入手/消費が相対的な操作であるのに対し、こちらは現在の数量を完全に上書きします。

数量指定可能なアクション:いいえ

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 シンプルインベントリモデル名
シンプルインベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
counts List<HeldCount>
✓
1 ~ 100 items シンプルアイテムの所持数量リスト
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:SetSimpleItemsByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]シンプルインベントリモデル名",
        "userId": "[string]ユーザーID",
        "counts": [
            {
                "itemName": "[string]シンプルアイテムモデル名",
                "count": "[long]所持数量"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:SetSimpleItemsByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]シンプルインベントリモデル名"
  userId: "[string]ユーザーID"
  counts: 
    - itemName: "[string]シンプルアイテムモデル名"
      count: "[long]所持数量"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.set_simple_items_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]シンプルインベントリモデル名",
    userId="[string]ユーザーID",
    counts={
        {
            itemName="[string]シンプルアイテムモデル名",
            count="[long]所持数量"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:AcquireBigItemByUserId

ユーザーIDを指定して巨大アイテムを入手

任意精度演算を使用して、ユーザーの巨大アイテム数量に指定された数量を加算します。
acquireCount は最大1024桁の有効な整数文字列でなければならず、無効な形式はエラーになります。
アイテムがまだ存在しない場合は自動的に作成されます。
ネームスペース設定により、巨大アイテム入手時にカスタムロジックを実行する GS2-Script を設定できます。

数量指定可能なアクション:はい

反転可能なアクション:はい

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 巨大インベントリモデル名
巨大インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 巨大アイテムモデル名
巨大アイテムモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
acquireCount string
✓
~ 1024文字 巨大アイテムの入手数量
最大1024桁までの整数値文字列
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:AcquireBigItemByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]巨大インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]巨大アイテムモデル名",
        "acquireCount": "[string]巨大アイテムの入手数量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:AcquireBigItemByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]巨大インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]巨大アイテムモデル名"
  acquireCount: "[string]巨大アイテムの入手数量"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.acquire_big_item_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]巨大インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]巨大アイテムモデル名",
    acquireCount="[string]巨大アイテムの入手数量",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Inventory:SetBigItemByUserId

ユーザーIDを指定して巨大アイテムを設定

巨大アイテムの数量を指定された絶対値に設定し、現在の数量を完全に置き換えます。
数量は最大1024桁の有効な整数文字列でなければなりません。
アイテムがまだ存在しない場合は自動的に作成されます。
入手・消費のような相対操作とは異なり、正確な値を直接設定します。

数量指定可能なアクション:はい

反転可能なアクション:いいえ

型 有効化条件 必須 デフォルト 値の制限 説明
namespaceName string
✓
~ 128文字 ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
inventoryName string
✓
~ 128文字 巨大インベントリモデル名
巨大インベントリモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userId string
✓
~ 128文字 ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
itemName string
✓
~ 128文字 巨大アイテムモデル名
巨大アイテムモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
count string
✓
~ 1024文字 巨大アイテムの数量
最大1024桁までの整数値文字列
timeOffsetToken string ~ 1024文字 タイムオフセットトークン
{
    "action": "Gs2Inventory:SetBigItemByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "inventoryName": "[string]巨大インベントリモデル名",
        "userId": "[string]ユーザーID",
        "itemName": "[string]巨大アイテムモデル名",
        "count": "[string]巨大アイテムの数量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Inventory:SetBigItemByUserId
request:
  namespaceName: "[string]ネームスペース名"
  inventoryName: "[string]巨大インベントリモデル名"
  userId: "[string]ユーザーID"
  itemName: "[string]巨大アイテムモデル名"
  count: "[string]巨大アイテムの数量"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("inventory").acquire.set_big_item_by_user_id({
    namespaceName="[string]ネームスペース名",
    inventoryName="[string]巨大インベントリモデル名",
    userId="[string]ユーザーID",
    itemName="[string]巨大アイテムモデル名",
    count="[string]巨大アイテムの数量",
    timeOffsetToken="[string]タイムオフセットトークン",
})