Why this script didn't save my data?

this is DataSaveScript

local DS = game:GetService("DataStoreService"):GetDataStore("CCSData")

game.Players.PlayerAdded:Connect(function(player)
	wait()
	local plr_key = "id_".. player.UserId
	local saves = {
		-- LEADERSTATS SAVES
		player.leaderstats.Coins.Value,
		player.leaderstats.Levels.Value,
		
		--OTHER
		player.TotalCoinsPickUp.Value,
		player.TotalCoins.Value,
	}
	
	DS:SetAsync("id_"..player.UserId, saves)
	local GetSaved = DS:GetAsync(plr_key)
	if GetSaved then
		for i, v in pairs(saves) do
			v.Value = GetSaved[i]
		end
	else
		local NFS = {}
		for i, v in pairs(saves) do
			table.insert(NFS, i, v.Value)
		end
		DS:SetAsync(plr_key, NFS)
	end
end)

game.Players.PlayerRemoving:Connect(function(player)
	
	
	
end)

and this is leaderstats script:

game.Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player
	
	local coins = Instance.new("NumberValue",stats)
	coins.Name = "Coins"
	coins.Value = 0
	
	local totalcoins = Instance.new("IntValue", player)
	totalcoins.Name = "TotalCoins"
	totalcoins.Value = 0
	
	local totalcoinspickup = Instance.new("IntValue",player)
	totalcoinspickup.Name = "TotalCoinsPickUp"
	totalcoinspickup.Value = 0
	
	local level = Instance.new("IntValue", stats)
	level.Name = "Level"
	level.Value = 0

Getting any errors or anything?

nah no error only when i puck up coin but it still gives me coins in leaderstats

Whats the error when a coin is picked up?

Workspace.Map.Zone1.Coins.coin.Script:5: attempt to index nil with ‘leaderstats’ - Server - Script:5
19:26:00.628 Stack Begin - Studio
19:26:00.628 Script ‘Workspace.Map.Zone1.Coins.coin.Script’, Line 5 - Studio - Script:5
19:26:00.628 Stack End - Studio

script.Parent.Touched:Connect(function(hit)
	local coin = script.Parent
	local player = hit.Parent:FindFirstChild("Humanoid")
	local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
	if plr.leaderstats.Coins.Value >= 0 then
		wait()
		script.Disabled = true
		coin.Transparency = 1
		plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value + 1
		plr.TotalCoins.Value = plr.TotalCoins.Value + 1
		plr.TotalCoinsPickUp.Value = plr.TotalCoinsPickUp.Value + 1
		wait(2)
		wait(.01)
		coin.Transparency = 0
		script.Disabled = false
	end
end)

script inside coin