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

# GS2-Enchant SDK for Game Engine API リファレンス

ゲームエンジン向け GS2-Enchant SDK の モデルの仕様 と API のリファレンス



## モデル

### EzBalanceParameterStatus

バランスパラメータの状態<br>

ユーザーが所有する特定のリソースに対して抽選されたパラメータの実際の値を表します。各ステータスはバランスパラメータモデルに関連付けられ、抽選処理後に各パラメータスロットに割り当てられた具体的な値を保持します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| parameterName | string |  | ✓ |  |  ~ 128文字 | バランスパラメータモデル名<br>このステータスの抽選条件を定義するバランスパラメータモデルの名前です。合計値、配分方針、利用可能なパラメータスロットを指定するモデルを参照します。 |
| propertyId | string |  | ✓ |  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのバランスパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| parameterValues | [List&lt;EzBalanceParameterValue&gt;](#ezbalanceparametervalue) |  | ✓ |  | 1 ~ 10 items | バランスパラメータの値リスト<br>抽選処理後に各パラメータスロットに割り当てられた具体的な値です。各エントリはモデルで定義されたパラメータスロットに対応し、割り当てられた実際の数値を保持します。すべての値の合計はモデルで指定された合計値と等しくなります。 |

**関連するメソッド:**
getBalanceParameterStatus - 特定のアイテムのバランスパラメータ値を取得する
listBalanceParameterStatuses - プレイヤーのバランスパラメータ値の一覧を取得する


---

### EzRarityParameterStatus

レアリティパラメータの状態<br>

ユーザーが所有する特定のリソースに対して抽選されたパラメータの実際の値を表します。各ステータスはレアリティパラメータモデルに関連付けられ、付与された各パラメータスロットに対して重み付き抽選で選択された具体的な値を保持します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| parameterName | string |  | ✓ |  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| propertyId | string |  | ✓ |  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのレアリティパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| parameterValues | [List&lt;EzRarityParameterValue&gt;](#ezrarityparametervalue) |  |  |  | 0 ~ 10 items | レアリティパラメータの値リスト<br>付与された各スロットに対して重み付き抽選で選択された具体的なパラメータ値です。エントリ数は付与数の抽選で決定され、各エントリの値は値モデルプールから選択されます。最大パラメータ数より少ないエントリ数になる場合があります。 |

**関連するメソッド:**
getRarityParameterStatus - 特定のアイテムのレアリティパラメータ値を取得する
listRarityParameterStatuses - プレイヤーのレアリティパラメータ値の一覧を取得する
verifyRarityParameterStatus - 特定のアイテムのレアリティパラメータを検証する


---

### EzBalanceParameterModel

バランスパラメータモデル<br>

バランスパラメータの抽選条件を定義します。<br>
バランスパラメータは固定の合計値を複数のパラメータスロットに分配します。例えば、合計パワーが100の武器に対して ATK=60、DEF=30、SPD=10 のように配分されます。初期値の設定方針により値の割り当て方法が決まります：`average` は均等に分配し、`lottery` は合計値をランダムに配分します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 128文字 | バランスパラメータモデル名<br>バランスパラメータモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| metadata | string |  |  |  |  ~ 2048文字 | メタデータ<br>メタデータには任意の値を設定できます。<br>これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 |
| totalValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | 合計値<br>すべてのパラメータスロットに分配される固定の合計値です。パラメータが抽選される際、使用される配分方針に関わらず、個々の値の合計は常にこの合計値になります。 |
| initialValueStrategy | 文字列列挙型<br>enum {<br>&nbsp;&nbsp;"average",<br>&nbsp;&nbsp;"lottery"<br>}<br> |  |  | "average" |  | 初期値の設定方針<br>初回割り当て時に合計値をパラメータスロットにどのように分配するかを決定します。`average` は合計値をすべてのパラメータに均等に分配し、`lottery` は合計値をランダムに分配してバラエティに富んだパラメータの組み合わせを作成します。"average": 平均値 / "lottery": 抽選 /  |
| parameters | [List&lt;EzBalanceParameterValueModel&gt;](#ezbalanceparametervaluemodel) |  | ✓ |  | 1 ~ 10 items | バランスパラメータ値モデルのリスト<br>このバランスパラメータで利用可能なパラメータスロットを定義します。各エントリは名前付きパラメータスロット（例: ATK、DEF、SPD）をオプションのメタデータとともに指定します。合計値はこれらのスロットに分配されます。 |

**関連するメソッド:**
getBalanceParameterModel - 名前を指定してバランスパラメータ定義を取得する
listBalanceParameterModels - バランスパラメータモデルの一覧を取得する


---

### EzBalanceParameterValueModel

バランスパラメータ値モデル<br>

バランスパラメータ内で利用可能な単一のパラメータスロットを定義します。各エントリは、抽選処理中に合計値の一部を受け取る名前付きスロット（例: ATK、DEF、SPD）を指定します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64文字 | 名前<br>このパラメータスロットの識別子（例: ATK、DEF、SPD）です。バランスパラメータモデル内で一意である必要があります。抽選されたパラメータ値の保存・取得時にキーとして使用されます。 |
| metadata | string |  |  |  |  ~ 512文字 | メタデータ<br>メタデータには任意の値を設定できます。<br>これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 |


**関連するモデル:**
EzBalanceParameterModel - バランスパラメータモデル



---

### EzRarityParameterModel

レアリティパラメータモデル<br>

レアリティパラメータの抽選条件を定義します。レアリティパラメータは重み付き抽選システムを使用して、付与されるパラメータの数と割り当てられる具体的な値の両方を決定します。まず、付与数モデルのリストから重み付き抽選により埋めるパラメータスロット数が決定されます。次に、各スロットの値がパラメータ値モデルのリストから重み付き抽選で選択され、制御された確率分布によるランダムな装備属性を提供します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 128文字 | レアリティパラメータモデル名<br>レアリティパラメータモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| metadata | string |  |  |  |  ~ 2048文字 | メタデータ<br>メタデータには任意の値を設定できます。<br>これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 |
| maximumParameterCount | int |  | ✓ |  | 1 ~ 10 | 付与するパラメータの最大数<br>リソースに付与できるパラメータスロット数の上限です。実際に付与される数は付与数モデルのリストからの重み付き抽選で決定されますが、この値を超えることはありません。 |
| parameterCounts | [List&lt;EzRarityParameterCountModel&gt;](#ezrarityparametercountmodel) |  | ✓ |  | 1 ~ 10 items | レアリティパラメータの付与数モデルのリスト<br>付与されるパラメータスロット数を決定するための重み付き抽選エントリを定義します。各エントリは付与数と排出重みを指定します。重みが大きいほど、その付与数が選択される確率が高くなります。 |
| parameters | [List&lt;EzRarityParameterValueModel&gt;](#ezrarityparametervaluemodel) |  | ✓ |  | 1 ~ 1000 items | レアリティパラメータ値モデルのリスト<br>抽選可能なパラメータ値のプールを定義します。各エントリはパラメータ名、リソース詳細、排出重みを指定します。パラメータスロットを埋める際、このプールから重複なしの重み付き抽選で値が選択されます。 |

**関連するメソッド:**
getRarityParameterModel - 名前を指定してレアリティパラメータ定義を取得する
listRarityParameterModels - レアリティパラメータモデルの一覧を取得する


---

### EzRarityParameterCountModel

レアリティパラメータの付与数モデル<br>

リソースに付与されるパラメータスロット数を決定するための重み付き抽選の単一エントリを定義します。各エントリはパラメータ数と排出重みをペアにし、パラメータ数量の確率分布を細かく制御できます。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| count | int |  | ✓ |  | 0 ~ 10 | 付与数<br>このエントリが抽選された際に付与するパラメータスロット数です。例えば、付与数が 3 の場合、リソースは値モデルプールから選択された 3 つのパラメータ値を受け取ります。 |
| weight | int |  | ✓ |  | 1 ~ 2147483646 | 排出重み<br>パラメータ付与数を決定する重み付き抽選で使用される相対的な重みです。値が大きいほど、この付与数が選択される確率が高くなります。実際の確率は、この重みを付与数モデルリスト内のすべての重みの合計で割った値になります。 |


**関連するモデル:**
EzRarityParameterModel - レアリティパラメータモデル



---

### EzRarityParameterValueModel

レアリティパラメータ値モデル<br>

レアリティパラメータ値の重み付き抽選プール内の単一エントリを定義します。各エントリはパラメータ名、ゲーム定義のリソース詳細、およびプール内の他のエントリに対する選択確率を決定する排出重みを指定します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64文字 | 名前<br>この抽選エントリの識別子です。レアリティパラメータモデルの値プール内で一意である必要があります。抽選された際、この名前が結果のレアリティパラメータ値に保存されます。 |
| metadata | string |  |  |  |  ~ 512文字 | メタデータ<br>メタデータには任意の値を設定できます。<br>これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 |
| resourceName | string |  | ✓ |  |  ~ 64文字 | ゲーム内で使用するパラメータリソースの種類を表す名前（GS2の動作のためには使用しません）<br>このパラメータ値に関連付けられたゲーム定義のリソース種別名（例: "fire_attack"、"ice_resist"）です。GS2 はこの値を自身の動作には使用せず、抽選結果にそのまま渡されゲームロジックで使用されます。 |
| resourceValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | ゲーム内で使用するパラメータリソースの値（GS2の動作のためには使用しません）<br>このパラメータのゲーム定義の数値（例: 攻撃力+50 の場合は 50）です。GS2 はこの値を自身の動作には使用せず、抽選結果にそのまま渡されゲームロジックで使用されます。 |
| weight | int |  | ✓ |  | 1 ~ 2147483646 | 排出重み<br>パラメータ値を選択する重み付き抽選で使用される相対的な重みです。値が大きいほど、このエントリが選択される確率が高くなります。実際の確率は、この重みをプール内のすべての重みの合計で割った値になります。 |


**関連するモデル:**
EzRarityParameterModel - レアリティパラメータモデル



---

### EzBalanceParameterValue

バランスパラメータ値<br>

バランスパラメータステータス内の単一パラメータスロットに割り当てられた実際の値を表します。抽選処理後のスロット名とその具体的な数値を保持します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64文字 | 名前<br>パラメータスロットの名前（例: ATK、DEF、SPD）です。バランスパラメータ値モデルで定義されたパラメータスロットに対応します。 |
| value | long |  | ✓ |  | 0 ~ 9223372036854775805 | 値<br>このパラメータスロットに割り当てられた数値です。バランスパラメータが最初に抽選される際に、初期値の設定方針（平均値または抽選）によって決定されます。すべてのスロット値の合計はモデルで定義された合計値と等しくなります。 |


**関連するモデル:**
EzBalanceParameterStatus - バランスパラメータの状態



---

### EzRarityParameterValue

レアリティパラメータ値<br>

レアリティパラメータステータス内の単一パラメータスロットに割り当てられた実際の値を表します。スロット名と、値モデルプールから重み付き抽選で選択されたリソース詳細（名前と値）を保持します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| name | string |  | ✓ |  |  ~ 64文字 | 名前<br>値モデルプールから選択されたパラメータ値の名前です。抽選されたレアリティパラメータ値モデルエントリで定義された名前に対応します。 |
| resourceName | string |  | ✓ |  |  ~ 64文字 | リソースの名前<br>このパラメータ値に関連付けられたゲーム定義のリソース種別名（例: "fire_attack"、"ice_resist"）です。ゲームロジックで使用するため、抽選されたレアリティパラメータ値モデルエントリからコピーされます。 |
| resourceValue | long |  | ✓ |  | 0 ~ 9223372036854775805 | リソースの値<br>このパラメータに関連付けられたリソースの数値です。抽選されたレアリティパラメータ値モデルエントリからコピーされます。ゲームロジックでパラメータの効果（例: 攻撃力+50）を適用するために使用されます。 |


**関連するモデル:**
EzRarityParameterStatus - レアリティパラメータの状態



---

### EzVerifyActionResult

検証アクションの実行結果

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 文字列列挙型<br>enum {<br>}<br> |  | ✓ |  |  | 検証アクションで実行するアクションの種類 |
| verifyRequest | string |  | ✓ |  |  ~ 524288文字 | アクション実行時に使用されるリクエストのJSON文字列 |
| statusCode | int |  |  |  | 0 ~ 999 | ステータスコード |
| verifyResult | string |  |  |  |  ~ 1048576文字 | 結果内容 |


**関連するモデル:**
EzTransactionResult - トランザクション実行結果



---

### EzConsumeActionResult

消費アクションの実行結果

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 文字列列挙型<br>enum {<br>}<br> |  | ✓ |  |  | 消費アクションで実行するアクションの種類 |
| consumeRequest | string |  | ✓ |  |  ~ 524288文字 | アクション実行時に使用されるリクエストのJSON文字列 |
| statusCode | int |  |  |  | 0 ~ 999 | ステータスコード |
| consumeResult | string |  |  |  |  ~ 1048576文字 | 結果内容 |


**関連するモデル:**
EzTransactionResult - トランザクション実行結果



---

### EzAcquireActionResult

入手アクションの実行結果

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 文字列列挙型<br>enum {<br>}<br> |  | ✓ |  |  | 入手アクションで実行するアクションの種類 |
| acquireRequest | string |  | ✓ |  |  ~ 524288文字 | アクション実行時に使用されるリクエストのJSON文字列 |
| statusCode | int |  |  |  | 0 ~ 999 | ステータスコード |
| acquireResult | string |  |  |  |  ~ 1048576文字 | 結果内容 |


**関連するモデル:**
EzTransactionResult - トランザクション実行結果



---

### EzTransactionResult

トランザクション実行結果<br>

サーバーサイドでのトランザクションの自動実行機能を利用して実行されたトランザクションの実行結果

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| transactionId | string |  | ✓ |  | 36 ~ 36文字 | トランザクションID |
| verifyResults | [List&lt;EzVerifyActionResult&gt;](#ezverifyactionresult) |  |  |  | 0 ~ 10 items | 検証アクションの実行結果リスト |
| consumeResults | [List&lt;EzConsumeActionResult&gt;](#ezconsumeactionresult) |  |  | [] | 0 ~ 10 items | 消費アクションの実行結果リスト |
| acquireResults | [List&lt;EzAcquireActionResult&gt;](#ezacquireactionresult) |  |  | [] | 0 ~ 100 items | 入手アクションの実行結果リスト |


---

## メソッド

### getBalanceParameterModel

名前を指定してバランスパラメータ定義を取得する<br>

名前を指定して、バランスパラメータモデルを1件取得します。<br>
取得できる情報には、分配する合計値、パラメータスロットのリスト（例: ATK, DEF, SPD）、初期値の決定方法が含まれます。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | バランスパラメータモデル名<br>バランスパラメータモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| item | [EzBalanceParameterModel](#ezbalanceparametermodel) | バランスパラメータモデル|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).BalanceParameterModel(
        parameterName: "rarity-0001"
    );
    var item = await domain.ModelAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).BalanceParameterModel(
        parameterName: "rarity-0001"
    );
    var future = domain.ModelFuture();
    yield return future;
    var item = future.Result;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->BalanceParameterModel(
        "rarity-0001" // parameterName
    );
    const auto Future = Domain->Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).BalanceParameterModel(
        parameterName: "rarity-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).BalanceParameterModel(
        parameterName: "rarity-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->BalanceParameterModel(
        "rarity-0001" // parameterName
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Enchant::Model::FBalanceParameterModel> value) {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    Domain->Unsubscribe(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### listBalanceParameterModels

バランスパラメータモデルの一覧を取得する<br>

このネームスペースに登録されているすべてのバランスパラメータモデルを取得します。<br>
バランスパラメータは、固定の合計値を複数のステータスに分配します。たとえば、ATK・DEF・SPD に合計100ポイントを割り振り、合計が常に100になるようにします。<br>
利用可能なパラメータタイプの表示や、武器・装備の詳細画面でパラメータモデルの設定を確認する際に使います。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| items | [List&lt;EzBalanceParameterModel&gt;](#ezbalanceparametermodel) | バランスパラメータモデルのリスト|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    var items = await domain.BalanceParameterModelsAsync(
    ).ToListAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    var it = domain.BalanceParameterModels(
    );
    List<EzBalanceParameterModel> items = new List<EzBalanceParameterModel>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    );
    const auto It = Domain->BalanceParameterModels(
    );
    TArray<Gs2::UE5::Enchant::Model::FEzBalanceParameterModelPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeBalanceParameterModels(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeBalanceParameterModels(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeBalanceParameterModels(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeBalanceParameterModels(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->SubscribeBalanceParameterModels(
        []() {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    Domain->UnsubscribeBalanceParameterModels(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### getBalanceParameterStatus

特定のアイテムのバランスパラメータ値を取得する<br>

プレイヤーが所持する特定のアイテム（プロパティ）に割り当てられた現在のバランスパラメータ値を取得します。<br>
値はアイテム作成時（または最後の再抽選時）にランダムに決定され、すべての値の合計は常にモデルの合計値と等しくなります。<br>
アイテム詳細画面で個別のステータス内訳（例: ATK: 40, DEF: 35, SPD: 25）を表示する際に使います。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | バランスパラメータモデル名<br>このステータスの抽選条件を定義するバランスパラメータモデルの名前です。合計値、配分方針、利用可能なパラメータスロットを指定するモデルを参照します。 |
| gameSession | GameSession | | ✓|  |  | GameSession |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのバランスパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| item | [EzBalanceParameterStatus](#ezbalanceparameterstatus) | バランスパラメータの状態|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).BalanceParameterStatus(
        parameterName: "balance-0001",
        propertyId: "property-0001"
    );
    var item = await domain.ModelAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).BalanceParameterStatus(
        parameterName: "balance-0001",
        propertyId: "property-0001"
    );
    var future = domain.ModelFuture();
    yield return future;
    var item = future.Result;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->BalanceParameterStatus(
        "balance-0001", // parameterName
        "property-0001" // propertyId
    );
    const auto Future = Domain->Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).BalanceParameterStatus(
        parameterName: "balance-0001",
        propertyId: "property-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).BalanceParameterStatus(
        parameterName: "balance-0001",
        propertyId: "property-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->BalanceParameterStatus(
        "balance-0001", // parameterName
        "property-0001" // propertyId
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Enchant::Model::FBalanceParameterStatus> value) {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    Domain->Unsubscribe(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### listBalanceParameterStatuses

プレイヤーのバランスパラメータ値の一覧を取得する<br>

プレイヤーのアイテムに割り当てられた現在のバランスパラメータ値を取得します。<br>
パラメータ名でフィルタリングして、特定のパラメータタイプの値のみを取得することもできます。<br>
たとえば、プレイヤーが所持している各武器の ATK/DEF/SPD の配分を確認できます。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | |  |  ~ 128文字 | バランスパラメータモデル名<br>このステータスの抽選条件を定義するバランスパラメータモデルの名前です。合計値、配分方針、利用可能なパラメータスロットを指定するモデルを参照します。 |
| gameSession | GameSession | | ✓|  |  | GameSession |
| pageToken | string |  | |  |  ~ 1024文字 | データの取得を開始する位置を指定するトークン |
| limit | int |  | | 30 | 1 ~ 1000 | データの取得件数 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| items | [List&lt;EzBalanceParameterStatus&gt;](#ezbalanceparameterstatus) | バランスパラメータの状態のリスト|
| nextPageToken | string | リストの続きを取得するためのページトークン|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var items = await domain.BalanceParameterStatusesAsync(
        parameterName: "balance-0001"
    ).ToListAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.BalanceParameterStatuses(
        parameterName: "balance-0001"
    );
    List<EzBalanceParameterStatus> items = new List<EzBalanceParameterStatus>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    );
    const auto It = Domain->BalanceParameterStatuses(
        "balance-0001" // parameterName
    );
    TArray<Gs2::UE5::Enchant::Model::FEzBalanceParameterStatusPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeBalanceParameterStatuses(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeBalanceParameterStatuses(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeBalanceParameterStatuses(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeBalanceParameterStatuses(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->SubscribeBalanceParameterStatuses(
        []() {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    Domain->UnsubscribeBalanceParameterStatuses(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### getRarityParameterModel

名前を指定してレアリティパラメータ定義を取得する<br>

名前を指定して、レアリティパラメータモデルを1件取得します。<br>
取得できる情報には、パラメータスロットの最大数、スロット数の決定方法、レアリティの重み（排出率）付きの候補値リストが含まれます。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>レアリティパラメータモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| item | [EzRarityParameterModel](#ezrarityparametermodel) | レアリティパラメータモデル|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).RarityParameterModel(
        parameterName: "rarity-0001"
    );
    var item = await domain.ModelAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).RarityParameterModel(
        parameterName: "rarity-0001"
    );
    var future = domain.ModelFuture();
    yield return future;
    var item = future.Result;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->RarityParameterModel(
        "rarity-0001" // parameterName
    );
    const auto Future = Domain->Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).RarityParameterModel(
        parameterName: "rarity-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).RarityParameterModel(
        parameterName: "rarity-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->RarityParameterModel(
        "rarity-0001" // parameterName
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Enchant::Model::FRarityParameterModel> value) {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    Domain->Unsubscribe(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### listRarityParameterModels

レアリティパラメータモデルの一覧を取得する<br>

このネームスペースに登録されているすべてのレアリティパラメータモデルを取得します。<br>
レアリティパラメータは、レアリティの重み付き確率に基づいてパラメータスロットにランダムに値を割り当てます。たとえば、武器にコモン・レア・レジェンダリーのスキルスロットが付くといった仕組みです。<br>
利用可能なパラメータタイプの表示や、装備画面でレアリティ設定を確認する際に使います。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| items | [List&lt;EzRarityParameterModel&gt;](#ezrarityparametermodel) | レアリティパラメータモデルのリスト|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    var items = await domain.RarityParameterModelsAsync(
    ).ToListAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    var it = domain.RarityParameterModels(
    );
    List<EzRarityParameterModel> items = new List<EzRarityParameterModel>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    );
    const auto It = Domain->RarityParameterModels(
    );
    TArray<Gs2::UE5::Enchant::Model::FEzRarityParameterModelPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeRarityParameterModels(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeRarityParameterModels(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeRarityParameterModels(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeRarityParameterModels(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->SubscribeRarityParameterModels(
        []() {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    Domain->UnsubscribeRarityParameterModels(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### getRarityParameterStatus

特定のアイテムのレアリティパラメータ値を取得する<br>

プレイヤーが所持する特定のアイテム（プロパティ）に割り当てられた現在のレアリティパラメータ値を取得します。<br>
値はアイテム作成時（または最後の再抽選時）にモデルで定義されたレアリティの重みに基づいてランダムに抽選されたものです。<br>
武器や装備の詳細画面で、付与されているスキルやアビリティを表示する際に使います。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| gameSession | GameSession | | ✓|  |  | GameSession |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのレアリティパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| item | [EzRarityParameterStatus](#ezrarityparameterstatus) | レアリティパラメータの状態|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).RarityParameterStatus(
        parameterName: "rarity-0001",
        propertyId: "property-0001"
    );
    var item = await domain.ModelAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).RarityParameterStatus(
        parameterName: "rarity-0001",
        propertyId: "property-0001"
    );
    var future = domain.ModelFuture();
    yield return future;
    var item = future.Result;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->RarityParameterStatus(
        "rarity-0001", // parameterName
        "property-0001" // propertyId
    );
    const auto Future = Domain->Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).RarityParameterStatus(
        parameterName: "rarity-0001",
        propertyId: "property-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).RarityParameterStatus(
        parameterName: "rarity-0001",
        propertyId: "property-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->RarityParameterStatus(
        "rarity-0001", // parameterName
        "property-0001" // propertyId
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Enchant::Model::FRarityParameterStatus> value) {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    Domain->Unsubscribe(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### listRarityParameterStatuses

プレイヤーのレアリティパラメータ値の一覧を取得する<br>

プレイヤーのアイテムに割り当てられた現在のレアリティパラメータ値を取得します。<br>
パラメータ名でフィルタリングして、特定のパラメータタイプの値のみを取得することもできます。<br>
たとえば、プレイヤーの各武器にどのスキルスロット（コモン・レア・レジェンダリー）が付いているかを確認できます。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | |  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| gameSession | GameSession | | ✓|  |  | GameSession |
| pageToken | string |  | |  |  ~ 1024文字 | データの取得を開始する位置を指定するトークン |
| limit | int |  | | 30 | 1 ~ 1000 | データの取得件数 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| items | [List&lt;EzRarityParameterStatus&gt;](#ezrarityparameterstatus) | レアリティパラメータモデルのリスト|
| nextPageToken | string | リストの続きを取得するためのページトークン|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var items = await domain.RarityParameterStatusesAsync(
        parameterName: "rarity-0001"
    ).ToListAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.RarityParameterStatuses(
        parameterName: "rarity-0001"
    );
    List<EzRarityParameterStatus> items = new List<EzRarityParameterStatus>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    );
    const auto It = Domain->RarityParameterStatuses(
        "rarity-0001" // parameterName
    );
    TArray<Gs2::UE5::Enchant::Model::FEzRarityParameterStatusPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }

```


##### 値の変更イベントハンドリング




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeRarityParameterStatuses(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeRarityParameterStatuses(callbackId);

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeRarityParameterStatuses(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeRarityParameterStatuses(callbackId);

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    );
    
    // イベントハンドリングを開始
    const auto CallbackId = Domain->SubscribeRarityParameterStatuses(
        []() {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    Domain->UnsubscribeRarityParameterStatuses(CallbackId);

```


{{% alert title="Warning" color="warning" %}}このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。

ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。

そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
{{% /alert %}}

---

### verifyRarityParameterStatus

特定のアイテムのレアリティパラメータを検証する<br>

特定のアイテムのレアリティパラメータが指定した条件を満たすかどうかをチェックします。<br>
3つのチェックタイプが利用できます:<br>
- `have`: アイテムが特定のパラメータ値を持っている（例: 「炎斬り」スキルを持っている）<br>
- `havent`: アイテムが特定のパラメータ値を持っていない<br>
- `count`: アイテムのパラメータスロットが指定数だけ埋まっている<br>

前提条件として使います。たとえば、強化する前に武器が特定のスキルを持っていることを要求する場合などに便利です。

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| parameterName | string |  | ✓|  |  ~ 128文字 | レアリティパラメータモデル名<br>このステータスの抽選条件を定義するレアリティパラメータモデルの名前です。最大パラメータ数、付与数の抽選重み、値の抽選プールを指定するモデルを参照します。 |
| gameSession | GameSession | | ✓|  |  | GameSession |
| propertyId | string |  | ✓|  |  ~ 1024文字 | パラメータの保有元リソースのプロパティID<br>これらのレアリティパラメータが紐付けられている特定のゲームリソース（例: 武器や装備アイテム）を識別します。通常、GS2-Inventory のアイテムなどのリソースをプロパティ ID で参照します。 |
| verifyType | 文字列列挙型<br>enum {<br>&nbsp;&nbsp;"havent",<br>&nbsp;&nbsp;"have",<br>&nbsp;&nbsp;"count"<br>}<br> |  | ✓|  |  | 検証の種類"havent": 指定したパラメータを保有していないこと / "have": 指定したパラメータを保有していること / "count": 保有しているパラメータの数が指定数であること /  |
| parameterValueName | string | {verifyType} in ["havent", "have"] | ✓※|  |  ~ 64文字 | 名前<br>この抽選エントリの識別子です。レアリティパラメータモデルの値プール内で一意である必要があります。抽選された際、この名前が結果のレアリティパラメータ値に保存されます。<br>※ verifyType が "havent","have"であれば 必須 |
| parameterCount | int | {verifyType} == "count" | ✓※|  | 0 ~ 10 | 検証するパラメータの数 |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| item | [EzRarityParameterStatus](#ezrarityparameterstatus) | レアリティパラメータの状態|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).RarityParameterStatus(
        parameterName: "rarity-0001",
        propertyId: "property-0001"
    );
    var result = await domain.VerifyRarityParameterStatusAsync(
        verifyType: "have",
        parameterValueName: "parameter-0001",
        parameterCount: 0
    );
    var item = await result.ModelAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Enchant.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).RarityParameterStatus(
        parameterName: "rarity-0001",
        propertyId: "property-0001"
    );
    var future = domain.VerifyRarityParameterStatusFuture(
        verifyType: "have",
        parameterValueName: "parameter-0001",
        parameterCount: 0
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.ModelFuture();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Enchant->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->RarityParameterStatus(
        "rarity-0001", // parameterName
        "property-0001" // propertyId
    );
    const auto Future = Domain->VerifyRarityParameterStatus(
        "have", // verifyType
        "parameter-0001", // parameterValueName
        0 // parameterCount
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (Future2->GetTask().IsError())
    {
        return Future2->GetTask().Error();
    }
    const auto Result = Future2->GetTask().Result();

```


---



