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

# Ações em massa para um Segmento de Jogadores inteiro

> Tutorial para criar uma tarefa do PlayFab que executa uma ou mais ações em massa, como conceder recompensas, em todos os jogadores de um segmento de destino.

Este tutorial orienta você pelas etapas necessárias para criar uma tarefa que execute uma ou mais ações em todos os jogadores de um segmento.

As tarefas são uma parte vital das operações ao vivo de qualquer jogo. Elas oferecem um conjunto avançado de ferramentas para interagir com seus jogadores.

Alguns exemplos:

* Dar um presente especial de Ano-Novo a todos os jogadores que entraram nas últimas 2 semanas.
* Recompensar os jogadores que gastaram dinheiro na última semana (com base em níveis de gastos), em que quanto mais dinheiro gastaram, mais valioso é o presente.
* Corrigir o estado corrompido do Jogador para todos os jogadores afetados por um bug recente do jogo.

Neste tutorial, baseado no nosso **Aplicativo de Exemplo Unicorn Battle**, concederemos um presente especial a todos os jogadores com mais de **2.725 XP**.

## Pré-requisitos

Você precisará instalar o Aplicativo de Exemplo Unicorn Battle para executar este tutorial. Você pode ler mais sobre ele [no nosso blog](https://blog.playfab.com/blog/check-out-unicorn-battle) ou ir diretamente para o [repositório do GitHub](https://github.com/PlayFab/UnicornBattle) e seguir as instruções.

<img src="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" alt="Unicorn Battle - Tela inicial" width="2560" height="1440" data-path="images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-launch-screen.webp" />

Você precisará jogar *várias* batalhas para subir seu personagem até pelo menos o **Nível 2**, que você alcança com **2.725 XP**.

<img src="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" alt="Unicorn Battle - Nível 2" width="2560" height="1440" data-path="images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-level-two.webp" />

## Etapa 1 - Criar o segmento

A primeira etapa é criar o segmento que define o grupo de jogadores que serão afetados por esta ação. Neste caso, precisamos criar o **Segmento de XP Alto**, definido como todos os jogadores que têm mais de **2.725 XP**:

* Selecione **PlayStream** no menu à esquerda.
* Escolha a guia **Segments**.
* Em seguida, selecione o botão **New Segment**.
* Defina o **Segment Name** como: **High XP Players**.
* Defina-o como **Player**, em que o **Statistic Value** chamado **Total\_XP Gained** é maior que **2725**.

<Note>
  **OBSERVAÇÃO:** o sistema atual de tarefas agendadas pode processar de 10 a 15 tarefas por segundo por segmento. Ao projetar seus segmentos, planeje com antecedência o tamanho que eles terão e quanto tempo a execução da tarefa levará. Não há limite para quanto tempo uma tarefa pode ser executada, mas se a tarefa precisar ser executada em um período específico, o segmento precisará ser dimensionado adequadamente.
</Note>

<img src="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" alt="Game Manager - PlayStream - Segmentos - Jogadores com XP alto" width="1394" height="817" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-high-xp-players.png" />

## Etapa 2 - Criar uma tarefa para este segmento

* Selecione a guia **Segments**.
* Em seguida, selecione **RUN TASK …**

<img src="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" alt="Game Manager - PlayStream - Segmentos - Executar tarefa" width="902" height="598" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-run-task.png" />

Isso levará você à exibição **Create Task** na guia **Servers**->**Tasks** e preencherá previamente vários campos com base no segmento selecionado.

<img src="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" alt="Game Manager - Servidores - Tarefa - Criar tarefa" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-create-task.png" />

## Etapa 3 - Adicionar ações à tarefa

Em seguida, você pode concluir a configuração da tarefa.

* Altere o nome para **Reward High XP Players**
* Adicione esta descrição: **Give a gift to Players who are level 2 or higher**.
* Selecione **ADD ACTION**
  * Digite **Grant virtual currency** no campo fornecido.
  * Código da **Virtual Currency**: **GM** (abreviação de **Gems**).
  * Quantidade: **20**
* Deixe o agendamento definido como **Manually** por enquanto.
* Selecione o botão **SAVE AND RUN** para executar a tarefa.

<img src="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" alt="Game Manager - Servidores - Tarefa - Adicionar ação - Salvar e executar" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-add-action-save-and-run.png" />

## Etapa 4 - Monitorar sua tarefa

A exibição **Tasks** mostrará sua tarefa em execução. Inicialmente, o status da tarefa será **InProgress**, mas mudará rapidamente para **Succeeded**, pois o segmento é pequeno.

<img src="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" alt="Game Manager - Servidores - Tarefas - Tarefa bem-sucedida" width="1280" height="720" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-succeeded.png" />

Agora, vamos conferir os detalhes da execução da tarefa. Selecione a tarefa concluída na lista de **Tasks** executadas anteriormente. Você verá informações importantes, como:

* Quantos jogadores foram processados.
* Quando a tarefa foi iniciada.
* Quanto tempo levou para ser concluída.
* Os parâmetros que ela tinha quando foi iniciada.
* Quem a executou.
* Se ela foi agendada manualmente etc.

Se a tarefa ainda estiver em andamento, você poderá verificar o progresso na exibição **Task Instance Detail** e ver o tempo restante estimado.

<img src="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" alt="Game Manager - Servidores - Tarefas - Detalhes da instância da tarefa" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-instance-details.png" />

Para verificar se a tarefa foi executada com êxito:

* Navegue até a guia **Players**.
* Selecione seu **Player**.
* Em seguida, escolha a guia **Event History**.
* O evento mais recente na lista deve ser um **player\_virtual\_currency\_balance\_changed**, que deve mostrar as gemas do seu **Player** aumentando em **20**.

<Note>
  Você pode expandir esse evento para ver os detalhes.
</Note>

<img src="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" alt="Game Manager - Histórico de eventos - Detalhes do evento" width="1458" height="622" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-event-history-event-detail.png" />

## Próximas etapas

Este tutorial apresentou as etapas envolvidas na execução de uma ação para todos os jogadores de um segmento, mas há muito mais que você pode fazer com as tarefas.

Aqui estão algumas ideias de outras coisas que você pode experimentar...

### Agendar suas tarefas

Você não precisa executar as tarefas manualmente: é possível agendar uma tarefa para ser executada *automaticamente* de forma *recorrente*. Por exemplo, você pode criar um segmento de todos os jogadores que jogaram nas últimas 24 horas e, em seguida, executar uma tarefa agendada todos os dias para dar a esses jogadores um bônus de XP.

<img src="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" alt="Game Manager - PlayStream - Segmentos - Jogadores nas últimas 24 horas" width="780" height="815" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-players-in-24-hours.png" />

<img src="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" alt="Game Manager - Servidores - Tarefas - Tarefa agendada" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-scheduled-task.png" />

### Executar o CloudScript para cada jogador

O uso mais poderoso das ações em massa é executar uma função arbitrária do CloudScript para cada jogador. Esse CloudScript pode fazer qualquer coisa que a API de servidor do PlayFab possa fazer: conceder itens, moeda, inspecionar e alterar dados do jogador e assim por diante.

Por exemplo, imagine que você tenha um placar de evento que é redefinido toda semana e queira percorrer todos os jogadores e dar uma recompensa com base no valor do *último* evento antes da redefinição. O exemplo fornecido abaixo usa o **Unicorn Battle**.

1. Crie uma nova estatística **Event\_QuestsCompleted**, que é redefinida semanalmente e usa o método de agregação **Last**.

   <img src="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" alt="Jogadores - Placares - Editar placar" width="571" height="541" data-path="images/playfab/data-analytics/acting-data/tutorials/players-leaderboards-edit-leaderboard.png" />

2. Crie uma nova ação do PlayStream que incrementa a estatística `Event_QuestsCompleted` sempre que `Total_QuestsCompleted` é alterada.

   <img src="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" alt="PlayStream - Ações de evento - Editar ação de evento" width="1043" height="943" data-path="images/playfab/data-analytics/acting-data/tutorials/playstream-event-actions-edit-event-action.png" />

3. Escreva uma função do CloudScript a ser chamada por uma tarefa de Ação em Massa, que percorrerá os jogadores e dará recompensas com base no ú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. Defina a nova versão do CloudScript como **Live** e crie uma nova tarefa que chame a função `GiveTieredReward` para todos os jogadores. Não se esqueça de selecionar **Save** e **Run** na tarefa.

   <img src="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" alt="Servidores - Tarefas - Nova tarefa agendada" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/servers-tasks-new-scheduled-task.png" />

5. Você deverá notar os eventos dessa tarefa aparecendo no depurador de eventos do PlayStream.

   <img src="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" alt="PlayStream - Painel - Depurador de eventos" width="3079" height="1050" data-path="images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-event-debugger.png" />

6. Você pode selecionar qualquer evento de CloudScript executado por ação disparada pelo jogador (selecionando o carimbo de data/hora) e ver o resultado detalhado da execução do CloudScript para cada jogador. Isso inclui informações de diagnóstico úteis, como o instantâneo do perfil do jogador no momento da execução do CloudScript.

   <img src="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" alt="PlayStream - Painel - JSON bruto do evento" width="1464" height="1923" data-path="images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-raw-event-json.png" />


## Related topics

- [Segmentos de jogadores](/pt-BR/services/playfab/player-progression/player-data/player-segments.md)
- [Criar tarefa de ações em jogadores no segmento](/pt-BR/services/playfab/api-references/rest/admin/scheduled-task/create-actions-on-players-in-segment-task.md)
- [Obter instância de tarefa de ações em jogadores no segmento](/pt-BR/services/playfab/api-references/rest/admin/scheduled-task/get-actions-on-players-in-segment-task-instance.md)
- [Tutorial para contar os jogadores de um segmento](/pt-BR/services/playfab/live-service-management/game-configuration/segmentation/segmentation-player-count.md)
- [Tutorial para exportar jogadores de um segmento](/pt-BR/services/playfab/live-service-management/game-configuration/segmentation/segmentation-export-players-in-a-segment.md)
