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)

1 comment
Please use code blocks properly.