I'm new to Coding and trying to learn to make my own game, i was watching a YT tutorial on a Stats System and everything works, with no errors, except nothing ever actually saves.
YT Video: https://www.youtube.com/watch?v=XEKhHX_uPME
My Script:
--Creates DataStore of Stats for Players using Roblox DataStoreService local DataStore = game:GetService("DataStoreService") local GameData = DataStore:GetDataStore("Test 1")
--Starting Stats local baseStats = { SoulPower = 1; EXP = 0; Health = 100; Spirit = 100; Strength = 5; Endurance = 5; Dexterity = 5;
}
function saveData(Player,PlayerStats) local dataToSave = {}
warn("Saving Data...") for i, data in pairs(PlayerStats:GetChildren()) do dataToSave[i] = data.Value end GameData:SetAsync(Player.UserId,dataToSave) warn("Data Saved!")
end --Makes Folder Inside Players to Save Stats game.Players.PlayerAdded:Connect(function(Player) --Creates Type of Stats and Names Them local PlayerStats = Instance.new("Folder",Player) PlayerStats.Name = "PlayerStats"
local SoulPower = Instance.new("NumberValue",PlayerStats) SoulPower.Name = "SoulPower" SoulPower.Value = baseStats.SoulPower local EXP = Instance.new("NumberValue",PlayerStats) EXP.Name = "EXP" EXP.Value = baseStats.EXP local Health = Instance.new("NumberValue",PlayerStats) Health.Name = "Health" Health.Value = baseStats.Health local Spirit = Instance.new("NumberValue",PlayerStats) Spirit.Name = "Spirit" Spirit.Value = baseStats.Spirit local Strength = Instance.new("NumberValue",PlayerStats) Strength.Name = "Strength" Strength.Value = baseStats.Strength local Endurance = Instance.new("NumberValue",PlayerStats) Endurance.Name = "Endurance" Endurance.Value = baseStats.Endurance local Dexterity = Instance.new("NumberValue",PlayerStats) Dexterity.Name = "Dexterity" Dexterity.Value = baseStats.Dexterity local plrSaves pcall(function() plrSaves = GameData:GetAsync(Player.UserID) end) if plrSaves then --If Player Has Save Data warn("Player has Data!") for i, data in pairs(PlayerStats:GetChildren()) do data.Value = plrSaves[i] print(data.Name,":",data.Value) end else --If Player Does Not Have Save Data warn("Player has no Data!") for i, data in pairs(PlayerStats:GetChildren()) do print(data.Name,":",data.Value) end end
end)
game.Players.PlayerRemoving:Connect(function(Player) local PlayerStats = Player:WaitForChild("PlayerStats") saveData(Player,PlayerStats) end)