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

# Adicionar dados contextuais às tabelas de classificação

> Anexe metadados personalizados a cada linha de uma tabela de classificação do PlayFab para acompanhar o contexto da partida, detalhes do dispositivo ou sinais antitrapaça junto com as pontuações e a classificação dos jogadores.


Neste tutorial, vamos explicar como adicionar informações contextuais sempre que uma tabela de classificação é atualizada. O estúdio do jogo pode querer adicionar alguns detalhes sobre o contexto em que um jogador alcançou uma pontuação, ou pode haver um recurso no jogo relacionado a essa pontuação.

Agora vamos deixar de lado nossos exemplos anteriores, nos quais tínhamos um jogo de arcade, e passar para um jogo de tiro altamente competitivo. Neste exemplo,
o jogo faz um enorme sucesso, mas enfrenta um desafio. Há muitas reclamações sobre pessoas "hackeando" o jogo com componentes
externos que removem o recuo das armas e melhoram a assistência de mira. Então, agora temos a tarefa de acompanhar mais informações sobre todos
os componentes usados e as informações de rede das nossas partidas ranqueadas.

## Criando uma tabela de classificação

Para mostrar como lidar com esse cenário, vamos usar a definição de tabela de classificação da página
[Fazendo mais com tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/doing-more-with-leaderboards). A partir dessa definição, vamos
ver como adicionar metadados a cada linha adicionada à tabela de classificação.

```C# theme={null}
public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        SizeLimit = 1000,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Eliminations",
                SortDirection = LeaderboardSortDirection.Descending,
            },
            new LeaderboardColumn()
            {
                Name = "Assists",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}
```

### Adicionando metadados a cada linha

Queremos saber se o jogador tem algum hardware não autorizado que afete a jogabilidade ou qualquer outro software mal-intencionado que possa
melhorar o desempenho do jogador. O sistema antitrapaça é capaz de obter todas essas informações, mas, como há um
número enorme de jogadores, vamos nos concentrar em sinalizar e verificar as pontuações altas, além dos metadados de componentes externos.

Para realizar essa ação, vamos usar a API UpdateLeaderboard. Aqui podemos conferir o exemplo do SDK:

```C# theme={null}
public static async Task UpdateLeaderboardForPlayer(PlayFabAuthenticationContext context, string leaderboardName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateLeaderboardEntriesRequest updateLeaderboardRequest = new UpdateLeaderboardEntriesRequest()
    {
        Entries = new List<LeaderboardEntryUpdate>()
        {
            new LeaderboardEntryUpdate()
            {
                EntityId = entityId,
                Scores = new List<string> { score.ToString(), (score + 1).ToString(), (score + 2).ToString() },
                Metadata = "AntiCheat Data",
            }
        },
        AuthenticationContext = context,
        LeaderboardName = leaderboardName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> updateResult = await leaderboardsAPI.UpdateLeaderboardEntriesAsync(updateLeaderboardRequest);
}
```

Aqui, usamos o parâmetro `Metadata` dentro de `LeaderboardEntryUpdate` para adicionar informações significativas para um desenvolvedor. Neste caso, nós o usamos para armazenar dados antitrapaça. Com este exemplo, agora estamos preparados para acompanhar todas as informações relevantes dos nossos melhores jogadores, permitindo que os moderadores do jogo
tomem decisões melhores sobre quem banir.

## Conclusões

Neste tutorial, aprendemos a realizar as seguintes operações:

* Criar uma tabela de classificação com várias colunas.
* Adicionar metadados a cada linha da tabela de classificação.

## Confira também

* [Fazendo mais com tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [Criar uma tabela de classificação básica](/pt-BR/services/playfab/community/leaderboards/create-basic-leaderboard).
* [Limites ](/pt-BR/services/playfab/community/leaderboards/limits-leaderboards).
* [Cota ](/pt-BR/services/playfab/community/leaderboards/quota-leaderboards).
* [Tabelas de classificação de grupos](/pt-BR/services/playfab/community/leaderboards/group-leaderboards).
* [Níveis manuais](/pt-BR/services/playfab/community/leaderboards/manual-tiers).
* [Classificando jogadores por estatísticas](/pt-BR/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [Adicionar dados contextuais às tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/metadata-leaderboards)
* [Referência da API](/pt-BR/services/playfab/community/leaderboards/api-reference)
* [Tabelas de classificação e CloudScript](/pt-BR/services/playfab/community/leaderboards/leaderboards-cloudscript).
* [Tabelas de classificação com PlayStream](/pt-BR/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)


## Related topics

- [Tabelas de classificação sazonais](/pt-BR/services/playfab/community/leaderboards/seasonal-leaderboards.md)
- [Tabelas de classificação de grupos](/pt-BR/services/playfab/community/leaderboards/group-leaderboards.md)
- [Limites das tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/limits-leaderboards.md)
- [Cota das tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/quota-leaderboards.md)
- [Tabelas de classificação usando o Azure Functions](/pt-BR/services/playfab/community/leaderboards/leaderboards-cloudscript.md)
