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

# 回数制限

「1日3回まで」のような回数制限を扱います。リセットのタイミングを共有しつつ、数える対象ごとにカウンターを分けられます。上限は使う側が指定します。




**このデモについて**

デモは匿名アカウントで自動的にログインします。このアカウントはショールームのすべてのデモで共有されるため、あるデモで手に入れたアイテムや通貨が別のデモにも反映されます。読み込みには少し時間がかかります。画面が小さい場合は新しいタブで開いてお試しください。

## 概要

4 つの回数カウンターと 2 つのリセットスケジュール（毎日・毎週）を表示するデモです。Counter 1〜3 は同じ日次スケジュールに従いながら回数は別々に数えられ、Counter 4 だけが週次スケジュールに従います。上限回数はカウンターではなく使う側のボタンが指定するため、Counter 1 では同じカウンターに対して「無料枠は 3 回まで、広告視聴付きなら 5 回まで」という 2 つの上限が共存します。

## 試し方

1. **Reset schedules** に、日次スケジュールの **Resets every day at 00:00 UTC** と週次スケジュールの **Resets every Monday at 00:00 UTC** が表示されます。各カウンターの **Next reset in** には次のリセットまでの残り時間が表示されます。
1. **Counter 1 (daily reset)** の **Use free** を 3 回押すと、**Usage** の表示が **3 used. Free uses stop at 3, ad-backed uses at 5.** になり、**Use free** の代わりに **Watch an ad to use** が現れます。
1. **Watch an ad to use** を押すと **Advertisement** パネルが開きます（実際の広告は再生されません）。5 秒待って **I finished watching** を押すと視聴ポイントが付与され、続けてそのポイントを消費して 1 回分使います。5 回に達すると **Nothing left** が表示され、それ以上は使えません。
1. **Counter 2 (daily reset)** で **Use free** を押しても、Counter 1 の回数は変わりません。Counter 2 は 4 回、Counter 3 は 6 回、週次の **Counter 4 (weekly reset)** は 1 回で上限になり、上限に達すると **No free uses left** が表示されます。
1. **Counter 1 (daily reset)** の **Reset every allowance** を押すと、4 つのカウンターすべてが 0 に戻ります。本来は毎日 00:00 UTC（Counter 4 は毎週月曜）のリセットを待つ必要がある動作を、すぐに確認できます。

回数はショールームの全デモで共有されるアカウントに記録されます。上限に達したままでも、**Reset every allowance** でいつでも最初から試せます。

## 使用している GS2 のサービス

- [GS2-Limit](/ja/microservices/limit/): GS2-Limit の回数制限モデルが日次（毎日 00:00 UTC）と週次（毎週月曜 00:00 UTC）のリセットスケジュールを定義し、プレイヤーごとに 4 つのカウンターを数えます。上限値はカウントアップの要求ごとに指定されます。
- [GS2-Exchange](/ja/microservices/exchange/): GS2-Exchange の交換レートが、無料枠での利用、視聴ポイントを消費する広告枠での利用、全カウンターのリセットの各トランザクションを定義し、サーバー側でアトミックに自動実行します。
- [GS2-AdReward](/ja/microservices/ad_reward/): GS2-AdReward の視聴ポイントを、**Watch an ad to use** の広告枠での利用 1 回ごとに 1 消費します。ポイントは広告デモと同じ仕組みで、視聴完了の操作時に付与されます。

## GS2 Studio で使う

GS2 Studio のシンプルモードで **機能を追加** を開き、**回数制限** の **追加** を押すと、この機能を自分のプロジェクトに取り込めます。パッケージを直接指定する場合は **GitHub から追加** を選び、次のパッケージを指定します。

```text
https://github.com/gs2io/gs2-studio-package/tree/main/foundation-economy-limit/packages/foundation-economy-limit
```

- オーナー: `gs2io`
- リポジトリ: `gs2-studio-package`
- サブディレクトリ: `foundation-economy-limit/packages/foundation-economy-limit`

## ソースコード

- デモのプロジェクト: <https://github.com/gs2io/gs2-studio-package/tree/main/foundation-economy-limit/live-demo>
- 機能パッケージ: <https://github.com/gs2io/gs2-studio-package/tree/main/foundation-economy-limit>



