Hi,
Hope you're all having a great new year so far! I'm trying to work on a game and I have a script that saves the tools in your backpack when you leave the game, but when I try to either add code to make the game save the player's variable data (Money and Knowledge), it doesn't work and breaks the entire script. I also tried putting it in a different script but it doesn't seem to work still. Could anyone help me out with this? This is the current script that saves all the tools
local DataStore = game:GetService("DataStoreService"):GetDataStore("Tools") game.Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function(char) game.ReplicatedStorage.PlayerReset:FireClient(player) player:WaitForChild("InShop").Value = false char.ChildAdded:Connect(function(child) if child:IsA("Tool") then player.Equipped.Value = child.Name end end) -- Give the tool back if game.ServerStorage.Tools:FindFirstChild(player:WaitForChild("Equipped").Value) then local toolToEquip = game.ServerStorage.Tools[player.Equipped.Value]:Clone() toolToEquip.Parent = player:WaitForChild("Backpack") end end) local inShop = Instance.new("BoolValue") inShop.Name = "InShop" inShop.Value = false inShop.Parent = player local playerToolsFolder = Instance.new("Folder") playerToolsFolder.Name = player.Name playerToolsFolder.Parent = game.ServerStorage.PlayerTools local equipped = Instance.new("StringValue") equipped.Name = "Equipped" equipped.Parent = player local tools = "tools-"..player.UserId local equippedKey = "equipped-"..player.UserId local data = nil local success, errormessage = pcall(function() data = DataStore:GetAsync(tools) end) if success then print("Data for the tools was Found") else warn("Error"..errormessage) end local equippedData = nil local success, errormessage = pcall(function() equippedData = DataStore:GetAsync(equippedKey) end) if success then print("Data for the tools was Found") else warn("Error"..errormessage) end if equippedData ~= nil then equipped.Value = equippedData end if data ~= nil then for i, tool in pairs(data) do if game.ServerStorage.Tools:FindFirstChild(tool) then local clonedTool = game.ServerStorage.Tools:FindFirstChild(tool):Clone() clonedTool.Parent = game.ServerStorage.PlayerTools:FindFirstChild(player.Name) end end else print("New player") end end) game.Players.PlayerRemoving:Connect(function(player) local tools = {} for i, tool in pairs(game.ServerStorage.PlayerTools[player.Name]:GetChildren()) do table.insert(tools,tool.Name) end local success, errormessage = pcall(function() DataStore:SetAsync("tools-"..player.UserId,tools) end) if success then print("data saved") else print("There was an error:"..errormessage) end local success, errormessage = pcall(function() DataStore:SetAsync("equipped-"..player.UserId,player.Equipped.Value) end) if success then print("data saved") else print("There was an error:"..errormessage) end print("Data successfully saved") end) game:BindToClose(function() for i, player in pairs(game.Players:GetPlayers()) do if player then player:Kick("This game is shutting down") end end wait(10) end)
Thanks!