> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Acciones masivas para todo un segmento de jugadores

> Tutorial para crear una tarea de PlayFab que ejecuta una o varias acciones masivas, como conceder recompensas, en cada jugador de un segmento de destino.

Este tutorial le guía por los pasos necesarios para crear una tarea que realice una o varias acciones en cada jugador de un segmento.

Las tareas son una parte fundamental de las operaciones en vivo de cualquier juego. Le proporcionan un potente conjunto de herramientas para interactuar con sus jugadores.

Algunos ejemplos podrían ser:

* Dar un regalo especial de Año Nuevo a todos los jugadores que iniciaron sesión durante las últimas 2 semanas.
* Recompensar a los jugadores que gastaron dinero en la última semana (según niveles de gasto), de modo que cuanto más dinero gastaron, más valioso sea el regalo.
* Corregir el estado dañado de los jugadores para todos los jugadores afectados por un error reciente del juego.

En este tutorial, basado en nuestra **Unicorn Battle Sample App**, concederemos un regalo especial a todos los jugadores con más de **2,725 XP**.

## Requisitos previos

Deberá instalar la Unicorn Battle Sample App para ejecutar este tutorial. Puede obtener más información al respecto [en nuestro blog](https://blog.playfab.com/blog/check-out-unicorn-battle), o ir directamente al [repositorio de GitHub](https://github.com/PlayFab/UnicornBattle) y seguir las instrucciones que allí se indican.

![Unicorn Battle - Pantalla de inicio](https://mintcdn.com/microsoft-4404708b/YzmQFdAfhA-NTCPa/images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-launch-screen.webp?fit=max\&auto=format\&n=YzmQFdAfhA-NTCPa\&q=85\&s=682e9a99bb6293229a452095255ce2f2)

Le conviene jugar *varias* batallas para subir de nivel a su personaje hasta al menos el **Nivel 2**, que se alcanza con **2,725 XP** puntos.

![Unicorn Battle - Nivel 2](https://mintcdn.com/microsoft-4404708b/YzmQFdAfhA-NTCPa/images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-level-two.webp?fit=max\&auto=format\&n=YzmQFdAfhA-NTCPa\&q=85\&s=0f47eb0af3bb618e2aa449df163305f0)

## Paso 1: Crear el segmento

El primer paso es crear el segmento que define el grupo de jugadores que se verán afectados por esta acción. En este caso, necesitamos crear el **High XP Segment**, definido como todos los jugadores que tienen más de **2,725 XP**:

* Seleccione **PlayStream** en el menú de la izquierda.
* Elija la pestaña **Segments**.
* A continuación, seleccione el botón **New Segment**.
* Establezca el **Segment Name**: **High XP Players**.
* Defínalo como **Player**, donde el **Statistic Value** llamado **Total\_XP Gained** sea mayor que **2725**.

> [!NOTE]
>
> **NOTA:** El sistema actual de tareas programadas puede procesar entre 10 y 15 tareas por segundo por segmento. Al diseñar sus segmentos, planifique con antelación qué tamaño tendrán y cuánto tiempo durará la ejecución de la tarea. No hay límite de tiempo para la ejecución de una tarea, pero si la tarea debe ejecutarse en un período específico, el segmento debe tener el tamaño adecuado.

![Game Manager - PlayStream - Segmentos - High XP Players](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-high-xp-players.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=277244d7f9813aa8821acc626b4a903a)

## Paso 2: Crear una tarea para este segmento

* Seleccione la pestaña **Segments**.
* A continuación, seleccione **RUN TASK …**

![Game Manager - PlayStream - Segmentos - Ejecutar tarea](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-run-task.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=82870774c3122881a0419e880078401d)

Esto le llevará a la vista **Create Task** en la pestaña **Servers**->**Tasks**, y rellenará previamente varios campos según el segmento seleccionado.

![Game Manager - Servidores - Tarea - Crear tarea](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-create-task.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=155bf1e0a504d077fc5aeea920791f65)

## Paso 3: Agregar acciones a la tarea

A continuación, puede terminar de configurar la tarea.

* Cambie el nombre a **Reward High XP Players**
* Agregue esta descripción: **Give a gift to Players who are level 2 or higher**.
* Seleccione **ADD ACTION**
  * Escriba **Grant virtual currency** en el campo proporcionado.
  * Código de **Virtual Currency**: **GM** (abreviatura de **Gems**).
  * Cantidad: **20**
* Por ahora, deje la programación establecida en **Manually**.
* Seleccione el botón **SAVE AND RUN** para ejecutar la tarea.

![Game Manager - Servidores - Tarea - Agregar acción - Guardar y ejecutar](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-add-action-save-and-run.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=88be2126823b5296a972acebe78fb0e8)

## Paso 4: Supervisar la tarea

La vista **Tasks** le mostrará la tarea en ejecución. Inicialmente, el estado de la tarea será **InProgress**, pero cambiará rápidamente a **Succeeded**, ya que el segmento es pequeño.

![Game Manager - Servidores - Tareas - Tarea correcta](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-succeeded.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=f947e3bac92c4b78e3dd01f55d9a1ca3)

Ahora, revisemos los detalles de la ejecución de la tarea. Seleccione la tarea completada en la lista de **Tasks** ejecutadas anteriormente. Verá información importante, como:

* Cuántos jugadores se procesaron.
* Cuándo se inició la tarea.
* Cuánto tiempo tardó en completarse.
* Los parámetros que tenía cuando se inició.
* Quién la ejecutó.
* Si se programó manualmente, etc.

Si la tarea sigue en curso, puede consultar la vista **Task Instance Detail** para ver el progreso y el tiempo restante estimado.

![Game Manager - Servidores - Tareas - Detalles de la instancia de la tarea](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-instance-details.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=6a29866408f6240c680cc1a48d0d0130)

Para comprobar que la tarea se ejecutó correctamente:

* Vaya a la pestaña **Players**.
* Seleccione su **Player**.
* A continuación, elija la pestaña **Event History**.
* El evento más reciente de la lista debería ser un **player\_virtual\_currency\_balance\_changed**, que debería mostrar que las gemas de su **Player** aumentaron en **20**.

> [!NOTE]
>
> Puede expandir este evento para ver los detalles.

![Game Manager - Historial de eventos - Detalle del evento](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-event-history-event-detail.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=8f5be92d094f953e458edc23c05339b9)

## Pasos siguientes

Este tutorial le ha presentado los pasos necesarios para realizar una acción en cada jugador de un segmento, pero puede hacer mucho más con las tareas.

Estas son algunas ideas de otras cosas que puede probar...

### Programar las tareas

No necesita ejecutar las tareas manualmente: puede programar una tarea para que se ejecute *automáticamente* de forma *periódica*. Por ejemplo, podría crear un segmento de todos los jugadores que jugaron en las últimas 24 horas y, a continuación, ejecutar una tarea programada cada día para dar a esos jugadores un aumento de XP.

![Game Manager - PlayStream - Segmentos - Jugadores en 24 horas](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-players-in-24-hours.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=011c1636bdcf356fef0958937679cdb6)

![Game Manager - Servidores - Tareas - Tarea programada](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-scheduled-task.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=b818b7055457a8d9e13d6128d9e0e31b)

### Ejecutar CloudScript para cada jugador

El uso más potente de las acciones masivas es ejecutar una función arbitraria de CloudScript para cada jugador. Este CloudScript puede hacer todo lo que puede hacer la API de servidor de PlayFab: conceder elementos, moneda, inspeccionar y cambiar datos de jugadores, etc.

Por ejemplo, imagine que tiene una tabla de clasificación de eventos que se restablece cada semana y desea recorrer todos los jugadores y dar una recompensa según el valor del *último* evento antes del restablecimiento. El ejemplo que se proporciona a continuación usa **Unicorn Battle**.

1. Cree una nueva estadística **Event\_QuestsCompleted**, que se restablezca semanalmente y use el método de agregación **Last**.

   ![Jugadores - Tablas de clasificación - Editar tabla de clasificación](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/players-leaderboards-edit-leaderboard.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=dc418906c884b0c685d0a4d05393dd7a)

2. Cree una nueva acción de PlayStream que incremente esta estadística `Event_QuestsCompleted` cada vez que cambie `Total_QuestsCompleted`.

   ![PlayStream - Acciones de eventos - Editar acción de evento](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/playstream-event-actions-edit-event-action.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=7f0d65c83146783af200454981eec9c6)

3. Escriba una función de CloudScript para que la llame una tarea de acción masiva, que recorrerá los jugadores y dará recompensas según el último valor.

```javascript theme={null}
// this function will be called as a bulk action by a scheduled task for players in a segment
handlers.GiveTieredReward = function (args, context) {
    var profile = context.playerProfile;

    var statVersion = 0;        // set to whatever version you need to use

    var getStatRequest = {};
    getStatRequest.PlayFabId = profile.PlayerId;
    getStatRequest.StatisticNameVersions = [{ "StatisticName": "Event_QuestsCompleted", "Version": statVersion }];

    try {
        getStatRequest.PlayerResult = server.GetPlayerStatistics(getStatRequest);
    } catch (e) {
    };

    if (getStatRequest.PlayerResult && getStatRequest.PlayerResult.Statistics.length > 0) {
        getStatRequest.lastScore = getStatRequest.PlayerResult.Statistics[0].Value
    }

    if (getStatRequest.lastScore && getStatRequest.lastScore > 2) {
        // give gift to all players with more than 2 quests completed in last event
        // in a real event we would want to use a lookup table of gifts
        // but here we are just hard-coding it
        var giftRequest = {};
        giftRequest.PlayFabId = profile.PlayerId;
        giftRequest.ItemIds = ["CrystalKey"];
        giftRequest.grantResult = server.GrantItemsToUser(giftRequest);
        return giftRequest;
    } else {
        return getStatRequest;
    }
}
```

4. Establezca la nueva versión de CloudScript en **Live** y cree una nueva tarea que llame a la función `GiveTieredReward` para todos los jugadores. No olvide seleccionar **Save** y **Run** en la tarea.

   ![Servidores - Tareas - Nueva tarea programada](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/servers-tasks-new-scheduled-task.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=984b0ca050712fd0ad357ed1aa8365dd)

5. Debería ver que los eventos de esta tarea aparecen en el depurador de eventos de PlayStream.

   ![PlayStream - Panel - Depurador de eventos](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-event-debugger.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=aed7ba302609d3de83967a15e6ffaff4)

6. Puede seleccionar cualquier evento de CloudScript ejecutado por una acción desencadenada por un jugador (seleccionando la marca de tiempo) y ver el resultado detallado de la ejecución de CloudScript para cada jugador. Esto incluye información de diagnóstico útil, como la instantánea del perfil del jugador en el momento de la ejecución de CloudScript.

   ![PlayStream - Panel - JSON de evento sin procesar](https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-raw-event-json.png?fit=max\&auto=format\&n=IwSYTY5BEqd_x-HK\&q=85\&s=02ea8cca957596e793448dfa583d7c0c)


## Related topics

- [Tutorial para contar los jugadores de un segmento](https://docs.xbox.com/es/services/playfab/live-service-management/game-configuration/segmentation/segmentation-player-count.md)
- [Tutorial para exportar los jugadores de un segmento](https://docs.xbox.com/es/services/playfab/live-service-management/game-configuration/segmentation/segmentation-export-players-in-a-segment.md)
- [Segmentos de jugadores](https://docs.xbox.com/es/services/playfab/player-progression/player-data/player-segments.md)
- [Documentación de administración de servicios en vivo de PlayFab](https://docs.xbox.com/es/services/playfab/live-service-management/index.md)
- [Acciones de segmento de Economy V2](https://docs.xbox.com/es/services/playfab/economy-monetization/economy-v2/player-segmented-monetization/segment-actions.md)
