GS2-LoginReward マスターデータリファレンス
マスターデータのフォーマットと インポートする各種モデルのリファレンス
マスターデータのフォーマット
{
"version": "2023-07-11",
"bonusModels": [
{
"name": "[string]ログインボーナスモデル名",
"metadata": "[string?]メタデータ",
"mode": "[string enum]モード",
"periodEventId": "[string?]期間イベントGRN",
"resetHour": "[int]リセット時間(UTC)",
"repeat": "[string enum]繰り返し",
"rewards": [
{
"acquireActions": [
{
"action": "[string]入手アクションで実行するアクションの種類",
"request": "[string]アクション実行時に使用されるリクエストのJSON文字列"
}
]
}
],
"missedReceiveRelief": "[string enum]取り逃がし救済機能",
"missedReceiveReliefVerifyActions": [
{
"action": "[string]検証アクションで実行するアクションの種類",
"request": "[string]アクション実行時に使用されるリクエストのJSON文字列"
}
],
"missedReceiveReliefConsumeActions": [
{
"action": "[string]消費アクションで実行するアクションの種類",
"request": "[string]アクション実行時に使用されるリクエストのJSON文字列"
}
]
}
]
}
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
|---|
| version | string | | ✓ | 2023-07-11 | | マスターデータのフォーマットバージョン |
| bonusModels | List<BonusModel> | | | | ~ 100 items | ログインボーナスモデル ログインボーナスモデルにはログインボーナスの配布スケジュールを設定します。 配布スケジュールには《スケジュールモード》と《ストリーミングモード》があります。
スケジュールモードでは、GS2-Schedule のイベントの指定が必須で、そのイベントの開始日からの経過日数でボーナスの配布を行います。 途中で撮り逃しが発生した場合、その分のボーナスは配布されません。
ストリーミングモードでは、毎日ボーナスに設定された報酬を先頭から順番に配布します。 ストリーミングモードでは繰り返しの設定が可能です。その場合、ストリームの終端に達した場合、先頭から再度配布を行います。
スケジュールモード・ストリーミングモード 共に、取り逃がしの救済機能があります。 一定のコストを支払うことで、取り逃がしたボーナスを受け取ることができます。 ただし、GS2-Schedule のイベントが関連づけられている場合、イベントの開始日からの経過日数より先のボーナスは受け取ることができません。 取り逃がし機能はストリーミングモードかつ繰り返しが有効な場合は使用することができません。
スケジュールモード・ストリーミングモード 共に、設定可能なボーナスの最大日数は100日です。 |
モデル
BonusModel
ログインボーナスモデル
ログインボーナスモデルにはログインボーナスの配布スケジュールを設定します。
配布スケジュールには《スケジュールモード》と《ストリーミングモード》があります。
スケジュールモードでは、GS2-Schedule のイベントの指定が必須で、そのイベントの開始日からの経過日数でボーナスの配布を行います。
途中で撮り逃しが発生した場合、その分のボーナスは配布されません。
ストリーミングモードでは、毎日ボーナスに設定された報酬を先頭から順番に配布します。
ストリーミングモードでは繰り返しの設定が可能です。その場合、ストリームの終端に達した場合、先頭から再度配布を行います。
スケジュールモード・ストリーミングモード 共に、取り逃がしの救済機能があります。
一定のコストを支払うことで、取り逃がしたボーナスを受け取ることができます。
ただし、GS2-Schedule のイベントが関連づけられている場合、イベントの開始日からの経過日数より先のボーナスは受け取ることができません。
取り逃がし機能はストリーミングモードかつ繰り返しが有効な場合は使用することができません。
スケジュールモード・ストリーミングモード 共に、設定可能なボーナスの最大日数は100日です。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
|---|
| bonusModelId | string | | ※ | | ~ 1024文字 | ログインボーナスモデル
GRN ※ サーバーが自動で設定 |
| name | string | | ✓ | | ~ 128文字 | ログインボーナスモデル名 ログインボーナスモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| metadata | string | | | | ~ 2048文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 |
| mode | 文字列列挙型 enum { “schedule”, “streaming” }
| | ✓ | | | モード ログインボーナスの配布スケジュールの種類を指定します。 「schedule」モードでは、GS2-Schedule のイベント開始日からの経過日数に基づいて報酬が配布されます。 「streaming」モードでは、カレンダーの日付に関係なく、毎日先頭から順番に報酬が配布されます。 | 定義 | 説明 |
|---|
| “schedule” | スケジュールモード | | “streaming” | ストリーミングモード |
|
| periodEventId | string | | | | ~ 1024文字 | 期間イベント
GRN ログインボーナスを有効化する期間を表す GS2-Schedule のイベントGRN。 スケジュールモードでは必須で、報酬配布の経過日数を計算する起点の開始日を決定します。 ストリーミングモードでは省略可能ですが、指定した場合はイベント開始日からの経過日数より先のボーナスは受け取れなくなります。 |
| resetHour | int | {periodEventId} == "" | ✓※ | | 0 ~ 23 | リセット時間(UTC) 受け取りフラグがリセットされる時刻(0-23、UTC)。 ログインボーナスにおける日付の切り替わりタイミングを決定します。 periodEventId が未指定の場合にのみ必要です。イベントが設定されている場合、リセットタイミングはイベントのスケジュールに従います。 ※ periodEventId が "" であれば 必須 |
| repeat | 文字列列挙型 enum { “enabled”, “disabled” }
| {mode} == “streaming” | ✓※ | | | 繰り返し 全ての報酬を配布し終えた後に、先頭から再度配布を行うかどうか。 ストリーミングモードでのみ有効です。有効にすると、最後の報酬を配布した後に最初の報酬に戻ってループします。 注意: 繰り返しが有効な場合、取り逃がし救済機能は使用できません。 | 定義 | 説明 |
|---|
| “enabled” | 有効 | | “disabled” | 無効 |
※ mode が “streaming” であれば 必須 |
| rewards | List<Reward> | | | | 0 ~ 100 items | 報酬リスト 日毎の報酬の順序付きリスト。各エントリは1日分のログインボーナスに対応し、インデックス 0 から順に配布されます。 スケジュールモードでは、インデックスはイベント開始日からの経過日数に対応します。 ストリーミングモードでは、インデックスはログイン日数に対応します。最大100エントリまで設定可能です。 |
| missedReceiveRelief | 文字列列挙型 enum { “enabled”, “disabled” }
| | | “disabled” | | 取り逃がし救済機能 取り逃がしたボーナスの救済機能を有効にするかどうか。有効にすると、ユーザーは指定されたコスト(消費アクション)を支払うことで、受け取り損ねたボーナスを遡って受け取ることができます。 任意で、救済の許可前に条件を確認する検証アクションも設定できます。 ストリーミングモードかつ繰り返しが有効な場合は使用できません。デフォルトは「disabled」です。 | 定義 | 説明 |
|---|
| “enabled” | 有効 | | “disabled” | 無効 |
|
| missedReceiveReliefVerifyActions | List<VerifyAction> | {missedReceiveRelief} == “enabled” | | [] | 0 ~ 10 items | 取り逃がし救済の検証アクションリスト 取り逃がし救済を許可する前に実行される検証アクションのリスト。 救済処理の前にユーザーの資格などの前提条件をチェックします。最大10個まで設定できます。 missedReceiveRelief が有効な場合にのみ適用されます。 ※ missedReceiveRelief が “enabled” であれば 有効 |
| missedReceiveReliefConsumeActions | List<ConsumeAction> | {missedReceiveRelief} == “enabled” | | [] | 0 ~ 10 items | 取り逃がし救済の消費アクションリスト 取り逃がしたボーナスを救済するためにユーザーが支払うコストを定義する消費アクションのリスト。 例えば、ゲーム内通貨やアイテムを救済コストとして消費するよう設定できます。最大10個まで設定できます。 missedReceiveRelief が有効な場合にのみ適用されます。 ※ missedReceiveRelief が “enabled” であれば 有効 |
Reward
報酬
ログインボーナスの1日分の報酬設定を表します。
各 Reward にはユーザーが受け取るもの(アイテム、通貨、経験値など)を定義する入手アクションのリストが含まれます。
BonusModel の rewards 配列は1日あたり1つの Reward を保持し、順番に配布されます。
報酬の値はバフシステム(BonusModelBuff)を通じて実行時に変更でき、入手アクションにレート乗数を適用できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
|---|
| acquireActions | List<AcquireAction> | | ✓ | | 1 ~ 10 items | 入手アクションリスト この日の報酬としてユーザーに付与されるリソースを定義する入手アクションのリスト。 各アクションは入手アクション(アイテム追加、通貨付与など)とそのリクエストパラメータを指定します。 報酬あたり最低1個、最大10個のアクションを設定できます。 |
ConsumeAction
消費アクション
消費アクションの仕組みを通じてユーザーからリソースを消費するアクションを定義します。
取り逃がしボーナスの救済でユーザーが支払うコスト(通貨の差し引き、アイテムの消費など)を指定するために使用されます。
action フィールドは消費アクションの種類を指定し、request フィールドには対応するリクエストパラメータが含まれます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
|---|
| action | 文字列列挙型 enum { "Gs2AdReward:ConsumePointByUserId", "Gs2Dictionary:DeleteEntriesByUserId", "Gs2Enhance:DeleteProgressByUserId", "Gs2Exchange:DeleteAwaitByUserId", "Gs2Experience:SubExperienceByUserId", "Gs2Experience:SubRankCapByUserId", "Gs2Formation:SubMoldCapacityByUserId", "Gs2Grade:SubGradeByUserId", "Gs2Guild:DecreaseMaximumCurrentMaximumMemberCountByGuildName", "Gs2Idle:DecreaseMaximumIdleMinutesByUserId", "Gs2Inbox:OpenMessageByUserId", "Gs2Inbox:DeleteMessageByUserId", "Gs2Inventory:ConsumeItemSetByUserId", "Gs2Inventory:ConsumeSimpleItemsByUserId", "Gs2Inventory:ConsumeBigItemByUserId", "Gs2JobQueue:DeleteJobByUserId", "Gs2Limit:CountUpByUserId", "Gs2LoginReward:MarkReceivedByUserId", "Gs2Mission:ReceiveByUserId", "Gs2Mission:BatchReceiveByUserId", "Gs2Mission:DecreaseCounterByUserId", "Gs2Mission:ResetCounterByUserId", "Gs2Money:WithdrawByUserId", "Gs2Money:RecordReceipt", "Gs2Money2:WithdrawByUserId", "Gs2Money2:VerifyReceiptByUserId", "Gs2Quest:DeleteProgressByUserId", "Gs2Ranking2:CreateGlobalRankingReceivedRewardByUserId", "Gs2Ranking2:CreateClusterRankingReceivedRewardByUserId", "Gs2Schedule:DeleteTriggerByUserId", "Gs2SerialKey:UseByUserId", "Gs2Showcase:IncrementPurchaseCountByUserId", "Gs2SkillTree:MarkRestrainByUserId", "Gs2Stamina:DecreaseMaxValueByUserId", "Gs2Stamina:ConsumeStaminaByUserId", }
| | ✓ | | | 消費アクションで実行するアクションの種類 |
| request | string | | ✓ | | ~ 524288文字 | アクション実行時に使用されるリクエストのJSON文字列 |
VerifyAction
検証アクション
操作の実行前に条件を検証するアクションを定義します。
取り逃がしボーナスの救済で、救済を許可する前に前提条件(ユーザーの資格、リソースの利用可能性など)を確認するために使用されます。
action フィールドは検証アクションの種類を指定し、request フィールドには対応するリクエストパラメータが含まれます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
|---|
| action | 文字列列挙型 enum { "Gs2Dictionary:VerifyEntryByUserId", "Gs2Distributor:IfExpressionByUserId", "Gs2Distributor:AndExpressionByUserId", "Gs2Distributor:OrExpressionByUserId", "Gs2Enchant:VerifyRarityParameterStatusByUserId", "Gs2Experience:VerifyRankByUserId", "Gs2Experience:VerifyRankCapByUserId", "Gs2Grade:VerifyGradeByUserId", "Gs2Grade:VerifyGradeUpMaterialByUserId", "Gs2Guild:VerifyCurrentMaximumMemberCountByGuildName", "Gs2Guild:VerifyIncludeMemberByUserId", "Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId", "Gs2Inventory:VerifyItemSetByUserId", "Gs2Inventory:VerifyReferenceOfByUserId", "Gs2Inventory:VerifySimpleItemByUserId", "Gs2Inventory:VerifyBigItemByUserId", "Gs2Limit:VerifyCounterByUserId", "Gs2Matchmaking:VerifyIncludeParticipantByUserId", "Gs2Mission:VerifyCompleteByUserId", "Gs2Mission:VerifyCounterValueByUserId", "Gs2Ranking2:VerifyGlobalRankingScoreByUserId", "Gs2Ranking2:VerifyClusterRankingScoreByUserId", "Gs2Ranking2:VerifySubscribeRankingScoreByUserId", "Gs2Schedule:VerifyTriggerByUserId", "Gs2Schedule:VerifyEventByUserId", "Gs2SerialKey:VerifyCodeByUserId", "Gs2Stamina:VerifyStaminaValueByUserId", "Gs2Stamina:VerifyStaminaMaxValueByUserId", "Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId", "Gs2Stamina:VerifyStaminaRecoverValueByUserId", "Gs2Stamina:VerifyStaminaOverflowValueByUserId", }
| | ✓ | | | 検証アクションで実行するアクションの種類 |
| request | string | | ✓ | | ~ 524288文字 | アクション実行時に使用されるリクエストのJSON文字列 |
AcquireAction
入手アクション
入手アクションの仕組みを通じてユーザーにリソースを付与するアクションを定義します。
報酬内で使用され、ユーザーが受け取るもの(インベントリへのアイテム追加、通貨の付与、経験値の付与など)を指定します。
action フィールドは入手アクションの種類を指定し、request フィールドには対応するリクエストパラメータが含まれます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
|---|
| action | 文字列列挙型 enum { "Gs2AdReward:AcquirePointByUserId", "Gs2Dictionary:AddEntriesByUserId", "Gs2Enchant:ReDrawBalanceParameterStatusByUserId", "Gs2Enchant:SetBalanceParameterStatusByUserId", "Gs2Enchant:ReDrawRarityParameterStatusByUserId", "Gs2Enchant:AddRarityParameterStatusByUserId", "Gs2Enchant:SetRarityParameterStatusByUserId", "Gs2Enhance:DirectEnhanceByUserId", "Gs2Enhance:UnleashByUserId", "Gs2Enhance:CreateProgressByUserId", "Gs2Exchange:ExchangeByUserId", "Gs2Exchange:IncrementalExchangeByUserId", "Gs2Exchange:CreateAwaitByUserId", "Gs2Exchange:AcquireForceByUserId", "Gs2Exchange:SkipByUserId", "Gs2Experience:AddExperienceByUserId", "Gs2Experience:SetExperienceByUserId", "Gs2Experience:AddRankCapByUserId", "Gs2Experience:SetRankCapByUserId", "Gs2Experience:MultiplyAcquireActionsByUserId", "Gs2Formation:AddMoldCapacityByUserId", "Gs2Formation:SetMoldCapacityByUserId", "Gs2Formation:AcquireActionsToFormProperties", "Gs2Formation:SetFormByUserId", "Gs2Formation:AcquireActionsToPropertyFormProperties", "Gs2Friend:UpdateProfileByUserId", "Gs2Grade:AddGradeByUserId", "Gs2Grade:ApplyRankCapByUserId", "Gs2Grade:MultiplyAcquireActionsByUserId", "Gs2Guild:IncreaseMaximumCurrentMaximumMemberCountByGuildName", "Gs2Guild:SetMaximumCurrentMaximumMemberCountByGuildName", "Gs2Idle:IncreaseMaximumIdleMinutesByUserId", "Gs2Idle:SetMaximumIdleMinutesByUserId", "Gs2Idle:ReceiveByUserId", "Gs2Inbox:SendMessageByUserId", "Gs2Inventory:AddCapacityByUserId", "Gs2Inventory:SetCapacityByUserId", "Gs2Inventory:AcquireItemSetByUserId", "Gs2Inventory:AcquireItemSetWithGradeByUserId", "Gs2Inventory:AddReferenceOfByUserId", "Gs2Inventory:DeleteReferenceOfByUserId", "Gs2Inventory:AcquireSimpleItemsByUserId", "Gs2Inventory:SetSimpleItemsByUserId", "Gs2Inventory:AcquireBigItemByUserId", "Gs2Inventory:SetBigItemByUserId", "Gs2JobQueue:PushByUserId", "Gs2Limit:CountDownByUserId", "Gs2Limit:DeleteCounterByUserId", "Gs2LoginReward:DeleteReceiveStatusByUserId", "Gs2LoginReward:UnmarkReceivedByUserId", "Gs2Lottery:DrawByUserId", "Gs2Lottery:ResetBoxByUserId", "Gs2Mission:RevertReceiveByUserId", "Gs2Mission:IncreaseCounterByUserId", "Gs2Mission:SetCounterByUserId", "Gs2Money:DepositByUserId", "Gs2Money:RevertRecordReceipt", "Gs2Money2:DepositByUserId", "Gs2Quest:CreateProgressByUserId", "Gs2Schedule:TriggerByUserId", "Gs2Schedule:ExtendTriggerByUserId", "Gs2Script:InvokeScript", "Gs2SerialKey:RevertUseByUserId", "Gs2SerialKey:IssueOnce", "Gs2Showcase:DecrementPurchaseCountByUserId", "Gs2Showcase:ForceReDrawByUserId", "Gs2SkillTree:MarkReleaseByUserId", "Gs2Stamina:RecoverStaminaByUserId", "Gs2Stamina:RaiseMaxValueByUserId", "Gs2Stamina:SetMaxValueByUserId", "Gs2Stamina:SetRecoverIntervalByUserId", "Gs2Stamina:SetRecoverValueByUserId", "Gs2StateMachine:StartStateMachineByUserId", }
| | ✓ | | | 入手アクションで実行するアクションの種類 |
| request | string | | ✓ | | ~ 524288文字 | アクション実行時に使用されるリクエストのJSON文字列 |