local DS = game:GetService("DataStoreService"):GetDataStore("DataSystem")
local function save(player)
local folder = player:WaitForChild("Data")
local data = {}
for k,v in pairs(folder:GetChildren()) do
if v.ClassName ~= "Folder" then
data[v.Name] = v.Value
end
end
for i=1,3 do
if pcall(DS.SetAsync,DS,player.userId,data) then
return
end
end
end
local function load(player)
local folder = player:WaitForChild("Data")
local suc,data
for i=1,3 do
local s,e = pcall(DS.GetAsync,DS,player.userId)
if s then suc,data = s,e break end
end
if suc and data then
for k,v in pairs(data) do
local val = folder:FindFirstChild(k)
if val then val.Value = v end
end
elseif suc then
--No data
else
--Error
return
end
end
local Players = game:GetService("Players")
Players.PlayerAdded:connect(function(plr)
local Stats = script.data:Clone()
Stats.Parent = plr
load(plr)
end)
Players.PlayerRemoving:connect(function(plr)
save(plr)
end)
-- Auto save
while wait(30) do
for k,v in pairs(Players:GetPlayers()) do
coroutine.wrap(save)(v)
end
end
I dont even know what i should try anymore, help please
