Documentation index for AI agents

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

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

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

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

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

  • カウンター : ネームスペース・ユーザー・カウンター名の組で決まります。リセット種別ごとに 1 つずつ値を保持します。
  • ミッショングループの進行状況 : ネームスペース・ユーザー・ミッショングループの組で決まります。どのタスクを達成したか、どの報酬を受け取ったかをタスク単位で保持します。
操作同じ行を重ねたとき入れ子越し別の対象になる境界
カウンターの加算
IncreaseCounterByUserId
統合され、値が合算される合算されるネームスペース・ユーザー・カウンター名
カウンターの減算
DecreaseCounterByUserId
統合され、値が合算される失敗するネームスペース・ユーザー・カウンター名
カウンターのリセット
ResetCounterByUserId
スコープが結合されて 1 件になる。合計が 20 スコープを超えると結合をやめ、2 つ目以降が黙って捨てられる失敗するネームスペース・ユーザー・カウンター名
カウンターの設定
SetCounterByUserId
同値なら統合。値が違えば発行時にエラー失敗するネームスペース・ユーザー・カウンター名
報酬の受け取り
ReceiveByUserId BatchReceiveByUserId
統合され、タスク名が重複を除いて結合される失敗するネームスペース・ユーザー・ミッショングループ
受け取りの取り消し
RevertReceiveByUserId
同じタスクなら統合。別のタスクなら発行時にエラー失敗するネームスペース・ユーザー・ミッショングループ
検証アクション全般先勝ち。VerifyCounterValueByUserId はしきい値が違う場合だけ両方が判定される読み取りだけなので衝突しない対象・検証タイプ・しきい値

カウンターは加算だけが純粋な増分として書き込まれ、それ以外はカウンター全体を書き換えます。だから加算は入れ子越しでも合流しますが、減算・リセット・設定は境界が同じ他の行と同居できません。減算どうしが問題ないのは、実行前に 1 つの減算に統合されるからです。

違うタスクの受け取りの取り消しを、1 つのトランザクションに並べないでください。 取り消しの書き込み先はミッショングループ単位の 1 行で、タスク単位に境界を割れません。同じタスクの取り消しは何件並べても重複が除かれて 1 件になりますが、違うタスクの取り消しを 2 つ並べるとエラー (400) になります。この検査は入手アクションをまとめる時点で走るので、トランザクションを発行する API だけでなく、報酬を下見するだけの API でも同じエラーになります。受け取りは一括受け取りに畳んで解決されていますが、取り消しには配列を受け取る API がないため同じ手が使えません。

同じミッショングループの受け取りは、いくつ並べても 1 件の一括受け取りにまとめられます。同じタスクを 2 回書いても重複が除かれるだけでエラーにはなりません。まとめた結果のタスク数が受け取り側の上限を超えた場合だけ、実行時に指定数超過のエラー (400) になります。

表にない組み合わせが 1 つあります。同じトランザクションで達成したタスクの報酬を受け取ることはできません。 達成はカウンターの加算の結果として記録されますが、受け取りはトランザクション開始時点の進行状況を見るため、その達成がまだ見えていません。トランザクションを分けてください。

一度に多数のタスクを受け取ると、1 回で確認できる量の内部上限に達することがあります。目安として、1 つのトランザクションで受け取るタスクが十数件を超えるあたりから起こりえます。多数の報酬を受け取るトランザクションが失敗する場合は、複数のトランザクションに分けてください。

検証アクションはトランザクション開始時点の状態を見ます。同じトランザクションで到達するカウンターの値や達成を検証することはできません。

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

カウンターの加算は入れ子越しでも安全です。どちらの経路から届いても 1 回の更新にまとまります。進行状況もタスクが違うかぎり安全です。

カウンターの減算・リセット・設定は違います。同じカウンターを内側と外側の両方から触ると、トランザクションが失敗します。報酬や抽選がミッションのカウンターを動かしていないか確認してください。

制限を回避したい場合

カウンターの加算と設定、受け取りの取り消しは入手アクション、カウンターの減算・リセットと報酬の受け取りは消費アクションです。加算と設定の衝突は acquireActionUseJobQueue を有効にすれば解消できますが、減算・リセットとの同居や、同じタスクの報酬を 2 回受け取ることは消費アクションどうしなので、enableAtomicCommit を無効にしないと解消しません。違うタスクの受け取りの取り消しはどちらの設定でも回避できません。検査はトランザクションの発行時、設定が適用されるより前に走ります。トランザクションを分けてください。

同時実行とリトライ

カウンターの加算は、同時実行のリクエストが何本重なってもコンフリクトしません。同じミッショングループでも、達成・受け取りの対象タスクが違えばコンフリクトしません。

カウンターの減算・リセット・設定、同じタスクの受け取り、管理コンソールやサーバー API からの変更は、リビジョンの照合を伴う書き込みなので、同じ対象への別の更新と重なるとコンフリクト (409) が返ることがあります。カウンターのリセット境界をまたいだ場合にも起こります。リクエストの内容に問題があるわけではないので、リトライすれば成功します。


Verify Action

検証アクション

Gs2Mission:VerifyCompleteByUserId

ユーザーIDを指定してミッションの達成状況を検証

指定されたユーザーのミッションタスクの達成状況または受領状況を検証します。

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
missionGroupNamestring
~ 128文字ミッショングループ名
この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
verifyType文字列列挙型
enum {
  “completed”,
  “notCompleted”,
  “received”,
  “notReceived”,
  “completedAndNotReceived”
}
検証の種類
定義説明
completed条件が達成済みであること
notCompleted条件が未達成であること
received報酬を受け取り済みであること
notReceived報酬が未受け取りであること
completedAndNotReceived条件が達成済みで、報酬を未受け取りであること
missionTaskNamestring
~ 128文字ミッションタスクモデル名
ミッションタスクモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
multiplyValueSpecifyingQuantityboolfalse数量指定した際に、検証に使用する値も乗算するか
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:VerifyCompleteByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "missionGroupName": "[string]ミッショングループ名",
        "userId": "[string]ユーザーID",
        "verifyType": "[string]検証の種類",
        "missionTaskName": "[string]ミッションタスクモデル名",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:VerifyCompleteByUserId
request:
  namespaceName: "[string]ネームスペース名"
  missionGroupName: "[string]ミッショングループ名"
  userId: "[string]ユーザーID"
  verifyType: "[string]検証の種類"
  missionTaskName: "[string]ミッションタスクモデル名"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").verify.verify_complete_by_user_id({
    namespaceName="[string]ネームスペース名",
    missionGroupName="[string]ミッショングループ名",
    userId="[string]ユーザーID",
    verifyType="[string]検証の種類",
    missionTaskName="[string]ミッションタスクモデル名",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Mission:VerifyCounterValueByUserId

ユーザーIDを指定してカウンター値を検証

指定されたユーザーのカウンターのスコープ付き値が指定された条件を満たしているかを検証します。

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
counterNamestring
~ 128文字カウンターモデル名
このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。
verifyType文字列列挙型
enum {
  “less”,
  “lessEqual”,
  “greater”,
  “greaterEqual”,
  “equal”,
  “notEqual”
}
検証の種類
定義説明
lessカウンター値が指定値未満であること
lessEqualカウンター値が指定値以下であること
greaterカウンター値が指定値超過であること
greaterEqualカウンター値が指定値以上であること
equalカウンター値が指定値と一致すること
notEqualカウンター値が指定値と一致しないこと
scopeType文字列列挙型
enum {
  “resetTiming”,
  “verifyAction”
}
“resetTiming”スコープの種類
このスコープ値がリセットタイミングスケジュールに基づくものか、検証アクション条件に基づくものかを示します。
定義説明
resetTimingリセットタイミング
verifyAction検証アクション
resetType文字列列挙型
enum {
  “notReset”,
  “daily”,
  “weekly”,
  “monthly”,
  “days”
}
{scopeType} == “resetTiming”
✓※
リセットタイミング
このスコープ値のリセットタイミングです。カウンター値がリセットされるまでの累積期間を決定します。scopeType が “resetTiming” の場合のみ適用されます。
定義説明
notResetリセットしない
daily毎日
weekly毎週
monthly毎月
days一定日数ごと
※ scopeType が “resetTiming” であれば必須
conditionNamestring{scopeType} == “verifyAction”
✓※
~ 128文字条件名
このスコープ値が対応する検証アクション条件の名前です。この値がどの条件スコープに属するかを識別するために使用されます。scopeType が “verifyAction” の場合のみ適用されます。
※ scopeType が “verifyAction” であれば必須
valuelong00 ~ 9223372036854775805カウント
このスコープの累積カウンター値です。カウンターが増加すると増え、減少すると減ります。値は最大値で上限が設けられ、ゼロを下回ることはありません。
multiplyValueSpecifyingQuantityboolfalse数量指定した際に、検証に使用する値も乗算するか
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:VerifyCounterValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "counterName": "[string]カウンターモデル名",
        "verifyType": "[string]検証の種類",
        "scopeType": "[string]スコープの種類",
        "resetType": "[string]リセットタイミング",
        "conditionName": "[string]条件名",
        "value": "[long]カウント",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:VerifyCounterValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  counterName: "[string]カウンターモデル名"
  verifyType: "[string]検証の種類"
  scopeType: "[string]スコープの種類"
  resetType: "[string]リセットタイミング"
  conditionName: "[string]条件名"
  value: "[long]カウント"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").verify.verify_counter_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    counterName="[string]カウンターモデル名",
    verifyType="[string]検証の種類",
    scopeType="[string]スコープの種類",
    resetType="[string]リセットタイミング",
    conditionName="[string]条件名",
    value="[long]カウント",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Consume Action

消費アクション

Gs2Mission:ReceiveByUserId

ミッション達成報酬を受領する

指定されたユーザーの指定ミッションタスクを受領済みとしてマークします。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
missionGroupNamestring
~ 128文字ミッショングループ名
この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。
missionTaskNamestring
~ 128文字タスク名
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:ReceiveByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "missionGroupName": "[string]ミッショングループ名",
        "missionTaskName": "[string]タスク名",
        "userId": "[string]ユーザーID",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:ReceiveByUserId
request:
  namespaceName: "[string]ネームスペース名"
  missionGroupName: "[string]ミッショングループ名"
  missionTaskName: "[string]タスク名"
  userId: "[string]ユーザーID"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").consume.receive_by_user_id({
    namespaceName="[string]ネームスペース名",
    missionGroupName="[string]ミッショングループ名",
    missionTaskName="[string]タスク名",
    userId="[string]ユーザーID",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Mission:BatchReceiveByUserId

複数のミッションタスクの達成報酬を一括で受領状態にする

同じミッショングループ内の複数のミッションタスクを一括で受領済みとしてマークします。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
missionGroupNamestring
~ 128文字ミッショングループ名
この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
missionTaskNamesList<string>
1 ~ 100 itemsタスク名のリスト
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:BatchReceiveByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "missionGroupName": "[string]ミッショングループ名",
        "userId": "[string]ユーザーID",
        "missionTaskNames": [
            "[string]タスク名"
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:BatchReceiveByUserId
request:
  namespaceName: "[string]ネームスペース名"
  missionGroupName: "[string]ミッショングループ名"
  userId: "[string]ユーザーID"
  missionTaskNames: 
    - "[string]タスク名"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").consume.batch_receive_by_user_id({
    namespaceName="[string]ネームスペース名",
    missionGroupName="[string]ミッショングループ名",
    userId="[string]ユーザーID",
    missionTaskNames={
        "[string]タスク名"
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Mission:DecreaseCounterByUserId

ユーザーIDを指定してカウンターを減算

指定されたユーザーのカウンターから指定値を減算します。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
counterNamestring
~ 128文字カウンターモデル名
このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
valuelong
1 ~ 9223372036854775805減算する値
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:DecreaseCounterByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "counterName": "[string]カウンターモデル名",
        "userId": "[string]ユーザーID",
        "value": "[long]減算する値",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:DecreaseCounterByUserId
request:
  namespaceName: "[string]ネームスペース名"
  counterName: "[string]カウンターモデル名"
  userId: "[string]ユーザーID"
  value: "[long]減算する値"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").consume.decrease_counter_by_user_id({
    namespaceName="[string]ネームスペース名",
    counterName="[string]カウンターモデル名",
    userId="[string]ユーザーID",
    value="[long]減算する値",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Mission:ResetCounterByUserId

ユーザーIDを指定してカウンターをリセット

指定されたユーザーの指定されたスコープのカウンター値をリセットします。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
counterNamestring
~ 128文字カウンターモデル名
このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。
scopesList<ScopedValue>
1 ~ 20 itemsスコープリスト
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:ResetCounterByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "counterName": "[string]カウンターモデル名",
        "scopes": [
            {
                "scopeType": "[string]スコープの種類",
                "resetType": "[string]リセットタイミング",
                "conditionName": "[string]条件名",
                "value": "[long]カウント",
                "nextResetAt": "[long]次回リセットタイミング",
                "updatedAt": "[long]最終更新日時"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:ResetCounterByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  counterName: "[string]カウンターモデル名"
  scopes: 
    - scopeType: "[string]スコープの種類"
      resetType: "[string]リセットタイミング"
      conditionName: "[string]条件名"
      value: "[long]カウント"
      nextResetAt: "[long]次回リセットタイミング"
      updatedAt: "[long]最終更新日時"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").consume.reset_counter_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    counterName="[string]カウンターモデル名",
    scopes={
        {
            scopeType="[string]スコープの種類",
            resetType="[string]リセットタイミング",
            conditionName="[string]条件名",
            value="[long]カウント",
            nextResetAt="[long]次回リセットタイミング",
            updatedAt="[long]最終更新日時"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})

Acquire Action

入手アクション

Gs2Mission:RevertReceiveByUserId

ミッション達成報酬を未受領状態にする

ミッションタスクの受領状態を未受領に戻します。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
missionGroupNamestring
~ 128文字ミッショングループ名
この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。
missionTaskNamestring
~ 128文字タスク名
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:RevertReceiveByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "missionGroupName": "[string]ミッショングループ名",
        "missionTaskName": "[string]タスク名",
        "userId": "[string]ユーザーID",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:RevertReceiveByUserId
request:
  namespaceName: "[string]ネームスペース名"
  missionGroupName: "[string]ミッショングループ名"
  missionTaskName: "[string]タスク名"
  userId: "[string]ユーザーID"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").acquire.revert_receive_by_user_id({
    namespaceName="[string]ネームスペース名",
    missionGroupName="[string]ミッショングループ名",
    missionTaskName="[string]タスク名",
    userId="[string]ユーザーID",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Mission:IncreaseCounterByUserId

ユーザーIDを指定してカウンターを加算

指定されたユーザーのカウンターに指定値を加算します。
加算後、このカウンターを参照するすべてのミッションタスクが自動的に再評価され、新たに達成されたミッションが changedCompletes レスポンスで返されます。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
counterNamestring
~ 128文字カウンターモデル名
このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
valuelong
1 ~ 9223372036854775805加算する値
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:IncreaseCounterByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "counterName": "[string]カウンターモデル名",
        "userId": "[string]ユーザーID",
        "value": "[long]加算する値",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:IncreaseCounterByUserId
request:
  namespaceName: "[string]ネームスペース名"
  counterName: "[string]カウンターモデル名"
  userId: "[string]ユーザーID"
  value: "[long]加算する値"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").acquire.increase_counter_by_user_id({
    namespaceName="[string]ネームスペース名",
    counterName="[string]カウンターモデル名",
    userId="[string]ユーザーID",
    value="[long]加算する値",
    timeOffsetToken="[string]タイムオフセットトークン",
})

Gs2Mission:SetCounterByUserId

ユーザーIDを指定してカウンターを設定

指定されたユーザーのカウンターのスコープ付き値を直接設定し、既存の値を置き換えます。
変更前と変更後のカウンター状態、および新たに達成されたミッションが changedCompletes レスポンスで返されます。

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

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

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
counterNamestring
~ 128文字カウンターモデル名
このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。
userIdstring
~ 128文字ユーザーID
#{userId} と設定することでログイン中のユーザーIDに置換されます。
valuesList<ScopedValue>0 ~ 20 items設定する値のリスト
timeOffsetTokenstring~ 1024文字タイムオフセットトークン
{
    "action": "Gs2Mission:SetCounterByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "counterName": "[string]カウンターモデル名",
        "userId": "[string]ユーザーID",
        "values": [
            {
                "scopeType": "[string]スコープの種類",
                "resetType": "[string]リセットタイミング",
                "conditionName": "[string]条件名",
                "value": "[long]カウント",
                "nextResetAt": "[long]次回リセットタイミング",
                "updatedAt": "[long]最終更新日時"
            }
        ],
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
action: Gs2Mission:SetCounterByUserId
request:
  namespaceName: "[string]ネームスペース名"
  counterName: "[string]カウンターモデル名"
  userId: "[string]ユーザーID"
  values: 
    - scopeType: "[string]スコープの種類"
      resetType: "[string]リセットタイミング"
      conditionName: "[string]条件名"
      value: "[long]カウント"
      nextResetAt: "[long]次回リセットタイミング"
      updatedAt: "[long]最終更新日時"
  timeOffsetToken: "[string]タイムオフセットトークン"
transaction.service("mission").acquire.set_counter_by_user_id({
    namespaceName="[string]ネームスペース名",
    counterName="[string]カウンターモデル名",
    userId="[string]ユーザーID",
    values={
        {
            scopeType="[string]スコープの種類",
            resetType="[string]リセットタイミング",
            conditionName="[string]条件名",
            value="[long]カウント",
            nextResetAt="[long]次回リセットタイミング",
            updatedAt="[long]最終更新日時"
        }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})