💾 Tutorial Roblox Studio com script completo

Como Salvar Progresso no Roblox Studio com DataStore

Neste tutorial, você vai aprender como salvar moedas no Roblox Studio usando DataStoreService, leaderstats, GetAsync, SetAsync, pcall e BindToClose. Assim, quando o jogador sair e voltar para o jogo, o progresso dele continua salvo.

  • Roblox Studio
  • DataStore
  • Salvar moedas
  • Lua
  • Leaderstats
Aula em vídeo
🪙

Projeto prático: o jogador coleta moedas, o valor aparece no placar e depois fica salvo mesmo ao sair do jogo.

O que o aluno aprende?

Eventos, funções, variáveis, salvamento de dados e criação de sistemas reais dentro do Roblox.

🧠 Entendendo o conceito

O que é DataStore no Roblox Studio?

O DataStore é o sistema usado no Roblox Studio para salvar informações do jogador. Com ele, o jogo consegue guardar dados como moedas, pontos, itens, fases liberadas e progresso.

Sem DataStore, o jogador até pode ganhar moedas durante a partida, mas quando ele sai do jogo, esse valor pode se perder. Com DataStore, o jogo consegue carregar o progresso novamente quando o jogador volta.

💾

Neste tutorial, vamos usar DataStore para salvar o valor de Money, que aparece no leaderstats quando o jogador coleta moedas no mapa.

🪙

1. O jogador coleta moedas

Ao encostar em uma moeda, o valor de Money aumenta no placar.

📊

2. O valor aparece no leaderstats

O jogador consegue ver quantas moedas tem durante a partida.

📤

3. O jogo salva com SetAsync

Quando o jogador sai, o script envia o valor para o DataStore.

📥

4. O jogo carrega com GetAsync

Quando o jogador volta, o valor salvo é carregado novamente.

❌ Sem DataStore

O jogador coleta moedas, mas ao sair do jogo o progresso pode voltar para zero. Isso deixa o jogo menos completo e menos parecido com uma experiência real do Roblox.

✅ Com DataStore

O jogo salva o progresso do jogador. Assim, moedas, pontos e outros dados podem continuar disponíveis quando ele entra novamente na experiência.

⚙️ Configuração obrigatória

Antes de testar o DataStore, faça isso no Roblox Studio

Antes de colar o script, é importante preparar o jogo corretamente. O DataStore salva dados nos servidores do Roblox, então algumas configurações precisam estar ativas para o teste funcionar dentro do Studio.

1

Publique a experiência

No Roblox Studio, salve e publique o jogo. O DataStore depende da experiência publicada para conseguir se comunicar com os serviços do Roblox.

2

Ative o acesso às APIs

Vá em File > Experience Settings > Security e ative Enable Studio Access to API Services.

3

Use Script do servidor

O código de DataStore deve ficar em um Script dentro de ServerScriptService. Não coloque esse sistema em LocalScript.

4

Crie a pasta das moedas

Para este projeto, crie uma pasta chamada Coins dentro do Workspace e coloque as moedas dentro dela.

✅ Checklist rápido

Se o DataStore não salvar, confira primeiro esta lista

Muitos erros acontecem não porque o script está errado, mas porque o ambiente ainda não está pronto para salvar dados.

  • 🌐 Jogo publicado no Roblox
  • 🔓 API Services ativado em Security
  • 🧩 Script dentro de ServerScriptService
  • 🪙 Pasta Coins criada no Workspace
  • 📊 Nome Money igual no leaderstats
⚠️

Dica para aula: primeiro teste se a moeda aumenta no leaderstats. Depois saia do jogo, entre novamente e verifique se o valor foi carregado pelo DataStore.

🧩 Organização no Explorer

Como montar a estrutura do projeto antes de usar o DataStore

Antes de colocar o script, organize o jogo no Roblox Studio. Neste exemplo, vamos criar uma pasta de moedas no Workspace e um script dentro do ServerScriptService. O leaderstats será criado automaticamente pelo código.

Explorer do Roblox Studio
  • 📁 Workspace
  • 📁 Coins
  • 🪙 Coin
  • 🪙 Coin
  • 🪙 Coin
  • 📁 ServerScriptService
  • 📜 Script_DataStore
  • 👤 Player
  • 📁 leaderstats criado pelo script
  • 📊 Money criado pelo script
📁

Workspace > Coins

Crie uma pasta chamada Coins dentro do Workspace. Dentro dela, coloque as moedas que o jogador poderá coletar no mapa.

🪙

Moedas no mapa

Cada moeda precisa ser uma peça que o jogador consiga tocar. Quando a moeda for tocada, o evento Touched será ativado.

📜

ServerScriptService

O script completo deve ficar dentro de ServerScriptService, porque o salvamento com DataStore precisa acontecer no servidor.

📊

Leaderstats e Money

O próprio script vai criar a pasta leaderstats e o valor Money para mostrar as moedas do jogador no placar.

Dica importante: escreva os nomes exatamente como aparecem no script. Se a pasta for chamada de Coin em vez de Coins, por exemplo, o código não vai encontrar as moedas.

📜 Script completo

Código para salvar moedas com DataStore

Agora vamos colocar o script principal. Ele cria o leaderstats, soma moedas quando o jogador encosta em uma moeda, carrega os dados com GetAsync e salva com SetAsync.

ServerScriptService / Script_DataStore
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")

local Coins = workspace:WaitForChild("Coins")
local moneyStore = DataStoreService:GetDataStore("MoneyDataStore1")

local debounce = {}

for _, coin in ipairs(Coins:GetChildren()) do
	coin.Touched:Connect(function(hit)
		local character = hit.Parent
		local humanoid = character:FindFirstChild("Humanoid")

		if humanoid then
			local player = Players:GetPlayerFromCharacter(character)

			if not player then
				return
			end

			if debounce[player.UserId] then
				return
			end

			debounce[player.UserId] = true

			local leaderstats = player:FindFirstChild("leaderstats")
			local moedas = leaderstats and leaderstats:FindFirstChild("Money")

			if moedas then
				moedas.Value += 1
			end

			task.wait(0.5)
			debounce[player.UserId] = false

			coin:Destroy()
		end
	end)
end

local function salvarDados(player)
	print("Player saiu do jogo")

	local leaderstats = player:FindFirstChild("leaderstats")
	local moedas = leaderstats and leaderstats:FindFirstChild("Money")

	if not moedas then
		return
	end

	local success, erro = pcall(function()
		moneyStore:SetAsync(tostring(player.UserId), moedas.Value)
	end)

	if success then
		print("Dados foram salvos")
	else
		warn("Erro ao salvar dados:", erro)
	end
end

local function carregarDados(player)
	local success, resultado = pcall(function()
		return moneyStore:GetAsync(tostring(player.UserId))
	end)

	if success then
		if resultado ~= nil then
			print("Dados carregados:", resultado)

			local leaderstats = player:FindFirstChild("leaderstats")
			local moedas = leaderstats and leaderstats:FindFirstChild("Money")

			if moedas then
				moedas.Value = resultado
			end
		end
	else
		warn("Erro ao carregar os dados:", resultado)
	end
end

Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local money = Instance.new("IntValue")
	money.Name = "Money"
	money.Value = 0
	money.Parent = leaderstats

	carregarDados(player)
end)

Players.PlayerRemoving:Connect(function(player)
	salvarDados(player)
end)

game:BindToClose(function()
	for _, player in ipairs(Players:GetPlayers()) do
		salvarDados(player)
	end
end)
📥

GetAsync

Busca no DataStore o valor que já foi salvo para aquele jogador.

📤

SetAsync

Salva o valor atual de Money usando o UserId do jogador como chave.

🛡️

pcall

Protege o jogo caso a tentativa de salvar ou carregar dados apresente erro.

⚠️

Importante: coloque este código em um Script dentro de ServerScriptService. Não use LocalScript para salvar dados com DataStore.

🧠 Entendendo o código

Como o script de DataStore funciona por dentro?

O script pode parecer grande no começo, mas ele é formado por pequenas partes. Cada trecho tem uma função: criar o placar, detectar a moeda, carregar os dados e salvar o progresso do jogador.

Fluxo do salvamento

Veja a ordem em que as principais ações acontecem dentro do jogo.

👤
Jogador entra O evento PlayerAdded cria o leaderstats e o valor Money.
📥
Dados carregam GetAsync busca o valor salvo usando o UserId do jogador.
🪙
Moeda é coletada O evento Touched soma +1 no valor de Money.
📤
Jogador sai SetAsync salva o valor atual no DataStore.
🔒
Servidor fecha BindToClose tenta salvar todos os jogadores antes de encerrar.
👤

Players.PlayerAdded

Roda quando o jogador entra no jogo. É aqui que o script cria a pasta leaderstats e o valor Money.

📊

leaderstats

É a pasta especial que faz o Roblox mostrar valores no placar do jogador, como dinheiro, pontos ou fases.

🪙

coin.Touched

Detecta quando o personagem encosta em uma moeda. Quando isso acontece, o valor de Money aumenta em 1.

⏱️

Debounce

Evita que a mesma moeda seja contada várias vezes muito rápido quando o jogador encosta nela.

📥

GetAsync

Carrega o valor salvo no DataStore. Neste exemplo, usamos player.UserId para encontrar os dados certos.

📤

SetAsync

Salva o valor atual de Money quando o jogador sai do jogo, mantendo o progresso para a próxima partida.

🛡️

pcall

Protege o script caso a tentativa de salvar ou carregar falhe. Assim, o erro não quebra o jogo inteiro.

🔒

BindToClose

Tenta salvar os dados dos jogadores quando o servidor está fechando, aumentando a segurança do salvamento.

💡

Resumo para o aluno: primeiro o jogo cria o placar, depois carrega as moedas salvas, soma novas moedas durante a partida e salva tudo novamente quando o jogador sai.

⚠️ Atenção aos erros comuns

Por que o DataStore não está salvando?

Quando o DataStore não funciona, nem sempre o problema está no script. Muitas vezes, o erro está na configuração do jogo, no local onde o código foi colocado ou em algum nome diferente no Explorer.

🌐

Jogo não publicado

Para testar DataStore corretamente, publique a experiência no Roblox antes de tentar salvar os dados.

🔓

API Services desligado

Ative Enable Studio Access to API Services em Security nas configurações da experiência.

📜

Script no lugar errado

O sistema de salvamento deve ficar em um Script dentro de ServerScriptService.

📁

Nome da pasta diferente

Se o código procura por Coins, a pasta no Workspace precisa ter exatamente esse nome.

📊

Nome do Money diferente

Se o script salva Money, o IntValue também precisa se chamar Money.

⏱️

Teste encerrado muito rápido

Ao testar no Studio, espere alguns segundos antes de fechar para verificar se o salvamento aconteceu.

✅ Checklist antes de reclamar do código

Confira estes pontos antes de mudar o script inteiro

Esse checklist ajuda a encontrar o problema mais rápido e evita que o aluno apague um código que já estava certo.

1

O jogo foi publicado no Roblox?

2

A opção API Services está ativada?

3

O script está em ServerScriptService?

4

A pasta Coins existe dentro do Workspace?

5

O valor Money aparece no leaderstats?

6

O Output mostra “Dados foram salvos”?

💡

Dica de teste: primeiro veja se as moedas aumentam no placar. Depois saia do jogo, entre novamente e confira se o valor salvo voltou corretamente.

🚀 Próximos passos no Roblox Studio

Depois das moedas: o que mais dá para salvar com DataStore?

Neste tutorial, salvamos o valor de moedas do jogador. Mas o mesmo conceito pode ser usado para criar sistemas mais completos, como inventário, fases liberadas, skins, ferramentas e recompensas.

💾 Evolução do projeto

DataStore transforma um projeto simples em um jogo mais completo

Quando o aluno aprende a salvar dados, ele começa a entender como jogos reais mantêm progresso, recompensas e informações importantes do jogador.

1

Primeiro salva moedas e pontos.

2

Depois salva itens, ferramentas e recompensas.

3

Por fim, cria sistemas de inventário e progresso.

🎒

Salvar inventário

O DataStore pode ser usado para salvar quais itens o jogador possui, como ferramentas, armas, pets ou recompensas.

🧍

Salvar skins

Também é possível guardar a skin escolhida pelo jogador e carregar essa escolha quando ele voltar ao jogo.

🏁

Salvar fases liberadas

Em jogos de fase, o DataStore ajuda a lembrar até onde o jogador chegou, evitando que ele precise começar tudo de novo.

🏆

Salvar conquistas

Medalhas, recordes, níveis e conquistas também podem ser salvos para deixar o jogo mais viciante e recompensador.

🛒

Salvar compras do jogo

Em projetos mais avançados, o aluno pode salvar itens comprados na loja usando valores organizados no DataStore.

📈

Salvar nível do jogador

O mesmo sistema pode evoluir para salvar XP, nível, ranking e progresso de personagens dentro do jogo.

💡

Dica para evoluir o projeto: comece salvando apenas um número, como moedas. Depois, avance para tabelas com vários dados do jogador, como itens, fases e escolhas.

🚀 Aprenda criando jogos no Roblox

Seu filho quer aprender Roblox Studio de verdade?

Na Programação for Kids, crianças e adolescentes aprendem programação criando projetos no Roblox Studio: scripts, moedas, lojas, sistemas de pontuação, fases, desafios e jogos completos.

Em vez de apenas jogar, o aluno começa a entender como os jogos funcionam por dentro e desenvolve lógica, criatividade e pensamento computacional.

🎮

Projetos práticos

O aluno aprende criando jogos e sistemas reais dentro do Roblox Studio.

💻

Programação em Lua

Scripts explicados passo a passo, com foco em lógica e construção de jogos.

🧠

Raciocínio lógico

A criança aprende a resolver problemas enquanto cria algo que gosta.

🌐

Aula online

Aprendizado prático, no computador, com orientação para evoluir com segurança.

💡

Ideal para quem ama Roblox

Uma forma inteligente de transformar interesse por jogos em aprendizado de programação.

❓ Perguntas frequentes

Dúvidas comuns sobre DataStore no Roblox Studio

Se você está começando a salvar progresso no Roblox Studio, estas são algumas das dúvidas mais comuns sobre DataStore, leaderstats, GetAsync, SetAsync e salvamento de moedas.

💾 DataStore sem mistério

Salvar progresso é um passo importante para criar jogos mais completos

Quando o aluno entende DataStore, ele deixa de criar apenas testes simples e começa a construir sistemas que continuam funcionando mesmo depois que o jogador sai do jogo.

🪙

Salvar moedas e pontos do jogador.

🎒

Evoluir para inventário, itens e skins.

🏁

Guardar fases, níveis e progresso.

💾

O que é DataStore no Roblox Studio?

DataStore é o sistema usado para salvar dados do jogador, como moedas, pontos, inventário e progresso. Assim, quando o jogador sai e volta, o jogo pode carregar as informações salvas.

📍

Onde devo colocar o script de DataStore?

O script deve ficar em um Script dentro de ServerScriptService. Esse tipo de sistema deve rodar no servidor, não em LocalScript.

⚙️

Por que meu DataStore não está salvando?

Os motivos mais comuns são: jogo não publicado, API Services desativado, script no lugar errado, nomes diferentes no Explorer ou erro ao chamar GetAsync e SetAsync.

🛡️

Preciso usar pcall com DataStore?

Sim. O pcall protege o script caso a tentativa de salvar ou carregar falhe. Isso evita que um erro temporário quebre o funcionamento do jogo.

🎒

Dá para salvar inventário com DataStore?

Sim. O exemplo deste tutorial salva moedas, mas o mesmo conceito pode ser usado para salvar inventário, skins, fases, itens comprados e conquistas.

Resumo: DataStore é essencial para criar jogos em que o progresso do jogador continua salvo mesmo depois que ele sai da experiência.

BLOG PROGRAMAÇÃO FOR KIDS

Programação para Crianças: Como Aprender Criando Jogos de Forma Divertida

Descubra como a programação para crianças pode desenvolver raciocínio lógico, criatividade e autonomia através de jogos, desafios e projetos práticos no Roblox e em outras plataformas.

Para pais, crianças e adolescentes Aprendizado criativo Roblox • Lógica • Tecnologia
Programação para crianças aprendendo com jogos
0
    0
    Seu Carrinho
    Seu Carrinho está VazioVoltar Para a Loja