> ## 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.

# Conteneurs à contenu fixe dans Economy v2

> Recréez les articles conteneurs hérités de PlayFab dans Economy v2 en combinant un jeton de monnaie virtuelle avec un bundle qui déballe des récompenses fixes lors de l'achat.

<Info>
  Economy v2 est désormais en disponibilité générale. Pour obtenir de l'aide et donner votre avis, rendez-vous sur le [forum PlayFab](https://community.playfab.com).
</Info>

Economy v1 (hérité) disposait d'une fonctionnalité **Containers** intégrée : des articles de catalogue spéciaux qui, une fois ouverts, accordaient leur contenu à l'inventaire du joueur. Economy v2 n'inclut pas les conteneurs en tant que type d'article natif, mais vous pouvez obtenir le même comportement pour les **conteneurs à contenu fixe** (conteneurs qui accordent toujours les mêmes articles) en combinant monnaie virtuelle et bundles.

## Fonctionnement

Ce modèle utilise trois éléments de base d'Economy v2 :

1. **Une monnaie virtuelle (ou un article empilable)** qui représente le conteneur lui-même, par exemple « Treasure Chest Token ».
2. **Un bundle** au prix de 1 unité de cette monnaie, contenant les articles que le conteneur doit accorder.
3. **Un appel d'achat** dans lequel le joueur dépense 1 jeton pour acheter le bundle, qui est automatiquement déballé et accorde les articles.

Du point de vue du joueur, il reçoit un jeton (via des récompenses de jeu, des achats en boutique, etc.), puis l'« ouvre » pour obtenir les articles qu'il contient, exactement comme fonctionnaient les conteneurs V1.

## Prérequis

* Un [compte développeur PlayFab](https://developer.playfab.com/en-us/sign-up).
* Un titre créé dans [Game Manager](https://developer.playfab.com/).
* Au moins un article de catalogue publié que vous souhaitez que le conteneur accorde.

## Étape 1 : Créer une monnaie virtuelle pour le conteneur

Créez une monnaie virtuelle qui représente le conteneur. Chaque unité de cette monnaie correspond à un conteneur non ouvert.

### Game Manager

1. Accédez à **Economy** > **Catalog (V2)** > **Currency**.
2. Sélectionnez **New currency**.
3. Définissez le **Title** sur un nom descriptif, tel que `Treasure Chest`.
4. Définissez le **FriendlyId** sur un code court, tel que `tc`.
5. Sélectionnez **Save and publish**.

### API REST

Appelez [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) :

```json theme={null}
{
  "Item": {
    "CreatorEntity": {
      "Id": "{{TitleID}}",
      "Type": "title"
    },
    "Type": "currency",
    "AlternateIds": [
      {
        "Type": "FriendlyId",
        "Value": "tc"
      }
    ],
    "Title": {
      "NEUTRAL": "Treasure Chest"
    },
    "Description": {
      "NEUTRAL": "A treasure chest that can be opened to reveal its contents."
    },
    "StartDate": "2023-07-27T00:00:00.000Z"
  },
  "Publish": true
}
```

***

## Étape 2 : Créer un bundle au prix d'un jeton de conteneur

Créez un bundle contenant les articles que vous souhaitez que le conteneur accorde. Fixez le prix du bundle à exactement une unité de la monnaie du conteneur.

### Game Manager

1. Accédez à **Economy** > **Catalog (V2)** > **Bundles**.
2. Sélectionnez **New bundle**.
3. Définissez le **Title** pour décrire le contenu du conteneur, par exemple `Treasure Chest Contents`.
4. Sous **Items**, ajoutez les articles et les quantités que vous souhaitez que le conteneur accorde, par exemple 1 **Legendary Sword** et 100 **Gold**.
5. Sous **Price**, définissez le prix sur **1** unité de la monnaie de votre conteneur (**Treasure Chest**).
6. Sélectionnez **Save and publish**.

### API REST

Appelez [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) :

```json theme={null}
{
  "Item": {
    "Type": "bundle",
    "Title": {
      "NEUTRAL": "Treasure Chest Contents"
    },
    "StartDate": "2023-07-27T00:00:00.000Z",
    "ItemReferences": [
      {
        "Id": "{{LegendarySwordID}}",
        "Amount": 1
      },
      {
        "Id": "{{GoldCurrencyID}}",
        "Amount": 100
      }
    ],
    "PriceOptions": {
      "Prices": [
        {
          "Amounts": [
            {
              "ItemId": "{{TreasureChestCurrencyID}}",
              "Amount": 1
            }
          ]
        }
      ]
    }
  },
  "Publish": true
}
```

***

Lorsqu'un joueur achète ce bundle, celui-ci est [automatiquement déballé](/fr/services/playfab/economy-monetization/economy-v2/catalog/bundles#purchasing-and-unpacking-bundles) : les articles individuels sont directement ajoutés à l'inventaire du joueur.

## Étape 3 : Accorder des jetons de conteneur aux joueurs

Accordez la monnaie du conteneur aux joueurs par tout mécanisme adapté à la conception de votre jeu :

* **Récompenses de jeu** : accordez des jetons après la réussite d'un niveau, d'une quête ou d'un succès à l'aide d'[AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items).
* **Achats en boutique** : vendez le jeton de conteneur dans une [boutique](/fr/services/playfab/economy-monetization/economy-v2/catalog/stores) contre une autre monnaie virtuelle ou de l'argent réel.
* **Passe de combat / récompenses saisonnières** : incluez le jeton en tant que palier de récompense.

Exemple d'utilisation d'`AddInventoryItems` pour accorder trois jetons Treasure Chest :

```json theme={null}
{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestCurrencyID}}"
  },
  "Amount": 3
}
```

## Étape 4 : Ouvrir le conteneur

Lorsque le joueur souhaite ouvrir un conteneur, appelez [PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items) pour acheter le bundle avec un jeton de conteneur :

```json theme={null}
{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestContentsBundleID}}"
  },
  "Amount": 1,
  "PriceAmounts": [
    {
      "ItemId": "{{TreasureChestCurrencyID}}",
      "Amount": 1
    }
  ]
}
```

Après un appel réussi, l'inventaire du joueur est mis à jour : un jeton Treasure Chest est déduit et le contenu du bundle (une Legendary Sword + 100 Gold) est ajouté.

## Plusieurs types de conteneurs

Créez plusieurs types de conteneurs en répétant ce modèle. Par exemple :

| Conteneur | Monnaie (FriendlyId) | Contenu du bundle |
| - | - | - |
| Treasure Chest | `tc` | Une Legendary Sword + 100 Gold |
| Supply Crate | `sc` | Cinq Health Potions + 3 Mana Potions |
| Premium Box | `pb` | Une Rare Mount + 500 Gold + 50 Gems |

Chaque type de conteneur possède sa propre monnaie et son propre bundle.

## Utiliser une boutique pour les achats de conteneurs

Utilisez une [boutique](/fr/services/playfab/economy-monetization/economy-v2/catalog/stores) pour remplacer le prix du bundle du conteneur. Grâce à une boutique, vous pouvez proposer le même conteneur à des prix différents selon le contexte (par exemple, un coût d'« ouverture » réduit pendant un événement) :

```json theme={null}
{
  "Item": {
    "Type": "store",
    "Title": {
      "NEUTRAL": "Event Store"
    },
    "ItemReferences": [
      {
        "Id": "{{TreasureChestContentsBundleID}}",
        "Amount": 1,
        "PriceOptions": {
          "Prices": [
            {
              "Amounts": [
                {
                  "ItemId": "{{TreasureChestCurrencyID}}",
                  "Amount": 1
                }
              ]
            }
          ]
        }
      }
    ]
  },
  "Publish": true
}
```

Passez ensuite le `StoreId` lors de l'achat :

```json theme={null}
{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestContentsBundleID}}"
  },
  "Amount": 1,
  "PriceAmounts": [
    {
      "ItemId": "{{TreasureChestCurrencyID}}",
      "Amount": 1
    }
  ],
  "StoreId": "{{EventStoreID}}"
}
```

## Limitations

Ce modèle fonctionne pour les conteneurs au **contenu fixe et déterministe**. Si vous avez besoin d'un **butin aléatoire** (dont le contenu varie à chaque ouverture d'un conteneur, comme les conteneurs V1 associés à des tables de butin), consultez le tutoriel [Tables de butin et butin aléatoire](/fr/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot). Ce tutoriel utilise [Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview) pour :

1. Soustraire le jeton de conteneur de l'inventaire du joueur.
2. Exécuter votre logique de sélection aléatoire pondérée.
3. Accorder les articles obtenus via les API d'inventaire.

## Voir aussi

* [Bundles Economy v2](/fr/services/playfab/economy-monetization/economy-v2/catalog/bundles)
* [Boutiques Economy v2](/fr/services/playfab/economy-monetization/economy-v2/catalog/stores)
* [Monnaies virtuelles](/fr/services/playfab/economy-monetization/economy-v2/tutorials/currencies)
* [Vue d'ensemble d'Economy v2](/fr/services/playfab/economy-monetization/economy-v2/overview)
* [Référence de l'API PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items)
* [Référence de l'API AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items)


## Related topics

- [Containers with fixed contents in Economy v2](/services/playfab/economy-monetization/economy-v2/tutorials/containers-with-fixed-contents.md)
- [XR-018 : Contenu généré par l'utilisateur](/fr/publishing/certification/xr/xr-018.md)
- [XR-037 Dépendances vis-à-vis des packages de contenu](/fr/publishing/certification/xr/xr-037.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr-CA/publishing/certification/console-cert-tested-requirements.md)
- [XR-037 Dépendances envers les paquets de contenu](/fr-CA/publishing/certification/xr/xr-037.md)
