So i've been trying to make a material system but since im not entirely that good at scripting, i decided to save the materials that the player has collected throughout their play session to a leaderstats - like Folder (made specifically so it won't show up on the upper right corner, where the player list is) and i used DataStoreService (by following a tutorial of course) and after testing it TONS of times, it seemed to work. When i went to work on the game today though, some of the values were completely zero. What went wrong? Heres the script

local DataStore = game:GetService("DataStoreService"):GetDataStore("DataStore")

local ErrorMessage = "get noob no save lol"

game.Players.PlayerAdded:Connect(function(Player)
	local StatFolder = Instance.new("Folder")
	StatFolder.Name = "StatFolder"
	StatFolder.Parent = Player

	local Coal = Instance.new("IntValue")
	Coal.Name = "Coal"
	Coal.Parent = StatFolder

	local Iron = Instance.new("IntValue")
	Iron.Name = "Iron"
	Iron.Parent = StatFolder
	
	local Gold = Instance.new("IntValue")
	Gold.Name = "Gold"
	Gold.Parent = StatFolder
	
	local Norzium = Instance.new("IntValue")
	Norzium.Name = "Norzium"
	Norzium.Parent = StatFolder
	
	local OakWood = Instance.new("IntValue")
	OakWood.Name = "OakWood"
	OakWood.Parent = StatFolder
	
	local Copper = Instance.new("IntValue")
	Copper.Name = "Copper"
	Copper.Parent = StatFolder

	local CoalData
	local IronData
	local GoldData
	local NorzData
	local OakData
	local CopperData

	local Success, ErrorMessage = pcall(function()
		CoalData = DataStore:GetAsync(Player.UserId.."-CoalData")
		IronData = DataStore:GetAsync(Player.UserId.."-IronData")
		GoldData = DataStore:GetAsync(Player.UserId.."-GoldData")
		NorzData = DataStore:GetAsync(Player.UserId.."-NorzData")
		OakData = DataStore:GetAsync(Player.UserId.."-OakData")
		CopperData = DataStore:GetAsync(Player.UserId.."-CopperData")
	end)

	if not Success then
		print(ErrorMessage)
	end

	if CoalData ~= nil then
		Coal.Value = CoalData
	else
		Coal.Value = 0
	end
	
	if CopperData ~= nil then
		Copper.Value = CopperData
	else
		Copper.Value = 0
	end
	
	if OakData ~= nil then
		OakWood.Value = OakData
	else
		OakWood.Value = 0
	end
	
	if NorzData ~= nil then
		Norzium.Value = NorzData
	else
		Norzium.Value = 0
	end
	
	if GoldData ~= nil then
		Gold.Value = GoldData
	else
		Gold.Value = 0
	end

	if IronData ~= nil then
		Iron.Value = IronData
	else
		Iron.Value = 0
	end
end)

game.Players.PlayerRemoving:Connect(function(Player)
	pcall(function()
		DataStore:SetAsync(Player.UserId.."-CoalData", Player.StatFolder.Coal.Value)
		DataStore:SetAsync(Player.UserId.."-IronData", Player.StatFolder.Iron.Value)
		DataStore:SetAsync(Player.UserId.."-GoldData", Player.StatFolder.Gold.Value)
		DataStore:SetAsync(Player.UserId.."-NorzData", Player.StatFolder.Norzium.Value)
		DataStore:SetAsync(Player.UserId.."-OakData", Player.StatFolder.OakWood.Value)
		DataStore:SetAsync(Player.UserId.."-CopperData", Player.StatFolder.Copper.Value)
	end)
end)

I hope someone answers this. Anyway, cheers!