Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

I need Help with Data Store Saves, help?

Asked by 3 years ago

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
Please use code blocks properly. Soban06 410 — 3y

Answer this question