> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Matchmaking トランザクションアクション

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




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

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

GS2-Matchmaking がトランザクションに指定できるアクションは 1 つで、読み取りしか行いません。

操作 | 同じ行を重ねたとき | 入れ子越し | 別の対象になる境界 | 直列実行モード有効時
--- | --- | --- | --- | ---
参加していることの検証<br>`VerifyIncludeParticipantByUserId` | まったく同じ検証は 1 件にまとめられる | 読み取りだけなので衝突しない | シーズンギャザリング・検証タイプ・対象ユーザー | 変わらない。読み取りだけなのでもともと衝突しない

他の検証アクションと同じく、このアクションもトランザクション開始時点のシーズンギャザリングを見ます。同じトランザクションの中でギャザリングに参加したユーザーは、この判定においてはまだ参加者ではありません。そのため、参加させてからその参加を検証する、という流れを 1 つのトランザクションで行うことはできません。

参加が内側のトランザクション、たとえば抽選の景品や交換の結果として行われる場合も同じです。GS2-Matchmaking 自身には参加を行うトランザクションアクションがないため、参加は必ず API か、他サービスのアクションが呼び出す処理として起こります。そのトランザクションが成立させたものを検証したい場合は、トランザクションを分けてください。

違うユーザーを検証する場合は別の対象なので、どちらも判定されます。

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

このアクションは何も書き込まないので、内側のトランザクションから届く更新と衝突することはありません。できないのは、経路にかかわらず、同じトランザクションが行った変更を見ることです。

### 同時実行とリトライ

このアクションがコンフリクトを返すことはありません。失敗するのは検証そのものが成立しなかった場合だけで、これは結果であってリトライすべきエラーではありません。

---


## Verify Action

検証アクション

### Gs2Matchmaking:VerifyIncludeParticipantByUserId

ユーザーIDを指定して永続ギャザリングにユーザーIDが含まれているかを検証<br>

指定されたユーザーがシーズンギャザリングに参加しているかどうかを検証します。

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| seasonName | string |  | ✓|  |  ~ 128文字 | シーズンモデル名<br>シーズンモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| season | long |  | ✓|  | 0 ~ 9223372036854775805 | シーズン |
| tier | long |  | ✓|  | 0 ~ 9223372036854775805 | ティアー<br>同程度のランクのプレイヤーをグルーピングするためのティアーレベル。<br>SeasonModel で指定された GS2-Experience モデルにおけるプレイヤーのランクによって決定されます。<br>プレイヤーは同じティアーのプレイヤーとのみマッチングされ、公平な対戦が保証されます。 |
| seasonGatheringName | string |  | ✓| UUID |  ~ 128文字 | シーズンギャザリング名<br>シーズンギャザリング固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| verifyType | 文字列列挙型<br>enum {<br>"include",<br>"notInclude"<br>}<br> |  | ✓|  |  | 検証の種類include: シーズンギャザリングに指定したユーザーが含まれていること / notInclude: シーズンギャザリングに指定したユーザーが含まれないこと /  |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Matchmaking:VerifyIncludeParticipantByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "seasonName": "[string]シーズンモデル名",
        "season": "[long]シーズン",
        "tier": "[long]ティアー",
        "seasonGatheringName": "[string]シーズンギャザリング名",
        "userId": "[string]ユーザーID",
        "verifyType": "[string]検証の種類",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Matchmaking:VerifyIncludeParticipantByUserId
request:
  namespaceName: "[string]ネームスペース名"
  seasonName: "[string]シーズンモデル名"
  season: "[long]シーズン"
  tier: "[long]ティアー"
  seasonGatheringName: "[string]シーズンギャザリング名"
  userId: "[string]ユーザーID"
  verifyType: "[string]検証の種類"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("matchmaking").verify.verify_include_participant_by_user_id({
    namespaceName="[string]ネームスペース名",
    seasonName="[string]シーズンモデル名",
    season="[long]シーズン",
    tier="[long]ティアー",
    seasonGatheringName="[string]シーズンギャザリング名",
    userId="[string]ユーザーID",
    verifyType="[string]検証の種類",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---





