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

# Modificar dados somente leitura ou internos do jogador por meio do CloudScript

> Atualize com segurança os dados somente leitura e internos de jogadores do PlayFab a partir do CloudScript usando server.UpdateUserInternalData, com código de exemplo em C# e JavaScript.

Os dados do jogador podem ser acessados a partir do CloudScript, se o seu título precisar deles.

Para obter mais informações sobre como usar o CloudScript, consulte o [Início rápido do CloudScript](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart).

O exemplo em C# deste tópico foi escrito para o SDK do Unity. O SDK do Unity usa um modelo orientado a eventos para tratar tarefas assíncronas. Para executar o código de exemplo usando o SDK do C#, você precisa modificar o código para usar um modelo de Task assíncrono. Os métodos que precisam ser modificados têm Async acrescentado ao nome do método na assinatura. Por exemplo, SetObject no SDK do Unity se torna SetObjectAsync no SDK do C#. Para obter mais informações, consulte [Programação assíncrona com async e await](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/).

## Exemplo de código do CloudScript

Você deve ter cuidado para garantir a segurança das suas chamadas de API de servidor no CloudScript. O código a seguir demonstra como modificar com segurança um dado somente leitura do jogador a partir do CloudScript.

```javascript theme={null}
function IncrementReadOnlyUserData(args) {
  var playerData = server.GetUserInternalData({
        PlayFabId: currentPlayerId,
        Keys: ["ReadOnlyTest"]
  });

  var prevCount = "0";
  var nextCount = "1";
  try {
    prevCount = playerData.Data["ReadOnlyTest"].Value;
    var prevInt = parseInt(prevCount, 10);
    if (prevInt != prevInt) {
      prevInt = 0;
      nextCount = (prevInt + 1).toString();
    }
  } catch (e) {
    prevCount = "0";
    nextCount = "0";
  }

  var updateUserDataResult = server.UpdateUserInternalData({
    PlayFabId: currentPlayerId,
    Data:
        {
          "ReadOnlyTest": nextCount
        }
  });
}
```

## Exemplo de código em C\#

Conforme explicado no início rápido do CloudScript, você pode chamar a lógica a seguir a partir do cliente.

```csharp theme={null}
public void CloudIncrement() {
    PlayFabClientAPI.ExecuteCloudScript( new ExecuteCloudScriptRequest {
        FunctionName = "IncrementReadOnlyUserData"
    },
    result => Debug.Log("CloudScript call successful"),
    error => {
        Debug.Log("CloudScript call failed");
        Debug.Log(error.GenerateErrorReport());
    });
}
```


## Related topics

- [Início rápido de dados do jogador](/pt-BR/services/playfab/player-progression/player-data/quickstart.md)
- [Como obter dados somente leitura do jogador](/pt-BR/services/playfab/player-progression/player-data/how-to-get-read-only-player-data.md)
- [Usar dados do publicador](/pt-BR/services/playfab/live-service-management/game-configuration/titledata/using-publisher-data.md)
- [Como definir dados somente leitura do jogador](/pt-BR/services/playfab/player-progression/player-data/how-to-set-read-only-player-data.md)
- [Dados do jogador](/pt-BR/services/playfab/player-progression/player-data/index.md)
