I need help with a script with data stores, I want to correct the mistakes because when I tested it out the only thing this has done was remove my stats. I want it to actually save it then load it back again when the player leaves and comes back.
local datastore = game:GetService("DataStoreService"):GetDataStore("PlayerStats")
game.Players.PlayerRemoving:connect(function(player)
player:WaitForDataReady() -- make sure we aren't looking for leaderstats before they are created
wait(2) -- just in case
local stats = player:FindFirstChild("leaderstats"):GetChildren()
for i = 1, #stats do -- creates a loop for all the stats
print(stats[i].Name)
datastore:SetAsync(stats[i].Name, stats[i].Value)
end
end)
-- Loading dem stats
game.Players.PlayerAdded:connect(function(newplayer)
newplayer:WaitForDataReady() -- make sure we aren't looking for leaderstats before they are created
wait(2) -- just in case
local stats2 = newplayer:FindFirstChild("leaderstats"):GetChildren()
for i = 1, #stats2 do
stats2[i].Value = datastore:GetAsync(stats2[i].Name)
end
end)
The script below is the script for making the leaderstats. NOTE THE TWO CODES ARE IN DIFFERENT SCRIPTS!
game.Players.PlayerAdded:connect (function(plr)
local leaderstats = Instance.new("Model",plr)
leaderstats.Name = "leaderstats"
local lvl = Instance.new("IntValue", leaderstats)
lvl.Name = "LVL"
lvl.Value = 1
local currency = Instance.new("IntValue", leaderstats)
currency.Name = "Gold"
currency.Value = 100
end)

2 comments
Maybe you need to remove the wait(2). I've never seen that before in a data store before.
I asked a similar question yesterday, never got a response. Good luck :/