Cada queria salvar dados e carregá-los novamente toda vez que um jogador entrar no jogo novamente? Desde que a persistência de dados se tornou inútil, o ROBLOX apresenta armazenamentos de dados que são muito mais funcionais. O seguinte guia prático permitirá que você trabalhe com datastores para ROBLOX.
Passos
Método 1 de 3: Configurando o Armazenamento de Dados
Etapa 1. Configure a API
Isso não envolve nenhum script, mas para ativar toda a API do armazenamento de dados, você deve primeiro habilitar o acesso à API. Para fazer isso, vá até a guia Desenvolver e clique em "Jogos". Isso deve direcioná-lo a todos os locais de jogo atuais que você possui. Encontre seu jogo e clique na engrenagem. Deve aparecer um menu suspenso e simplesmente clicar em "Configurar". Marque a caixa habilitada "Habilitar acesso do Studio a serviços de API" e salve. Agora você deve ter acesso à API completa.
Etapa 2. Recupere o armazenamento de dados
Use a API de armazenamento de dados para chamar o armazenamento de dados, pois precisaremos fazer referência a ele. Para começar, abra um script no ROBLOX e nomeie uma variável que gostaríamos de usar para chamar a referência.
local datastore = jogo: GetService ("DataStoreService"): GetDataStore ("nome")
Etapa 3. Use a variável conforme necessário
Você chamou com sucesso o armazenamento de dados com a variável "armazenamento de dados". Agora, sempre que precisar recuperar o armazenamento de dados, você pode simplesmente nomeá-lo por sua variável.
Observe que se um armazenamento de dados ainda não tiver sido criado, ele criará automaticamente um novo
Método 2 de 3: usando métodos de armazenamento de dados
Etapa 1. GetAsync
Use GetAsync para retornar o valor da entrada no armazenamento de dados com a chave fornecida. Certifique-se de dar a cada jogador um conjunto exclusivo de chaves, pois definir a mesma chave para dois jogadores substituirá seus próprios dados do jogo, causando o caos entre as duas partes. Se você quiser saber como definir uma chave exclusiva, continue lendo.
- O código a seguir produzirá nil, porque o servidor não conseguiu encontrar nenhum valor vinculado à chave; é importante mostrar ao servidor exatamente o que estamos tentando produzir, para que o servidor saiba o que precisa ser exibido.
local datastore = game: GetService ("DataStoreService"): GetDataStore ("name") game. Players. PlayerAdded: connect (function (player) local key = "user_".. player.userId datastore: GetAsync (key) end)
Etapa 2. SetAsync
Use SetAsync para definir o valor da chave e substitui todos os dados existentes armazenados para a chave exclusiva.
- Se o conjunto de informações anterior for importante, considere o uso de UpdateAsync, que será ensinado a seguir.
- O código a seguir mostra como implementar os métodos ": GetAsync ()" e ": SetAsync ()".
local datastore = game: GetService ("DataStoreService"): GetDataStore ("name") game. Players. PlayerAdded: connect (function (player) local key = "user_".. player.userId datastore: SetAsync (key, 90) - - define a chave para o valor, 90 local data_stored = datastore: GetAsync (key) - é capaz de detectar a alteração do valor print (data_stored) - imprime o final da saída)
Etapa 3. Use UpdateAsync para retornar o valor da chave e o atualiza com um novo valor
Isso valida os dados e, portanto, deve esperar até que o servidor encontre tempo para atualizá-los. Para que isso funcione, você precisará passar dois parâmetros; a primeira é uma string que recebe a chave exclusiva que você configurou: "'user_'.. player.userId", e a segunda é uma função que receberá o valor antigo.
local datastore = game: GetService ("DataStoreService"): GetDataStore ("name") game. Players. PlayerAdded: connect (function (player) local key = "user_".. player.userId datastore: UpdateAsync (key, function (old) - fazer coisas fim) fim)
local datastore = game: GetService ("DataStoreService"): GetDataStore ("name") game. Players. PlayerAdded: connect (function (player) local key = "user_".. player.userId datastore: UpdateAsync (key, function (old) local new = old or 0 - pode ser nil new = new + 1 - add 1 to the old value return new - retorna com o novo valor end) end)
Etapa 4. Use IncrementAsync para incrementar o valor de uma chave e retorna o valor incrementado
Este método funciona apenas em números inteiros.
Método 3 de 3: eventos de armazenamento de dados e atualização de dados
Etapa 1. Defina uma chave exclusiva
É extremamente vital que cada jogador tenha uma chave que é única para eles. Eles manterão essa chave, que armazenará todos os seus dados. Para fazer isso, usamos o ID do jogador. Depois de definir o armazenamento de dados, basta chamar uma função para carregar o player e, em seguida, encontrar a ID do jogador. O código deve ser o seguinte:
local datastore = game: GetService ("DataStoreService"): GetDataStore ("name") game. Players. PlayerAdded: connect (function (player) local key = "user_".. player.userId end)
Etapa 2. Atualize os dados
Agora que você tem uma chave exclusiva para cada jogador, está pronto para fazer a atualização do armazenamento de dados e recuperar os dados. Abaixo da sua chave, você desejará adicionar um método que seja mais adequado às suas necessidades. Nesse caso, usaremos "UpdateAsync".
- Comece com uma função para ajudar o servidor a entender o que você pretende fazer.
local datastore = game: GetService ("DataStoreService"): GetDataStore ("name") game. Players. PlayerAdded: connect (function (player) local key = "user_".. player.userId datastore: UpdateAsync (key, function (old) local newValue = old ou 0 - pode ser nil newValue = newValue + 50 return newValue end) end)
Etapa 3. Parabéns
Você armazenou e atualizou com sucesso os dados de um jogador.
Avisos
- Ao criar seu armazenamento de dados pela primeira vez, certifique-se de ter "game: GetService (" DataStoreService ")", com a capitalização correta. Ele não será executado de forma eficiente se for chamado incorretamente.
- Certifique-se de saber quando usar "SetAsync" e "UpdateAsync", pois usar o errado pode transformar as coisas em uma bagunça ao recuperar dados. Na maioria dos casos, os desenvolvedores usarão "UpdateAsync".