I got this script. It should clone the stats and put them in a folder inside the player, but when I start the game and look at the values they're all 0. Please help me
local DataStoreService = game:GetService("DataStoreService")
local dataStore = DataStoreService:GetDataStore("main-ds")
local statsHolder = script.Stats
game.Players.PlayerAdded:Connect(function(newPlayer)
local key = "player-id: " .. newPlayer.UserId
local GetSave = dataStore:GetAsync(key)
local DataBaseFolder = Instance.new("Folder", newPlayer)
DataBaseFolder.Name = "PlayerStats"
for i, v in pairs(statsHolder:GetChildren()) do
local clone = v:Clone()
clone.Name = v.Name
clone.Value = v.Value
clone.Parent = DataBaseFolder
end
local cloneHolder = statsHolder:GetChildren()
cloneHolder.Parent = DataBaseFolder
if GetSave then
-- player has data
print("Player has data")
for _, Stats in pairs(statsHolder:GetChildren()) do
DataBaseFolder[Stats.Name].Value = GetSave[_]
print(_, Stats.Name, Stats.Value)
end
else -- save data
local StatsToSave = {}
for _, Stats in pairs(DataBaseFolder:GetChildren()) do
table.insert(StatsToSave, Stats.Value)
print(_, Stats.Name, Stats.Value)
end
dataStore:SetAsync(key, StatsToSave)
end
while wait(30) do -- auto save
local StatsToSave = {}
for _, Stats in pairs(DataBaseFolder:GetChildren()) do
table.insert(StatsToSave, Stats.Value)
print(_, Stats.Name, Stats.Value)
end
dataStore:SetAsync(key, StatsToSave)
end
game.Players.PlayerRemoving:Connect(function(oldPlayer)
local key = "player-id: " .. oldPlayer.UserId
local StatsToSave = {}
for _, Stats in pairs(DataBaseFolder:GetChildren()) do
table.insert(StatsToSave, Stats.Value)
print(_, Stats.Name, Stats.Value)
end
dataStore:SetAsync(key, StatsToSave)
end)
end)
