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

# Estatísticas com metadados

> Anexe metadados às estatísticas do PlayFab para incluir detalhes contextuais junto com os valores numéricos, enriquecendo as entradas dos placares e os dados de progressão dos jogadores.

# Adicionar dados contextuais às estatísticas

Neste tutorial, vamos explicar como adicionar informações contextuais sempre que uma estatística for atualizada. Há casos em que apenas
salvar as estatísticas não é suficiente. O estúdio do jogo pode adicionar alguns detalhes sobre como um jogador executou uma ação específica,
ou pode haver um recurso no jogo relacionado à estatística.

Vamos continuar com nosso jogo de tiro competitivo. Neste exemplo, o jogo faz um enorme sucesso, mas está
enfrentando 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 no nosso jogo.

## Criando uma estatística

Para mostrar como lidar com esse cenário, vamos usar a definição de estatística da página
[Fazendo mais com estatísticas](/pt-BR/services/playfab/player-progression/statistics/doing-more-statistics). A partir dessa definição, vamos
ver como adicionar metadados a cada linha adicionada à estatística.

```C# theme={null}
public static async Task CreateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
    {
        Name = statName,
        AuthenticationContext = context,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Distance",
                AggregationMethod = StatisticAggregationMethod.Max,
            },
             new StatisticColumn()
            {
                Name = "Caliber",
                AggregationMethod = StatisticAggregationMethod.Min,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}
```

Para este tutorial, o elemento importante a ser extraído deste exemplo é a estrutura da estatística. Como você pode ver,
ela tem várias colunas que permitem vários valores. Mas nosso foco é em como podemos adicionar informações
contextuais a cada uma dessas linhas.

### Adicionando metadados a cada estatística

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. Só precisamos anexar
essas informações à estatística de tiros de longa distância.

Para isso, vamos usar a API UpdateStatistics. Aqui podemos conferir o exemplo do SDK:

```C# theme={null}
public static async Task UpdateStatisticForPlayer(PlayFabAuthenticationContext context, string statName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateStatisticsRequest updateStatRequest = new UpdateStatisticsRequest()
    {
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
        AuthenticationContext = context,
        Statistics = new List<PlayFab.LeaderboardsModels.StatisticUpdate>() 
        {
            new PlayFab.LeaderboardsModels.StatisticUpdate() 
            {
                Name = statName,
                Scores = new List<string> { score.ToString()},
                Metadata = "Anticheat data"
            }
        }
    };

    PlayFabResult<UpdateStatisticsResponse> updateResult = await statsAPI.UpdateStatisticsAsync(updateStatRequest);
}
```

O principal conceito que podemos ver aqui é o uso do parâmetro `Metadata` no `StatisticUpdate`, que se refere
aos dados contextuais que serão atualizados além do próprio valor. Aqui podemos adicionar qualquer informação que possa ser significativa para um desenvolvedor;
neste caso, os dados do sistema antitrapaça.

Com esses exemplos, agora estamos preparados para acompanhar todas as informações relevantes dos nossos principais jogadores, permitindo que os moderadores do jogo
tomem decisões melhores sobre quem banir.

## Conclusões

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

* Criar uma estatística com várias colunas.
* Adicionar metadados à estatística.

## Confira também

* [Criar estatísticas básicas](/pt-BR/services/playfab/player-progression/statistics/create-basic-statistics).
* [Fazendo mais com estatísticas](/pt-BR/services/playfab/player-progression/statistics/doing-more-statistics).
* [Estatísticas sazonais](/pt-BR/services/playfab/player-progression/statistics/seasonal-statistics).
* [Gravações transacionais](/pt-BR/services/playfab/player-progression/statistics/transactional-writes)
* [Referência de API](/pt-BR/services/playfab/player-progression/statistics/api-reference).
* [Limites](/pt-BR/services/playfab/player-progression/statistics/limits-statistics).
* [Cota](/pt-BR/services/playfab/player-progression/statistics/quota-statistics)


## Related topics

- [Fazendo mais com estatísticas](/pt-BR/services/playfab/player-progression/statistics/doing-more-statistics.md)
- [Primeiros passos com estatísticas baseadas em eventos](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-stats-first-glance.md)
- [Estatísticas baseadas em eventos vs. estatísticas gerenciadas pelo título](/pt-BR/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
- [Visão geral das estatísticas do PlayFab](/pt-BR/services/playfab/player-progression/statistics/index.md)
- [Documentação de progressão do jogador do PlayFab](/pt-BR/services/playfab/player-progression/index.md)
