Here's my datastore meant to save levels and skillpoints for my game, but it doesn't save. What's wrong with it?
local DataStoreService = game:GetService("DataStoreService") local playerData = DataStoreService:GetDataStore("PlayerData") local function onPlayerJoin(player) local leaderstats = Instance.new('Folder') leaderstats.Name = 'leaderstats' leaderstats.Parent = player local Level = Instance.new('IntValue') Level.Name = 'Level' Level.Parent = leaderstats local Exp = Instance.new('IntValue') Exp.Name = 'Exp' Exp.Parent = leaderstats local HP = Instance.new('IntValue') HP.Name = 'Hp' HP.Parent = leaderstats local ST = Instance.new('IntValue') ST.Name = 'StrengthPoints' ST.Parent = leaderstats local DP = Instance.new('IntValue') DP.Name = 'DodgePoints' DP.Parent = leaderstats local SkillPoints = Instance.new('IntValue') SkillPoints.Name = 'SkillPoints' SkillPoints.Parent = leaderstats local playerUserId = 'Player_'..player.UserId local data = playerData:GetAsync(playerUserId) if data then SkillPoints.Value = data["SkillPoints"] DP.Value = data["DodgePoints"] ST.Value = data["StrengthPoints"] HP.Value = data["Hp"] Exp.Value = data["Exp"] Level.Value = data["Level"] else SkillPoints.Value = 0 DP.Value = 0 ST.Value = 0 HP.Value = 0 Exp.Value = 0 Level.Value = 1 if Level.Value == 0 then Level.Value = 1 end end end local function create_table(player) local player_stats = {} for _, stat in pairs(player.leaderstats:GetChildren()) do player_stats[stat.Name] = stat.Value end return player_stats end local function onPlayerExit(player) local player_stats = create_table(player) local success, err = pcall(function() local playerUserId = 'Player_'..player.UserId playerData:SetAsync(playerUserId, player_stats) end) if not success then warn('Couldnt save data') end end game.Players.PlayerAdded:Connect(onPlayerJoin) game.Players.PlayerRemoving:Connect(onPlayerExit)