DataStore not working

So what do i have to do to get this all working, because when im ingame on roblox i give myself 1k coins but when i join back it just didnt save

Try changing this to SetAsync

Still doesnt save i really dont get why this is not working for me

If it doesn’t even print anything then the PlayerAdded function is not working

Try this instead:

local dataStore = game:GetService("DataStoreService"):GetDataStore("SaveData")
local function PlayerAdded(plr)
	wait()
	local plrid = "id_"..plr.UserId
	local save1 = plr.leaderstats.Coins
	local save2 = plr.leaderstats.Gems
	local save3 = plr.leaderstats.Wins
	local save4 = plr.leaderstats.XP
	

	local GetSaved = dataStore:GetAsync(plrid)
	if GetSaved then
		save1.Value = GetSaved[1]
		print("Coins")
		save2.Value = GetSaved[2]
		print("Gems")
		save3.Value = GetSaved[3]
		print("Wins")
		save4.Value = GetSaved[4]
		print("XP")
	else
		local NumberForSaving = {save1.Value, save2.Value, save3.Value, save4.Value}
		dataStore:GetAsync(plrid,NumberForSaving)
	end
end

game.Players.PlayerAdded:Connect(PlayerAdded)

for _, player in ipairs(game.Players:GetPlayers()) do 
    PlayerAdded(player)
end

game:BindToClose(function()
	task.wait(3)
	for _, plr in pairs(game:GetService("Players"):GetPlayers()) do
		dataStore:SetAsync("id_"..plr.UserId, {plr.leaderstats.Coins.Value, plr.leaderstats.Gems.Value, plr.leaderstats.Wins.Value, plr.leaderstats.XP.Value})
	end
end)

Was the player ever added from the beginning to the data store?

Like, if it’s their first time player, they’ll be added to the data store?

Still doesnt save anything… are there any other solutionS?

Are you giving yourself 1k coins through the client or through the server? If it’s through the client then it won’t save to the datastore.

Im not giving myself any coins, i have a round system that gives me coins. so that works through the server

I have had this issue to, however it isn’t really a problem.

What I found was that my script was working, but it didn’t save the coins when i gave them to myself via commands.

What I mean by that is, when I manually changed my value in the command console or in the leaderstats folder while playing, it wouldn’t save.

Try putting a part into the workspace that, when touched, gives you money, and see if that works instead.

Post edit: Sorry, did not see your previous response with the round system, i thought you were changing it with commands. Make sure the round system gives you coins on a SERVER script. I will look into this further…

Replace this with the script you’re using to create your leaderstats files. This worked for me.

local dataStore = game:GetService("DataStoreService"):GetDataStore("SaveData")

game.Players.PlayerAdded:Connect(function(plr)
	local plrid = "id_"..plr.UserId
	
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = plr
	
	local Coins = Instance.new("IntValue") -- You can replace IntValue with whatever value you're using to create them.
	Coins.Name = "Coins"
	Coins.Parent = leaderstats
	
	local Gems = Instance.new("IntValue")
	Gems.Name = "Gems"
	Gems.Parent = leaderstats
	
	local Wins = Instance.new("IntValue")
	Wins.Name = "Wins"
	Wins.Parent = leaderstats
	
	local XP = Instance.new("IntValue")
	XP.Name = "XP"
	XP.Parent = leaderstats
	
	
	local GetSaved = dataStore:GetAsync(plrid)
	
	if GetSaved then
		Coins.Value = GetSaved["Coins"]
		Gems.Value = GetSaved["Gems"]
		Wins.Value = GetSaved["Wins"]
		XP.Value = GetSaved["XP"]
		print("Player's data restored.")
	else
		local NumberForSaving = {Coins.Value, Gems.Value, Wins.Value, XP.Value}
		dataStore:SetAsync(plrid,NumberForSaving)
		print("Player doesn't have data.")
	end
end)

game.Players.PlayerRemoving:Connect(function(plr)
	local datatable = {
		Coins = plr.leaderstats.Coins.Value,
		Gems = plr.leaderstats.Gems.Value,
		Wins = plr.leaderstats.Wins.Value,
		XP = plr.leaderstats.XP.Value
	}
	
	dataStore:SetAsync("id_"..plr.UserId, datatable)
end)

Let me know if this works for you.

Maybe you were in client mode, haha

Don’t fix this issue and use profileservice

Your issue can be fixed but will bring more issues to your game if you use setasync

First of all, a player may leave inmediately when he joins making it possible for the setasync to load faster, plus, you don’t have any session locking since you could leave and join back and the previous setasync may not have loaded yet

Still does not save anything unfortunately

How would this work? ive just got into datastoring and ive never heard of that

You can check the documentation or some videos linked there. I highly suggest you to transition to this module and almost always use it. To prevent further headaches in your scripting life

Might it have something with specificly this part to do with?

Why would it have something to do? Also no

I was unsure, that’s why I said, “might it” and put a question-mark at the end.

Couldn’t you have tested that yourself or posted a new topic instead of bumping this thread for a question, not a solution?