I need help with datastores, appearantly this module script doesn't work
local module = {} module.BaseStats = { Credits = 0; Rank = 1; EXP = 0; Inventory = { AchievementPins = {} } } local dss = game:GetService("DataStoreService"):GetDataStore('PlayerData') function save(player) local tries = 0 local saved = false repeat wait() local inventory={ AchievementPins={}; } for _,v in pairs(player.Stats.Inventory.AchievementPins:GetChildren()) do inventory.AchievementPins[#inventory.AchievementPins+1] = v.Name end local success,message = pcall(function() dss:SetAsync('user_'..player.UserId,{ Credits = player.Stats.Credits.Value; Rank = player.Stats.Rank.Value; EXP = player.Stats.EXP.Value; Inventory = inventory; }) end) print("Attempting to save "..player.Name.."'s data("..tries..")") if success then saved = true print("Successfully saved "..player.Name.."'s data") else tries = tries + 1 print("Attempting to save "..player.Name.."'s data("..tries..")") end wait() until (tries == 5) or saved end function module.ClientJoined(player) local stats = Instance.new('Folder',player) local credits = Instance.new('IntValue',stats) local rank = Instance.new('IntValue',stats) local exp = Instance.new('IntValue',stats) local inventory = Instance.new('Folder',stats) local achievementpins = Instance.new('Folder',inventory) stats.Name = 'Stats' credits.Name = 'Credits' rank.Name = 'Rank' exp.Name = 'EXP' inventory.Name = 'Inventory' achievementpins.Name = 'AchievementPins' local data = dss:GetAsync('user_'..player.UserId) or module.BaseStats credits.Value = data.Credits rank.Value = data.Rank exp.Value = data.EXP for _,v in pairs(data.Inventory) do for _,value in pairs(v) do Instance.new('StringValue',stats[v.Name]).Name = value end end end function module.ClientLeft(player) save(player) end game.Players.ChildAdded:Connect(function(player) module.ClientJoined(player) end) game.Players.ChildRemoved:Connect(function(player) module.ClientLeft(player) end) return module