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

# Obter um leaderboard gerenciado pelo título

> Código de exemplo da XSAPI para ler um leaderboard gerenciado pelo título do XBOX Live, incluindo resultados completos, exibições em torno de uma posição e consultas em torno de um jogador.

**Conteúdo**

* [Obter um leaderboard inteiro](#gael)
* [Obter um leaderboard em torno de uma posição especificada](#galaasr)
* [Obter um leaderboard em torno de um jogador especificado](#galaasp)

Este tópico descreve como obter os valores de um leaderboard gerenciado pelo título.

<a id="gael" />

## Obter um leaderboard inteiro

Use [XblLeaderboardGetLeaderboardAsync](/pt-BR/reference/live/xsapi-c/leaderboard_c/functions/xblleaderboardgetleaderboardasync) para retornar os valores de um determinado leaderboard. Os resultados são retornados em ordem decrescente de posição, começando pelo topo do leaderboard. Ao consultar um leaderboard baseado em uma estatística gerenciada pelo título, defina o campo `queryType` como `XblLeaderboardQueryType::TitleManagedStatBackedGlobal` ou `XblLeaderboardQueryType::TitleManagedStatBackedSocial`.

**API C**

```cpp theme={null}
auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of the XAsyncBlock*
    size_t resultSize;
    HRESULT hr = XblLeaderboardGetLeaderboardResultSize(asyncBlock, &resultSize);

    if (SUCCEEDED(hr))
    {
        leaderboardBuffer.resize(resultSize);
        XblLeaderboardResult* leaderboard{};

        hr = XblLeaderboardGetLeaderboardResult(asyncBlock, resultSize, leaderboardBuffer.data(), &leaderboard, nullptr);

        if (SUCCEEDED(hr))
        {
            // Use XblLeaderboardResult in result
            for (auto row = 0u; row < leaderboard->rowsCount; ++row)
            {
                std::stringstream rowText;
                rowText << leaderboard->rows[row].xboxUserId << "\t";

                for (auto column = 0u; column < leaderboard->rows[row].columnValuesCount; ++column)
                {
                    rowText << leaderboard->rows[row].columnValues[column] << "\t";
                }
            }
        }
    }
};

// XblLeaderboardQuery is set up to query for all leaderboard items here
// see example code in sections below showing how to run other queries
XblLeaderboardQuery leaderboardQuery = {}; 
pal::strcpy(leaderboardQuery.scid, sizeof(leaderboardQuery.scid), scid.c_str()) 
leaderboardQuery.statName = statName.c_str(); 
leaderboardQuery.queryType = XblLeaderboardQueryType::TitleManagedStatBackedGlobal;


HRESULT hr = XblLeaderboardGetLeaderboardAsync(
    xboxLiveContext,
    leaderboardQuery,
    asyncBlock.get());
if (SUCCEEDED(hr))
{
    // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership.
    // If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock*
    asyncBlock.release();
}
```

**Referência**

* [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock)
* [XblLeaderboardGetLeaderboardAsync](/pt-BR/reference/live/xsapi-c/leaderboard_c/functions/xblleaderboardgetleaderboardasync)
* [XblLeaderboardGetLeaderboardResult](/pt-BR/reference/live/xsapi-c/leaderboard_c/functions/xblleaderboardgetleaderboardresult)
* [XblLeaderboardGetLeaderboardResultSize](/pt-BR/reference/live/xsapi-c/leaderboard_c/functions/xblleaderboardgetleaderboardresultsize)
* [XblLeaderboardQuery](/pt-BR/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery)
* [XblLeaderboardResult](/pt-BR/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardresult)
* [XblLeaderboardQueryType](/pt-BR/reference/live/xsapi-c/leaderboard_c/enums/xblleaderboardquerytype)

<a id="galaasr" />

## Obter um leaderboard em torno de uma posição especificada

Você pode obter resultados filtrados de uma consulta de leaderboard especificando critérios de consulta ao criar [XblLeaderboardQuery](/pt-BR/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery).
Para obter os valores do leaderboard em torno de uma posição especificada, use o código do exemplo acima, mas substitua as linhas que criam XblLeaderboardQuery pelo código a seguir:

**API C**

```cpp theme={null}
XblLeaderboardQuery leaderboardQuery = {};
pal::strcpy(leaderboardQuery.scid, sizeof(leaderboardQuery.scid), scid.c_str());
leaderboardQuery.statName = statName.c_str();
leaderboardQuery.skipResultToRank = 100;
leaderboardQuery.maxItems = 100;
leaderboardQuery.queryType = XblLeaderboardQueryType::TitleManagedStatBackedGlobal;
```

**Referência**

* [XblLeaderboardQuery](/pt-BR/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery)

<a id="galaasp" />

## Obter um leaderboard em torno de um jogador especificado

Para obter os valores do leaderboard em torno de um jogador especificado, use o código do exemplo acima, mas substitua as linhas que criam [XblLeaderboardQuery](/pt-BR/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery) pelo código a seguir:

**API C**

```cpp theme={null}
XblLeaderboardQuery leaderboardQuery = {};
pal::strcpy(leaderboardQuery.scid, sizeof(leaderboardQuery.scid), scid.c_str());
leaderboardQuery.statName = statName.c_str();
leaderboardQuery.skipToXboxUserId = xboxUserId;
leaderboardQuery.maxItems = 100;
leaderboardQuery.queryType = XblLeaderboardQueryType::TitleManagedStatBackedGlobal;
```

**Referência**

* [XblLeaderboardQuery](/pt-BR/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery)


## Related topics

- [Código de exemplo de estatísticas e leaderboards gerenciados pelo título](/pt-BR/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/live-statslb-tm-howto-nav.md)
- [Instruções](/pt-BR/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/index.md)
- [Estatísticas e leaderboards gerenciados pelo título](/pt-BR/services/xbox-services/player-data/stats-leaderboards/title-managed/live-statslb-tm-nav.md)
- [Configurar estatísticas e leaderboards gerenciados pelo título](/pt-BR/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal.md)
- [Configuração no portal de estatísticas e leaderboards gerenciados pelo título](/pt-BR/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-statslb-tm-config-nav.md)
