How do i fix this?

image

Try running a live test server on studio and see what the issue is.

I never heard of that, and what is it

Basically running a 2 player server on studio. Go into Test and you’ll see it there probably.

its this button here:

Here, I think this talks about it: Live Server Editing

Client Side:

Server Side:

More specifically, look in the output in the Local Server and see what is there. On both the players, and the Server

“output in the Local Server” Do you mean the Output box in Studio?

Yes, in a Local Server multiple studio windows should open, check the output in all of them.

This is in the Server Window:
image

And Client Window:
image

Try this version of your script that I modified:

print("Check 1")
local Players = game:GetService("Players")
local DataStore = game:GetService("DataStoreService")
local CashDS = DataStore:GetDataStore("CashDataStorage")
local Autosave = 10

Players.PlayerAdded:Connect(function(player)
	print("Check 2")
	local savedTable
	local s,m = pcall(function()
		savedTable = CashDS:GetAsync(player.userId)
	end)
	if typeof(savedTable) ~= "table" then
		savedTable = {0,0,0}
	end

	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "SavesFolder"
	leaderstats.Parent = player

	local Cash2 = Instance.new("StringValue")
	Cash2.Name = "AccDisabled"
	cash2.Parent = leaderstats

	local Cash = Instance.new("StringValue")
	Cash.Name = "Save1"
	cash.Parent = leaderstats
	
	local Cash3 = Instance.new("StringValue")
	Cash3.Name = "PlayerPasswort"
	cash3.Parent = leaderstats
	
	Cash2.Value = tonumber(savedTable[1]) or 0
	Cash.Value = tonumber(savedTable[2]) or 0
	Cash3.Value = tonumber(savedTable[3]) or 0
	print("Check 3")
	while true do
		wait(Autosave)
		if not Players:FindFirstChild(tostring(player)) then break end
		print("Saving data for: ", player)
		local saved = false
		local s,m = pcall(function()
			CashDS:SetAsync(player.UserId, {Cash2.Value, Cash.Value, Cash3.Value})
			saved = true
		end)
		print("Players data was saved: ", saved)
	end
end)

and see if all 3 prints will print.

1 Like

It looks like your GetAsync() call returns nil. What’s on line 33?

image

So, since newcash is nil since the player has no data, it is telling you that you are trying to index a nil value. So, you need to put an if statement there and check if newcash exists. If it does, then you index it and set the Cash2, Cash, and Cash3 values, otherwise you would set those values to 0.

Are you guys going to ignore the script I posted above which fixes the error you guys are currently talking about? lol

im testing it right now. ---------

Umm… I’d rather run someone through debugging their problems themselves so that they can do it better next time, rather than provide them with the script that fixes all their problems magically.

1 Like

Yes that is a good thing to do but my point was first seeing if it would print all 3 prints before the autosave loop. Then I was going to explain what it was that I did to fix it.

You don’t need to use a bunch of if statements to check if something exists, if its a number. You can use tonumber() and it will catch it for you and then you can use “or 0” to assign it so its not trying to put false/nil into the stringvalue.

It prints all Checks in Studio and works in Studio but still doesnt save in Game