Im using tables for my datastore but for some reason my data gets added to queue, i don’t really know what im doing wrong.
local dataStoreService = game:GetService("DataStoreService")
local key = "Test1"
local ds = dataStoreService:GetDataStore(key)
local stats = {
["leaderstats"] = {
["Stages"] = 0;
}
}
game:GetService("Players").PlayerAdded:Connect(function(plr)
local data = ds:GetAsync(key.."/"..plr.UserId)
print(data)
for i, StatTable in pairs(stats) do
local folder = Instance.new("Folder")
folder.Name = i
folder.Parent = plr
for stat, value in pairs(StatTable) do
local val_new = Instance.new("NumberValue")
val_new.Name = stat
val_new.Value = value
val_new.Parent = folder
if data then
val_new.Value = data[folder.Name][stat]
end
end
end
end)
local function SaveData(plr)
local tableToSave = stats
for i, folder in pairs(plr:GetChildren()) do
if folder.ClassName == "Folder" then
for i, stat in pairs(folder:GetChildren()) do
tableToSave[folder.Name][stat.Name] = stat.Value
end
end
end
if tableToSave then
local tries = 0
repeat
tries += 1
local succ, err = pcall(function()
local data = ds:UpdateAsync(key..'/'..plr.UserId,function(olddata)
return tableToSave
end)
end)
if err then warn(err) task.wait(6) end
until succ or tries == 3
print("Data saved for " .. plr.Name)
end
end
game:GetService("Players").PlayerRemoving:Connect(function(plr)
SaveData(plr)
end)
game:BindToClose(function()
for _, plr in ipairs(game:GetService("Players"):GetPlayers()) do
coroutine.wrap(SaveData)(plr)
end
end)