Basically, its not saving my data but I'm not sure why?
local ds = game:GetService("DataStoreService"):GetDataStore("Tools") -- loading game.Players.PlayerAdded:Connect(function(plr) local key = "id-"..plr.userId local success,tools = pcall(function() return ds:GetAsync(key) end) if not success then error("not successful retrieving tooldata") else if not tools then return end for _, tool in pairs(tools) do local backpack = plr:WaitForChild("Backpack") local StarterGear = plr:WaitForChild("StarterGear") print(tool) if backpack and StarterGear then local toolInstance = game:GetService("ServerStorage").Tools:FindFirstChild(tool) if toolInstance then print(toolInstance) toolInstance:Clone().Parent = backpack toolInstance:Clone().Parent = StarterGear end end end end end) -- saving game.Players.PlayerRemoving:connect(function(plr) local key = "id-"..plr.userId local char = plr.Character or plr.CharacterAdded:Wait() for _,tool in pairs(char:GetDescendants()) do if tool:IsA("Tool") then tool.Parent = plr.Backpack end end local success, err = pcall(function() local toolsToSave = {} for i,v in pairs(plr.Backpack:GetChildren()) do if v then table.insert(toolsToSave,v.Name) end end print(unpack(toolsToSave)) return ds:SetAsync(key,toolsToSave) end) if err then print(err) end end)