GS2-LoginReward
毎日ログインすることで報酬を入手できる仕組みを実現します。
モード
ログインボーナスの提供方法は《スケジュールモード》と《ストリーミングモード》2種類の方式があります。
スケジュールモード
GS2-Schedule のイベントと関連付けて利用します。 報酬として配布するトランザクションアクションを各日程分定義します。 イベントの開始日時から24時間ごとに報酬が変化し、各報酬を1回受け取ることができます。 途中で取り逃がした報酬があった場合は、スキップされます。
ストリーミングモード
ストリーミングモードはストリームに設定された報酬として配布するトランザクションアクションを先頭から順番に配布します。 受け取らなかった日があったとしても、スキップはされずストリームの次の報酬が手に入ります。
ストリーミングモードのログインボーナスに GS2-Schedule のイベントを関連づけると、イベントの開始日時から24時間ごとにストリームの次の報酬を受け取ることができます。 設定しない場合は、報酬の種類が変化する時間をUTCタイムゾーンの24時間単位で指定して利用します。
繰り返し
ストリーミングモードのログインボーナスには繰り返し設定ができます。 繰り返し設定を有効にすると、ストリームの終端に到達した場合 翌日はストリームの先頭から報酬の受け取りを再開できます。 この機能を利用することで、常設のログインボーナスを7日ごとや30日ごとにループさせることができます。
見逃し補償
スケジュールモードで取り逃がした場合や、ストリーミングモードでもイベント開催期間中ではストリームのすべてのアイテムを入手できないような状態に陥った時に使える機能が見逃し補償機能です。 設定されたコストを支払うことで、取り逃がしたアイテムを入手することができます。
見逃し補償が利用できるのは GS2-Schedule のイベントと関連づけられたログインボーナスのみで、イベントの開始日からの経過日数までの報酬のみが受け取れます。 つまり、未来のログインボーナスはコストを支払っても受け取ることはできません。
実装例
ログインボーナスの受け取り
var result = await gs2.LoginReward.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Bonus(
).ReceiveAsync(
bonusModelName: "bonus-0001",
config: null
);
const auto Future = Gs2->LoginReward->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Bonus(
)->Receive(
"bonus-0001", // bonusModelName
nullptr // config
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError()) return false;
ログインボーナスの受け取り状態を取得
var item = await gs2.LoginReward.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).ReceiveStatus(
bonusModelName: "bonus-0001"
).ModelAsync();
const auto item = Gs2->LoginReward->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->ReceiveStatus(
"bonus-0001" // bonusModelName
).Model();
ログインボーナスの内容を確認
var item = await gs2.LoginReward.Namespace(
namespaceName: "namespace-0001"
).BonusModel(
bonusModelName: "bonus-0001"
).ModelAsync();
const auto item = Gs2->LoginReward->Namespace(
"namespace-0001" // namespaceName
)->BonusModel(
"bonus-0001" // bonusModelName
).Model();