Need help with datastore

I’ve never really messed with datastore but i need help today.

local dataStoreService = game:GetService(“DataStoreService”)

local coinsStore = dataStoreService:GetDataStore(“CoinsStore”)
local gemsStore = dataStoreService:GetDataStore(“GemsStore”)

game:GetService(“Players”).PlayerAdded:Connect(function(player)

local folder = Instance.new(“Folder”)
folder.Name = “leaderstats”
folder.Parent = player

local value_1 = Instance.new(“NumberValue”, folder)
value_1.Name = “Clicks”
value_1.Value = coinsStore:GetAsync(player.UserId)

local value_2 = Instance.new(“NumberValue”, folder)
value_2.Name = “Gems”
value_2.Value = gemsStore:GetAsync(player.UserId)

end)

game:GetService(“Players”).PlayerRemoving:Connect(function(player)

local folder = player:WaitForChild(“leaderstats”)
local value_1 = folder:WaitForChild(“Coins”)
local value_2 = folder:WaitForChild(“Gems”)

coinsStore:SetAsync(player.UserId, value_1.Value)
gemsStore:SetAsync(player.UserId, value_2.Value)

end)

You should place GetAsync and SetAsync within a pcall function.

DataStoreService gives errors some times, meaning a pcall function will prevent that.
Your script may stop working sometimes, if you don’t have a pcall function

Heres an example for getting data:

local data

local success,err = pcall(function()
  data = coinsStore:GetAsync(player.UserId)
end)

if success then
  value_1 = data
else
 warn(err)
end

I found a few issues and fixed them, try it now and see if it works (you need to modify the users’ coin and gem values server-side cause client-side adjustments dont change server-side values.)

local dataStoreService = game:GetService(“DataStoreService”)

local coinsStore = dataStoreService:GetDataStore(“CoinsStore”)
local gemsStore = dataStoreService:GetDataStore(“GemsStore”)

game:GetService(“Players”).PlayerAdded:Connect(function(player)

player.CharacterAdded:Connect(function(char)

local folder = Instance.new(“Folder”)
folder.Name = “leaderstats”
folder.Parent = player

local value_1 = Instance.new(“NumberValue”, folder)
value_1.Name = “Coins”
value_1.Value = coinsStore:GetAsync(player.UserId)

local value_2 = Instance.new(“NumberValue”, folder)
value_2.Name = “Gems”
value_2.Value = gemsStore:GetAsync(player.UserId)

end)

end)

game:GetService(“Players”).PlayerRemoving:Connect(function(player)

local folder = player:FindFirstChild(“leaderstats”)
local value_1 = folder:FindFirstChild(“Coins”)
local value_2 = folder:FindFirstChild(“Gems”)

coinsStore:SetAsync(player.UserId, value_1.Value)
gemsStore:SetAsync(player.UserId, value_2.Value)

end)

game:BindToClose(function()
for _,plr in pairs(game:GetService(“Players”):GetChildren()) do

local folder = player:FindFirstChild(“leaderstats”)
local value_1 = folder:FindFirstChild(“Coins”)
local value_2 = folder:FindFirstChild(“Gems”)

coinsStore:SetAsync(plr.UserId, value_1.Value)
gemsStore:SetAsync(plr.UserId, value_2.Value)

end
end)

I’d recommend using ProfileService instead of default Roblox Datastores so you dont experience data-loss when making a lot of requests.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.