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

# Obtención de una tabla de clasificación administrada por el título

> Código de ejemplo de XSAPI para leer una tabla de clasificación de XBOX Live administrada por el título, incluidos los resultados completos, las vistas en torno a un rango y las consultas en torno a un jugador.

**Contenido**

* [Obtención de una tabla de clasificación completa](#gael)
* [Obtención de una tabla de clasificación en torno a un rango especificado](#galaasr)
* [Obtención de una tabla de clasificación en torno a un jugador especificado](#galaasp)

Este tema describe cómo obtener los valores de una tabla de clasificación administrada por el título.

<a id="gael" />

## Obtención de una tabla de clasificación completa

Use [XblLeaderboardGetLeaderboardAsync](/reference/live/xsapi-c/leaderboard_c/functions/xblleaderboardgetleaderboardasync) para devolver los valores de una tabla de clasificación determinada. Los resultados se devuelven en orden de rango decreciente, comenzando desde la parte superior de la tabla de clasificación. Al consultar una tabla de clasificación respaldada por una estadística administrada por el título, asegúrese de establecer el campo `queryType` en `XblLeaderboardQueryType::TitleManagedStatBackedGlobal` o en `XblLeaderboardQueryType::TitleManagedStatBackedSocial`.

**API de 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();
}
```

**Referencia**

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

<a id="galaasr" />

## Obtención de una tabla de clasificación en torno a un rango especificado

Puede obtener resultados filtrados de una consulta de tabla de clasificación especificando criterios de consulta al crear [XblLeaderboardQuery](/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery).
Para obtener los valores de la tabla de clasificación en torno a un rango especificado, use el código del ejemplo anterior, pero sustituya las líneas que crean XblLeaderboardQuery por el siguiente código:

**API de 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;
```

**Referencia**

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

<a id="galaasp" />

## Obtención de una tabla de clasificación en torno a un jugador especificado

Para obtener los valores de la tabla de clasificación en torno a un jugador especificado, use el código del ejemplo anterior, pero sustituya las líneas que crean [XblLeaderboardQuery](/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery) por el siguiente código:

**API de 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;
```

**Referencia**

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


## Related topics

- [Código de ejemplo de Estadísticas y tablas de clasificación administradas por el título](/es/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/live-statslb-tm-howto-nav.md)
- [Procedimientos](/es/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/index.md)
- [Configurar las estadísticas y tablas de clasificación administradas por el título](/es/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal.md)
- [Tablas de clasificación](/es/build/steam-porting-guide/features/steam-leaderboards.md)
- [Estadísticas y tablas de clasificación administradas por el título](/es/services/xbox-services/player-data/stats-leaderboards/title-managed/live-statslb-tm-nav.md)
