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

# Contêineres com conteúdo fixo no Economy v2

> Recrie itens de contêiner herdados do PlayFab no Economy v2 combinando um token de moeda virtual com um bundle que desempacota recompensas fixas na compra.

<Info>
  O Economy v2 agora está em disponibilidade geral. Para obter suporte e enviar comentários, acesse o [Fórum do PlayFab](https://community.playfab.com).
</Info>

O Economy v1 (herdado) tinha um recurso interno de **Contêineres**: itens de catálogo especiais que, ao serem abertos, concediam seu conteúdo ao inventário do jogador. O Economy v2 não inclui contêineres como um tipo de item nativo, mas você pode obter o mesmo comportamento para **contêineres de conteúdo fixo** (contêineres que sempre concedem os mesmos itens) usando uma combinação de moeda virtual e bundles.

## Como funciona

O padrão usa três blocos de construção do Economy v2:

1. **Uma moeda virtual (ou item empilhável)** que representa o próprio contêiner, por exemplo, "Treasure Chest Token".
2. **Um Bundle** com preço de 1 unidade dessa moeda, contendo os itens que o contêiner deve conceder.
3. **Uma chamada de compra** em que o jogador gasta 1 token para comprar o bundle, que é automaticamente desempacotado e concede os itens.

Do ponto de vista do jogador, ele recebe um token (por meio de recompensas de jogabilidade, compras na loja e assim por diante) e depois o "abre" para obter os itens dentro dele, exatamente como os contêineres da V1 funcionavam.

## Pré-requisitos

* Uma [conta de desenvolvedor do PlayFab](https://developer.playfab.com/en-us/sign-up).
* Um título criado no [Game Manager](https://developer.playfab.com/).
* Pelo menos um item de catálogo publicado que você deseja que o contêiner conceda.

## Etapa 1: Criar uma moeda virtual para o contêiner

Crie uma moeda virtual que represente o contêiner. Cada unidade dessa moeda atua como um contêiner não aberto.

### Game Manager

1. Acesse **Economy** > **Catalog (V2)** > **Currency**.
2. Selecione **New currency**.
3. Defina o **Title** como um nome descritivo, como `Treasure Chest`.
4. Defina o **FriendlyId** como um código curto, como `tc`.
5. Selecione **Save and publish**.

### API REST

Chame [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
}
```

***

## Etapa 2: Criar um bundle com preço de um token de contêiner

Crie um bundle que contenha os itens que você deseja que o contêiner conceda. Defina o preço do bundle como exatamente uma unidade da moeda do contêiner.

### Game Manager

1. Acesse **Economy** > **Catalog (V2)** > **Bundles**.
2. Selecione **New bundle**.
3. Defina o **Title** para descrever o conteúdo do contêiner, como `Treasure Chest Contents`.
4. Em **Items**, adicione os itens e as quantidades que você deseja que o contêiner conceda, por exemplo, 1 **Legendary Sword** e 100 **Gold**.
5. Em **Price**, defina o preço como **1** da moeda do seu contêiner (**Treasure Chest**).
6. Selecione **Save and publish**.

### API REST

Chame [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
}
```

***

Quando um jogador compra esse bundle, ele é [desempacotado automaticamente](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/bundles#purchasing-and-unpacking-bundles), e os itens individuais vão diretamente para o inventário do jogador.

## Etapa 3: Conceder tokens de contêiner aos jogadores

Conceda a moeda do contêiner aos jogadores por meio de qualquer mecanismo que se encaixe no design do seu jogo:

* **Recompensas de jogabilidade**: conceda tokens após a conclusão de um nível, missão ou conquista usando [AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items).
* **Compras na loja**: venda o token de contêiner em uma [Loja](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/stores) por outra moeda virtual ou dinheiro real.
* **Passe de batalha / recompensas sazonais**: inclua o token como um nível de recompensa.

Exemplo usando `AddInventoryItems` para conceder três tokens Treasure Chest:

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

## Etapa 4: Abrir o contêiner

Quando o jogador quiser abrir um contêiner, chame [PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items) para comprar o bundle com um token de contêiner:

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

Após uma chamada bem-sucedida, o inventário do jogador é atualizado: um token Treasure Chest é deduzido e o conteúdo do bundle (uma Legendary Sword + 100 Gold) é adicionado.

## Vários tipos de contêiner

Crie vários tipos de contêiner repetindo esse padrão. Por exemplo:

| Contêiner | Moeda (FriendlyId) | Conteúdo do bundle |
| - | - | - |
| Treasure Chest | `tc` | Uma Legendary Sword + 100 Gold |
| Supply Crate | `sc` | Cinco Health Potions + 3 Mana Potions |
| Premium Box | `pb` | Uma Rare Mount + 500 Gold + 50 Gems |

Cada tipo de contêiner tem sua própria moeda e seu próprio bundle.

## Usar uma Loja para compras de contêineres

Use uma [Loja](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/stores) para substituir o preço do bundle do contêiner. Usando uma loja, você pode oferecer o mesmo contêiner a preços diferentes em contextos diferentes (por exemplo, um custo de "abertura" com desconto durante um 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
}
```

Em seguida, passe o `StoreId` ao comprar:

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

## Limitações

Esse padrão funciona para contêineres com **conteúdo fixo e determinístico**. Se você precisar de **loot aleatório** (em que o conteúdo varia cada vez que um contêiner é aberto, semelhante aos contêineres da V1 combinados com tabelas de drop), consulte o tutorial [Tabelas de drop e loot aleatório](/pt-BR/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot). Esse tutorial usa o [Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview) para:

1. Subtrair o token de contêiner do inventário do jogador.
2. Executar sua lógica de seleção aleatória ponderada.
3. Conceder os itens resultantes por meio das APIs de inventário.

## Confira também

* [Bundles do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/bundles)
* [Lojas do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/stores)
* [Moedas virtuais](/pt-BR/services/playfab/economy-monetization/economy-v2/tutorials/currencies)
* [Visão geral do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/overview)
* [Referência da API PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items)
* [Referência da API AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items)


## Related topics

- [Tabelas de drop e saque aleatório no Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot.md)
- [Visão geral do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/overview.md)
- [Perguntas frequentes sobre o Economy versão 2 (V2)](/pt-BR/services/playfab/economy-monetization/economy-v2/faq.md)
- [Tipos de conteúdo, marcas e propriedades do catálogo do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/content-types-tags-and-properties.md)
- [Documentação do PlayFab Economy v2](/pt-BR/services/playfab/economy-monetization/index.md)
