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

# Classificando jogadores por estatísticas

> Vincule uma tabela de classificação do PlayFab a uma definição de Statistic para que as atualizações das estatísticas dos jogadores alimentem automaticamente as entradas da tabela de classificação, classificando os jogadores pelos valores acompanhados.

Neste tutorial, vamos aprender a usar os serviços Leaderboards e Statistics juntos. O resultado final é que, quando uma estatística é atualizada em uma entidade, ela é refletida automaticamente na tabela de classificação correspondente.
Para obter mais informações sobre o PlayFab Statistics, confira \[Visão geral do Statistics]\([Visão geral do PlayFab Statistics](/pt-BR/services/playfab/player-progression/statistics)).

Vamos começar com o exemplo de um jogo de tiro que usa os dois serviços. Aqui vamos aproveitar o
tutorial [Criar uma estatística básica](/pt-BR/services/playfab/player-progression/statistics/create-basic-statistics) e continuar presumindo que já
temos estatísticas criadas para o jogo. Agora, queremos acompanhar os tiros de longa distância toda vez que um jogador acerta um em uma partida. Teremos
uma estatística que registra o melhor tiro de longa distância de um jogador e uma tabela de classificação com os melhores jogadores em tiros de longa distância.

## Criando uma tabela de classificação vinculada a uma estatística

A primeira etapa é criar uma definição de tabela de classificação que possa receber como entrada as informações acompanhadas pelo serviço
Statistics. O exemplo a seguir mostra como criar a definição da tabela de classificação usando o SDK do C#.

```C# theme={null}

public static async Task CreateStatLinkedLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName, string statName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        EntityType = EntityType,
        Name = leaderboardName,
        SizeLimit = 1000,
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Distance",
                SortDirection = LeaderboardSortDirection.Descending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Distance",
                }
            },
            new LeaderboardColumn()
            {
                Name = "Caliber of the bullet",
                SortDirection = LeaderboardSortDirection.Ascending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Caliber",
                }
            }
        }
    };

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

Agora, vamos explicar a principal diferença em relação às outras definições de tabela de classificação que criamos antes. Observe o objeto `LeaderboardColumn`, com uma propriedade chamada `LinkedStatisticColumn`, que nos permite criar um vínculo entre
as estatísticas e a tabela de classificação. Precisamos especificar o nome da estatística e o nome da coluna dentro dessa estatística para fazer o mapeamento.

Com isso, acompanhamos o progresso do jogador com o serviço Statistics. Em seguida, o serviço Leaderboards usa
essas informações e preenche a tabela de classificação vinculada.

## Desvincular a estatística da tabela de classificação

O serviço também tem um mecanismo para desvincular as estatísticas da tabela de classificação, se necessário. Pode haver vários
motivos pelos quais um desenvolvedor queira realizar essa ação, como testar configurações diferentes ou mapear
estatísticas diferentes. O exemplo a seguir mostra como desvincular as estatísticas da tabela de classificação usando o SDK do C#.

```C# theme={null}
public static async Task UnlinkLeaderboard(PlayFabAuthenticationContext context, string statName, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);

    UnlinkLeaderboardFromStatisticRequest unlinkLbRequest = new UnlinkLeaderboardFromStatisticRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        StatisticName = statName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> lbResponse = await leaderboardsAPI.UnlinkLeaderboardFromStatisticAsync(unlinkLbRequest);
}
```

Com essas informações, podemos vincular e desvincular estatísticas das tabelas de classificação sempre que necessário. Há algumas restrições importantes a ter em mente:

* As tabelas de classificação não podem ser atualizadas diretamente; a atualização deve sempre passar pela atualização da estatística para usar o mecanismo automático.
* As tabelas de classificação não podem incrementar sua versão independentemente da estatística.
* As tabelas de classificação não podem ser excluídas a menos que passemos pelo processo de desvinculação.

## Conclusões

Neste tutorial, aprendemos a criar uma tabela de classificação alimentada por estatísticas e também a desvincular os serviços.
Para obter mais informações sobre outros recursos, confira as seguintes páginas:

* [Criar uma tabela de classificação básica](/pt-BR/services/playfab/community/leaderboards/create-basic-leaderboard).
* [Tabelas de classificação sazonais](/pt-BR/services/playfab/community/leaderboards/seasonal-leaderboards).
* [Tabelas de classificação de grupos](/pt-BR/services/playfab/community/leaderboards/group-leaderboards).
* [Limites](/pt-BR/services/playfab/community/leaderboards/limits-leaderboards).
* [Cota](/pt-BR/services/playfab/community/leaderboards/quota-leaderboards).
* [Níveis manuais](/pt-BR/services/playfab/community/leaderboards/manual-tiers).
* [Fazendo mais com tabelas de classificação](/pt-BR/services/playfab/community/leaderboards/doing-more-with-leaderboards).
* [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

- [Visão geral das estatísticas do PlayFab](/pt-BR/services/playfab/player-progression/statistics/index.md)
- [Referência de API de placares de líderes](/pt-BR/services/playfab/community/leaderboards/api-reference.md)
- [Tabelas de classificação usando o Azure Functions](/pt-BR/services/playfab/community/leaderboards/leaderboards-cloudscript.md)
- [Tabelas de classificação com níveis manuais](/pt-BR/services/playfab/community/leaderboards/manual-tiers.md)
- [Fazendo mais com placares de líderes](/pt-BR/services/playfab/community/leaderboards/doing-more-with-leaderboards.md)
