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

# Contenedores con contenido fijo en Economy v2

> Recree los artículos de contenedor heredados de PlayFab en Economy v2 combinando un token de moneda virtual con una agrupación que desempaqueta recompensas fijas al comprarla.

<Info>
  Economy v2 ya está disponible con carácter general. Para soporte y comentarios, vaya al [foro de PlayFab](https://community.playfab.com).
</Info>

Economy v1 (heredado) tenía una característica integrada de **contenedores**: artículos especiales del catálogo que, al abrirse, concedían su contenido al inventario del jugador. Economy v2 no incluye los contenedores como tipo de artículo nativo, pero puede lograr el mismo comportamiento para los **contenedores de contenido fijo** (contenedores que siempre conceden los mismos artículos) mediante una combinación de moneda virtual y agrupaciones.

## Funcionamiento

El patrón usa tres bloques de creación de Economy v2:

1. **Una moneda virtual (o un artículo apilable)** que representa el propio contenedor; por ejemplo, "Treasure Chest Token".
2. **Una agrupación** con un precio de 1 unidad de esa moneda, que contiene los artículos que el contenedor debe conceder.
3. **Una llamada de compra** en la que el jugador gasta 1 token para comprar la agrupación, que se desempaqueta automáticamente y concede los artículos.

Desde la perspectiva del jugador, recibe un token (mediante recompensas de juego, compras en la tienda, etc.) y después lo "abre" para obtener los artículos que hay dentro, exactamente como funcionaban los contenedores de la versión 1.

## Requisitos previos

* Una [cuenta de desarrollador de PlayFab](https://developer.playfab.com/en-us/sign-up).
* Un título creado en [Game Manager](https://developer.playfab.com/).
* Al menos un artículo de catálogo publicado que quiera que el contenedor conceda.

## Paso 1: Crear una moneda virtual para el contenedor

Cree una moneda virtual que represente el contenedor. Cada unidad de esta moneda actúa como un contenedor sin abrir.

### Game Manager

1. Vaya a **Economy** > **Catalog (V2)** > **Currency**.
2. Seleccione **New currency**.
3. Establezca el **Title** en un nombre descriptivo, como `Treasure Chest`.
4. Establezca el **FriendlyId** en un código corto, como `tc`.
5. Seleccione **Save and publish**.

### API REST

Llame a [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
}
```

***

## Paso 2: Crear una agrupación con un precio de un token de contenedor

Cree una agrupación que contenga los artículos que quiere que el contenedor conceda. Ponga a la agrupación un precio de exactamente una unidad de la moneda del contenedor.

### Game Manager

1. Vaya a **Economy** > **Catalog (V2)** > **Bundles**.
2. Seleccione **New bundle**.
3. Establezca el **Title** de forma que describa el contenido del contenedor, como `Treasure Chest Contents`.
4. En **Items**, agregue los artículos y las cantidades que quiere que el contenedor conceda; por ejemplo, 1 **Legendary Sword** y 100 **Gold**.
5. En **Price**, establezca el precio en **1** unidad de la moneda del contenedor (**Treasure Chest**).
6. Seleccione **Save and publish**.

### API REST

Llame a [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
}
```

***

Cuando un jugador compra esta agrupación, la agrupación se [desempaqueta automáticamente](/services/playfab/economy-monetization/economy-v2/catalog/bundles#purchasing-and-unpacking-bundles): los artículos individuales van directamente al inventario del jugador.

## Paso 3: Conceder tokens de contenedor a los jugadores

Conceda la moneda del contenedor a los jugadores mediante cualquier mecanismo que se ajuste al diseño de su juego:

* **Recompensas de juego**: conceda tokens tras completar un nivel, una misión o un logro mediante [AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items).
* **Compras en la tienda**: venda el token de contenedor en una [tienda](/services/playfab/economy-monetization/economy-v2/catalog/stores) por otra moneda virtual o dinero real.
* **Pase de batalla o recompensas de temporada**: incluya el token como un nivel de recompensa.

Ejemplo con `AddInventoryItems` para conceder tres tokens de Treasure Chest:

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

## Paso 4: Abrir el contenedor

Cuando el jugador quiera abrir un contenedor, llame a [PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items) para comprar la agrupación con un token de contenedor:

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

Tras una llamada correcta, el inventario del jugador se actualiza: se descuenta un token de Treasure Chest y se agrega el contenido de la agrupación (una Legendary Sword + 100 Gold).

## Varios tipos de contenedor

Cree varios tipos de contenedor repitiendo este patrón. Por ejemplo:

| Contenedor     | Moneda (FriendlyId) | Contenido de la agrupación            |
| -------------- | ------------------- | ------------------------------------- |
| Treasure Chest | `tc`                | Una Legendary Sword + 100 Gold        |
| Supply Crate   | `sc`                | Cinco Health Potions + 3 Mana Potions |
| Premium Box    | `pb`                | Una Rare Mount + 500 Gold + 50 Gems   |

Cada tipo de contenedor tiene su propia moneda y su propia agrupación.

## Uso de una tienda para las compras de contenedores

Use una [tienda](/services/playfab/economy-monetization/economy-v2/catalog/stores) para invalidar el precio de la agrupación del contenedor. Con una tienda, puede ofrecer el mismo contenedor a precios distintos en contextos distintos (por ejemplo, un costo de "apertura" con descuento durante un evento):

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

Después, pase el `StoreId` al comprar:

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

## Limitaciones

Este patrón funciona para contenedores con **contenido fijo y determinista**. Si necesita **botín aleatorio** (donde el contenido varía cada vez que se abre un contenedor, de forma similar a los contenedores de la versión 1 emparejados con tablas de botín), consulte el tutorial [Tablas de botín y botín aleatorio](/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot). Ese tutorial usa [Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview) para:

1. Restar el token de contenedor del inventario del jugador.
2. Ejecutar su lógica de selección aleatoria ponderada.
3. Conceder los artículos resultantes mediante las API de inventario.

## Consulte también

* [Agrupaciones de Economy v2](/services/playfab/economy-monetization/economy-v2/catalog/bundles)
* [Tiendas de Economy v2](/services/playfab/economy-monetization/economy-v2/catalog/stores)
* [Monedas virtuales](/services/playfab/economy-monetization/economy-v2/tutorials/currencies)
* [Información general de Economy v2](/services/playfab/economy-monetization/economy-v2/overview)
* [Referencia de la API PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items)
* [Referencia de la API AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items)


## Related topics

- [Tablas de botín y botín aleatorio en Economy v2](/es/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot.md)
- [Información general de Economy v2](/es/services/playfab/economy-monetization/economy-v2/overview.md)
- [Preguntas frecuentes sobre Economy versión 2 (V2)](/es/services/playfab/economy-monetization/economy-v2/faq.md)
- [Tipos de contenido, etiquetas y propiedades del catálogo de Economy v2](/es/services/playfab/economy-monetization/economy-v2/catalog/content-types-tags-and-properties.md)
- [Lotes de Economy v2](/es/services/playfab/economy-monetization/economy-v2/catalog/bundles.md)
