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を指定してミッションの達成状況を検証
指定されたユーザーのミッションタスクの達成状況または受領状況を検証します。
数量指定可能なアクション:いいえ
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||||||||
| missionGroupName | string | ✓ | ~ 128文字 | ミッショングループ名 この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。 | ||||||||||||||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||||||||||||||
| verifyType | 文字列列挙型 enum { “completed”, “notCompleted”, “received”, “notReceived”, “completedAndNotReceived” } | ✓ | 検証の種類
| |||||||||||||||
| missionTaskName | string | ✓ | ~ 128文字 | ミッションタスクモデル名 ミッションタスクモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||||||||
| multiplyValueSpecifyingQuantity | bool | false | 数量指定した際に、検証に使用する値も乗算するか | |||||||||||||||
| timeOffsetToken | string | ~ 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を指定してカウンター値を検証
指定されたユーザーのカウンターのスコープ付き値が指定された条件を満たしているかを検証します。
数量指定可能なアクション:はい
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||||||||||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||||||||||||||||
| counterName | string | ✓ | ~ 128文字 | カウンターモデル名 このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。 | ||||||||||||||||
| verifyType | 文字列列挙型 enum { “less”, “lessEqual”, “greater”, “greaterEqual”, “equal”, “notEqual” } | ✓ | 検証の種類
| |||||||||||||||||
| scopeType | 文字列列挙型 enum { “resetTiming”, “verifyAction” } | “resetTiming” | スコープの種類 このスコープ値がリセットタイミングスケジュールに基づくものか、検証アクション条件に基づくものかを示します。
| |||||||||||||||||
| resetType | 文字列列挙型 enum { “notReset”, “daily”, “weekly”, “monthly”, “days” } | {scopeType} == “resetTiming” | ✓※ | リセットタイミング このスコープ値のリセットタイミングです。カウンター値がリセットされるまでの累積期間を決定します。scopeType が “resetTiming” の場合のみ適用されます。
※ scopeType が “resetTiming” であれば必須 | ||||||||||||||||
| conditionName | string | {scopeType} == “verifyAction” | ✓※ | ~ 128文字 | 条件名 このスコープ値が対応する検証アクション条件の名前です。この値がどの条件スコープに属するかを識別するために使用されます。scopeType が “verifyAction” の場合のみ適用されます。 ※ scopeType が “verifyAction” であれば必須 | |||||||||||||||
| value | long | 0 | 0 ~ 9223372036854775805 | カウント このスコープの累積カウンター値です。カウンターが増加すると増え、減少すると減ります。値は最大値で上限が設けられ、ゼロを下回ることはありません。 | ||||||||||||||||
| multiplyValueSpecifyingQuantity | bool | false | 数量指定した際に、検証に使用する値も乗算するか | |||||||||||||||||
| timeOffsetToken | string | ~ 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
ミッション達成報酬を受領する
指定されたユーザーの指定ミッションタスクを受領済みとしてマークします。
数量指定可能なアクション:いいえ
反転可能なアクション:はい
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| missionGroupName | string | ✓ | ~ 128文字 | ミッショングループ名 この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。 | ||
| missionTaskName | string | ✓ | ~ 128文字 | タスク名 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| timeOffsetToken | string | ~ 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
複数のミッションタスクの達成報酬を一括で受領状態にする
同じミッショングループ内の複数のミッションタスクを一括で受領済みとしてマークします。
数量指定可能なアクション:いいえ
反転可能なアクション:いいえ
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| missionGroupName | string | ✓ | ~ 128文字 | ミッショングループ名 この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| missionTaskNames | List<string> | ✓ | 1 ~ 100 items | タスク名のリスト | ||
| timeOffsetToken | string | ~ 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を指定してカウンターを減算
指定されたユーザーのカウンターから指定値を減算します。
数量指定可能なアクション:はい
反転可能なアクション:はい
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| counterName | string | ✓ | ~ 128文字 | カウンターモデル名 このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| value | long | ✓ | 1 ~ 9223372036854775805 | 減算する値 | ||
| timeOffsetToken | string | ~ 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を指定してカウンターをリセット
指定されたユーザーの指定されたスコープのカウンター値をリセットします。
数量指定可能なアクション:いいえ
反転可能なアクション:いいえ
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| counterName | string | ✓ | ~ 128文字 | カウンターモデル名 このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。 | ||
| scopes | List<ScopedValue> | ✓ | 1 ~ 20 items | スコープリスト | ||
| timeOffsetToken | string | ~ 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
ミッション達成報酬を未受領状態にする
ミッションタスクの受領状態を未受領に戻します。
数量指定可能なアクション:いいえ
反転可能なアクション:はい
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| missionGroupName | string | ✓ | ~ 128文字 | ミッショングループ名 この達成状況レコードが属するミッショングループの名前です。ユーザーごと・ミッショングループごとに1つの達成状況レコードが存在します。 | ||
| missionTaskName | string | ✓ | ~ 128文字 | タスク名 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| timeOffsetToken | string | ~ 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 レスポンスで返されます。
数量指定可能なアクション:はい
反転可能なアクション:はい
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| counterName | string | ✓ | ~ 128文字 | カウンターモデル名 このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| value | long | ✓ | 1 ~ 9223372036854775805 | 加算する値 | ||
| timeOffsetToken | string | ~ 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 レスポンスで返されます。
数量指定可能なアクション:いいえ
反転可能なアクション:いいえ
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| counterName | string | ✓ | ~ 128文字 | カウンターモデル名 このカウンターインスタンスの基となるカウンターモデルの名前です。スコープやリセットタイミングを定義するカウンターモデル定義にリンクします。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID#{userId} と設定することでログイン中のユーザーIDに置換されます。 | ||
| values | List<ScopedValue> | 0 ~ 20 items | 設定する値のリスト | |||
| timeOffsetToken | string | ~ 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]タイムオフセットトークン",
})