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

# Tabelas de drop no Economy (Legacy)

> Crie tabelas de drop ponderadas e sequenciais no PlayFab Legacy Economy usando o Game Manager para conceder loot aleatório e recompensas aos jogadores a partir do seu catálogo.

# Tabelas de drop (Legacy Economy)

<Info>
  As APIs do Economy v1 estão em modo de manutenção e não receberão novos recursos, apenas correções de bugs. **As APIs v1 serão mantidas no futuro próximo.** Consulte a [Visão geral do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/overview) para saber mais sobre a próxima versão do PlayFab Economy!
</Info>

Este tutorial mostra as etapas para criar tabelas de drop usando o Game Manager do PlayFab.

As tabelas de drop permitem gerar aleatoriamente [itens de inventário](/pt-BR/services/playfab/player-progression/player-data/player-inventory), e as tabelas de drop *sequenciais* podem fornecer alguma aleatoriedade às recompensas dos jogadores.

* Presumimos que você já esteja familiarizado com [Catálogos](/pt-BR/services/playfab/economy-monetization/economy/items/catalogs), [Inventário](/pt-BR/services/playfab/player-progression/player-data/player-inventory) e o [Game Manager](/pt-BR/services/playfab/live-service-management/gamemanager/quickstart) do PlayFab.
* Você deve ter um *catálogo principal*, que contenha itens padrão, que não sejam pacotes nem contêineres.
* Você deve ter definido pelo menos *uma* moeda virtual, que você usará como moeda "gratuita" no jogo.

Você pode usar seu próprio conjunto de itens, mas nosso objetivo é criar uma categorização sobreposta de itens.

Como exemplo, usaremos a seguinte tabela de itens:

| | Acessório | Armadura | Espada |
| - | :- | :- | :- |
| **Comum** | Common Accessory | Common Armor | Common Sword |
| **Incomum** | Uncommon Accessory | Uncommon Armor | Uncommon Sword |
| **Raro** | Rare Accessory | Rare Armor | Rare Sword |
| **Lendário** | Legendary Accessory | Legendary Armor | Legendary Sword |

Depois de configurar um conjunto semelhante de itens para trabalhar no seu catálogo, estaremos prontos para criar as tabelas de drop.

## Criar tabelas de drop

No Game Manager:

1. Navegue até o seu **Título**.
2. Selecione **Economy** no menu à esquerda.
3. Vá para a guia **Catalogs** e escolha seu catálogo principal.
4. Selecione **Drop Tables**.

Sua tela deve ser semelhante a este exemplo.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-catalogs-drop-tables.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=3ee2c6e31f0afbd822a1117ad70f1d79" alt="Game Manager - Catalogs - Drop Tables" width="943" height="488" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-catalogs-drop-tables.png" />

Comece a criar **Drop Tables** com base em cada um dos descritores dos seus itens. Nossa primeira categorização é **Tipo de equipamento**, então criaremos uma nova **Drop Table** chamada **Accessories**.

1. Selecione o botão **New Drop Table**.

2. Defina o **Table Id** como **Accessories**.

3. Selecione **ADD TO DROP TABLE**. A janela pop-up **Pick multiple items** será exibida.

4. Adicione estes itens selecionando o botão **Add** ao lado do **ID** deles:
   * **Common Accessory**
   * **Uncommon Accessory**
   * **Rare Accessory**
   * **Legendary Accessory**

5. Selecione o botão **Close**.

6. Ajuste os valores de **Weight** dos itens de acordo com a raridade:

   * **Common**: 1000
   * **Uncommon**: 100
   * **Rare**: 10
   * **Legendary**: 1

   Os pesos indicam com que frequência os itens devem cair em comparação uns com os outros. No exemplo mostrado aqui, você obterá aproximadamente **1000 itens Common** para cada **Legendary**.

7. Selecione **SAVE DROP TABLE**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-accessories.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=3bcb2b90132d3dec3eafdaef771461ab" alt="Game Manager - Drop Table - Editar Accessories" width="1280" height="900" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-accessories.png" />

Com **Accessories** concluída, siga as mesmas etapas para criar tabelas de drop para **Armors** e **Weapons**.

Nossa outra categorização é por raridade, então criaremos um conjunto alternativo de tabelas, começando com **Common Equipment**.

1. Selecione o botão **New Drop Table**.

2. Defina o **Table Id** como **Common Equipment**.

3. Selecione **ADD TO DROP TABLE**. A janela pop-up **Pick multiple items** será exibida.

4. Adicione estes itens selecionando o botão **Add** ao lado do **ID** deles:
   * **Common Accessory**
   * **Common Armor**
   * **Common Sword**

5. Selecione o botão **Close**.

6. Ajuste os valores de **Weight** dos itens de acordo com a frequência com que as opções de **Common Equipment** devem aparecer nesse espaço:

   * **Common Accessory**: 1
   * **Common Armor**: 4
   * **Common Sword**: 5

7. Selecione **SAVE DROP TABLE**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-common-equipment.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=e82dae21d2162de31f53bbf112c2d225" alt="Game Manager - Drop Table - Editar Common Equipment" width="1280" height="900" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-drop-table-edit-common-equipment.png" />

### Usar tabelas de drop

Você pode acessar as tabelas de drop programaticamente usando estes dois métodos da API de servidor do PlayFab:

1. [GetRandomResultTables](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables)
2. [EvaluateRandomResultTable](xref:titleid.playfabapi.com.server.playeritemmanagement.evaluaterandomresulttable)

Usando [GetRandomResultTables](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables), você pode ler os dados brutos da tabela de drop que inserimos no Game Manager.

<Note>
  **`GetRandomResultTables`** *não* sorteia valores aleatórios nem concede resultados. A API permite que você leia os dados e analise as informações da forma que achar melhor.
</Note>

### Opção 1

```csharp theme={null}
public void ReadDropTableData() {
    PlayFabServerAPI.GetRandomResultTables(new GetRandomResultTablesRequest() {
        TableIDs = new List<string> { "Accessories", "Common Equipment" }
    }, result => {
        Debug.Log("Completed getting drop tables");
    }, error => {
        Debug.LogError(error.GenerateErrorReport());
    });
}
```

O manipulador de resultados receberá as informações de estrutura da tabela de drop que criamos, formatadas como um [GetRandomResultTablesResult](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables#getrandomresulttablesresult).

Como alternativa, você pode deixar que o PlayFab avalie a tabela *por* você e forneça um único item como resultado usando a API [EvaluateRandomResultTable](xref:titleid.playfabapi.com.server.playeritemmanagement.evaluaterandomresulttable). Isso retorna o `itemId` que pode ser usado para gerar um único item, sorteado de acordo com os pesos fornecidos.

Em seguida, você pode fazer uma segunda chamada, que cria o item e o concede ao jogador.

### Opção 2

```csharp theme={null}
public void Grant(string playFabId, string tableId) {
    // First, roll a random number and evaluate the drop table
    PlayFabServerAPI.EvaluateRandomResultTable(new EvaluateRandomResultTableRequest()
    {
        TableId = tableId
    }, result => OnRandomResultTableResponse(result, playFabId), OnError);
}

public void OnRandomResultTableResponse(EvaluateRandomResultTableResult tableResult, string playFabId) {
    // Second, take the result and grant it to the player
    PlayFabServerAPI.GrantItemsToUser(new GrantItemsToUserRequest {
        PlayFabId = playFabId,
        ItemIds = new List<string> { tableResult.ResultItemId }
    }, result =>
    {
        // Handle Result
    }, OnError);
}

public void OnError(PlayFabError error) {
    Debug.LogError(error.GenerateErrorReport());
}
```

Resumindo:

**Opção 1** - Permite que você carregue os dados uma vez, armazene-os em cache e faça o sorteio *você mesmo* no seu próprio servidor de jogo. Essa opção tem latência menor devido ao menor número de chamadas ao PlayFab e permite personalizar os sorteios com base na lógica específica do jogo.

**Opção 2** - Deixa o PlayFab fazer mais do trabalho, mas lembre-se: várias chamadas de API significam latência *maior*.

### Uso avançado de tabelas de drop (configurar uma caixa de loot)

As tabelas de drop podem ser vinculadas a partir de pacotes e contêineres. Os pacotes são uma ótima opção para lojas de moeda virtual, em que uma única compra gera uma pilha de itens aleatórios.

Por exemplo, digamos que temos um **pacote de 11 itens** com regras de drop específicas. Nesse caso, um argumento de venda voltado ao cliente é que garantiremos um item lendário. Também vamos *restringi-lo*, para que o jogador não tenha sorte *demais* e receba **11 itens lendários**.

### Nova tabela de drop

Vamos criar uma tabela de drop que pode literalmente soltar *qualquer coisa*; na verdade, vamos chamá-la de **Anything**.

Ao criar essa tabela de drop, atribua a ela *outras* tabelas de drop como opções (na janela pop-up **Pick multiple items**, selecione a guia **Drop Tables** para adicionar outras tabelas de drop) e atribua a elas os pesos adequados.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-new-drop-table.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=91467936c149620be0008ee13b429ca4" alt="Game Manager - Nova tabela de drop" width="1280" height="900" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-new-drop-table.png" />

## Adicionar um pacote

Neste ponto, terminamos as tabelas de drop e adicionaremos um **Bundle**.

1. Selecione **Economy** no menu à esquerda.
2. Vá para a guia **Catalogs** e escolha seu catálogo principal.
3. Selecione **Bundles** e escolha **New Bundle**.
4. Defina o **Item Id** como **11-Item Drop**, selecione **Consumable** e escolha **By time** **15 Seconds**.
5. Selecione **ADD TO BUNDLE**.
6. Na janela pop-up **Pick multiple items**, selecione a guia **Drop tables**.
7. Adicione as tabelas de drop selecionando o botão **Add** ao lado do **ID** delas.
8. Defina os campos **Quantity** com os valores mostrados na imagem abaixo.
9. Selecione **SAVE BUNDLE**.

<img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy/tutorials/game-manager-new-catalog-bundle.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=32e531cbb1e6833a2214055427c0c133" alt="Game Manager - Novo pacote de catálogo" width="1280" height="1500" data-path="images/playfab/economy-monetization/economy/tutorials/game-manager-new-catalog-bundle.png" />

O **Bundle** que criamos para este exemplo usa vários recursos:

* Todos os itens de *qualquer* tipo devem ter um **Item ID**.
* Um **Bundle** conta como um item próprio, e seu conteúdo é entregue no mesmo momento em que ele é concedido. Por esse motivo, estamos tornando o próprio **Bundle** consumível, e ele expira 15 segundos após a entrega.
* Adicionamos diferentes **Drop tables** em quantidades diferentes para garantir que **11 itens** sejam entregues, mas itens diferentes são sorteados em tabelas diferentes.
  * Primeiro, garantimos pelo menos **1 item lendário**, então o primeiro espaço será sorteado em **Legendary Equipment**.
  * Os próximos 3 espaços são sorteados em **Anything**, que pode gerar mais itens **Legendary** ou equipamentos comuns menos desejáveis. Esses sorteios definirão um resultado *bom* versus um *ruim*, já que esses três itens podem variar bastante.
  * Por fim, preenchemos os espaços restantes com itens **Rare** e **Uncommon** garantidos, assegurando que um sorteio de **11 itens** não seja *bom* ou ruim *demais*.

## Conclusão

Uma tabela de drop gera um único item aleatoriamente a partir de uma lista de itens e pesos possíveis. Pacotes e contêineres podem ser uma das maneiras mais simples de entregar um ou mais itens a um jogador usando tabelas de drop.

Você pode usar manualmente uma tabela de drop a partir do [CloudScript](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript), usando um destes métodos da API de servidor:

1. [GetRandomResultTables](xref:titleid.playfabapi.com.server.playeritemmanagement.getrandomresulttables)
2. [EvaluateRandomResultTable](xref:titleid.playfabapi.com.server.playeritemmanagement.evaluaterandomresulttable)


## 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)
- [Lojas personalizadas para segmentos de jogadores no Economy (Legacy)](/pt-BR/services/playfab/economy-monetization/economy/tutorials/custom-stores-for-player-segments.md)
- [Práticas recomendadas para segmentação de lojas no Economy (Legacy)](/pt-BR/services/playfab/economy-monetization/economy/tutorials/best-practices-for-store-segmentation.md)
- [Obter o valor até a data (VTD) de um jogador no Economy (Legacy)](/pt-BR/services/playfab/economy-monetization/economy/tutorials/getting-a-players-vtd.md)
- [Catálogos (Economy Legado)](/pt-BR/services/playfab/economy-monetization/economy/items/catalogs.md)
