DataStore not saving data

so in the saveData function i get the an error
I followed a yt tutorial but i dont understand crap about datastores so i gonna need a lil help



---- CREATING THE CASH

local cash = Instance.new("IntValue")
local ps = game:GetService("Players")
local dss = game:GetService("DataStoreService")
local http = game:GetService("HttpService")
local plrdatastore = dss:GetDataStore("playerdata")
local playerdata

game.Players.PlayerAdded:Connect(function(player)
	
	cash.Parent = player 
	cash.Name = "Cash"
	cash.Value = 200
	

	local Success, errormsg = pcall(function()
		local pID = ps:GetUserIdFromNameAsync()
		playerdata = plrdatastore:GetAsync(pID)
	end)

	if Success then
		cash.Value = playerdata[1]
	else
		wait(errormsg)
	end
	print(playerdata)
	
end)

local function saveData(Player)
	local PlayerData = {cash.Value}
	
	local Success, errormsg = pcall(function()
		plrdatastore:SetAsync(Player.UserId, playerdata)
	end)

	if not Success then
		warn(errormsg)   ----ERROR HERE
	end
end

game:BindToClose(function()
	for _, Player in pairs(game.Players:GetPlayers()) do
		saveData(Player)
	end
end)




game.Players.PlayerRemoving:Connect(function(Player)
	saveData(Player)
end)

Lot of problems:

  1. You have nothing in your :GetUserIdFromNameAsync, and it isn’t needed since you can just get .UserId
  2. You’re referencing cash outside your function, but that would prevent any future players’ data saving
  3. You didn’t capitalize playerdata

Code:

---- CREATING THE CASH
local ps = game:GetService("Players")
local dss = game:GetService("DataStoreService")
local http = game:GetService("HttpService")
local plrdatastore = dss:GetDataStore("playerdata")

local function saveData(Player)
	local PlayerData = {Player.Cash.Value}

	local Success, errormsg = pcall(function()
		plrdatastore:SetAsync(Player.UserId, PlayerData)
	end)

	if not Success then
		warn(errormsg)   ----ERROR HERE
	end
end

ps.PlayerAdded:Connect(function(player)
	local playerdata = plrdatastore:GetAsync(player.UserId) or {
		200
	}
	
	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = playerdata[1]
	cash.Parent = player 
end)

ps.PlayerRemoving:Connect(saveData)

game:BindToClose(function()
	for _, Player in ps:GetPlayers() do
		saveData(Player)
	end
end)
1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.