> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ステータス ルールへのフィールド値の追加

> 意図しないステータス インスタンスを回避するために、XBOX Live のイベント ベースのステータス ルール テンプレートでイベント フィールド名とフィールド値を使い分けるガイダンス。

このトピックでは、通常、ステータス ルールに追加すべきなのはフィールド値ではなくフィールド名であることを説明します。

## イベント値がステータス名に追加される

ステータス テンプレートは強力かつ柔軟ですが、適切に構成されていないと意図しない結果を生む場合があります。ステータス テンプレートは、可変のステータス パス、つまりステータス インスタンスを作成します。ステータス テンプレートは、ソース イベント内の選択されたフィールドの名前 *および値* から派生した変数に基づくステータス名になります。
これは、プレイヤーが各マップでどれくらいの gold を獲得したかなどをキャプチャする方法です。

イベント *名* だけでなく、イベント *値* もステータス名に追加されます。これはしばしば混乱と意図しない結果を生む可能性があります。

## 単一のステータス ルールの例

ゲームが `GameEnd` という名前のイベントを送信するとします。これには `Map` という名前の `int` フィールドと `Gold` という名前の `int` フィールドがあります。

単一のステータス ルールを使用してマップごとのハイ スコアをキャプチャするには、ステータスに `GoldByMap` のような名前を付け、ステータス ルールに `Map` フィールドを追加します。この例では、`Map` の値は数値 ID です。

パラメーター (ステータスをインクリメントする値を含むフィールド) は、`GameEnd` イベントの `Gold` フィールドです。

ゲームが `GameEnd` イベントを XBOX services に送信するとします。イベントの `Map` フィールドの値は 1 です。`Gold` フィールドの値は 100 です。
その結果、ステータスは次のステータス パス `GoldByMap.Map.1` に書き込まれます。このステータス パスの新しい値は 100 です。

次の表は、これまでの内容を示しています。

| 項目        | 種類         | 備考                         |
| --------- | ---------- | -------------------------- |
| `GameEnd` | イベント       | ゲームから XBOX services に送信される |
| `Map`     | イベントのフィールド | `int`                      |
| 1         | `int`      | `Map` フィールドの値              |
| `Gold`    | イベントのフィールド | `int`                      |
| 100       | `int`      | `Gold` フィールドの値             |

ステータス パスは次の表に示す部分から成ります。

| 項目                | 種類        | 備考                    |
| ----------------- | --------- | --------------------- |
| `GoldByMap.Map.1` | ステータス パス  | このステータス パスの値は 100 です。 |
| `GoldByMap`       | ステータス名    | 該当なし。                 |
| `Map`             | ステータス ルール | 数値 ID。                |

次のイベントが `Map` 値 2 で受信された場合、そのイベントの `Gold` フィールドはその新しいステータス パス `GoldByMap.Map.2` に追加されます。

そのイベントの `Gold` フィールドの値が 200 だったとします。
次の表に示す内容も持つことになります。

| 項目                | 種類       | 備考                    |
| ----------------- | -------- | --------------------- |
| `GoldByMap.Map.2` | ステータス パス | このステータス パスの値は 200 です。 |

このようにして、`Map` ごとにステータスを定義することなく、ステータス値を分離して保持できます。

## ステータス ルールに誤ってフィールド値ではなくフィールド名を追加した例

前の例を使用して、`Gold` パラメーター値だけでなく、`Gold` フィールド名も `Map` ステータス ルールに追加した場合に、どのような悪い結果が生じるかを見てみましょう。これは次のようなステータス名になります。`GoldByMap.Map.1.Gold.100`。

プレイヤーが獲得した gold の値 (100) がステータス名にも含まれていることに注目してください。
つまり、プレイヤーが Map 1 で 100 gold を獲得すると、このステータス `GoldByMap.Map.1.Gold.100` に対して値 100 を得ることになります。

プレイヤーがそのマップで 101 gold を獲得した場合、この構成の結果は次のようになり、これは別のステータス名です。`GoldByMap.Map.1.Gold.101`。その結果、これらのステータスは、プレイヤーがステータス名で定義された特定の量の gold を獲得したときにのみインクリメントされることになり、これはおそらく意図されていなかったことです。
