Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

I can't save data in my game. I have a DataStore script. Can anybody help fix this?

So this is a script for DataStore and leaderstats. I do have studio access to API services on.

local serverStorage = game:GetService("ServerStorage")
local dataStore = game:GetService("DataStoreService"):GetDataStore("PlayerSave")
game.Players.PlayerAdded:Connect(function(player)
	
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player
	
	local strength = Instance.new("NumberValue")
	strength.Name = "Strength"
	strength.Parent = leaderstats
	
	local rebirths = Instance.new("IntValue")
	rebirths.Name = "Rebirths"
	rebirths.Parent = leaderstats
	
	local dataFolder = Instance.new("Folder")
	dataFolder.Name = player.Name
	dataFolder.Parent = serverStorage.RemoteData
	
	local debounce = Instance.new("BoolValue")
	debounce.Name = "Debounce"
	debounce.Parent = dataFolder
	
	local strengthData, rebirthsData
	
	local success, errormessage = pcall(function()
		strengthData = dataStore:GetAsync("strength-"..player.UserId)
		rebirthsData = dataStore:GetAsync("rebirths-"..player.UserId)
	end)
	if success then
		if strengthData then
			strength.Value = strengthData
			rebirths.Value = rebirthsData
		end
	end
	
end)

game.Players.PlayerRemoving:Connect(function(player)
	local success, errormessage = pcall(function()
		dataStore:SetAsync("strength-"..player.UserId.player.leaderstats.Strength.Value)
		dataStore:SetAsync("rebirths-"..player.UserId.player.leaderstats.Rebirths.Value)
	end)
end)

My game will NOT save data for some reason... If you can help me, please reply or put an answer.

2 answers

✓ Accepted answer

The reason why it is not saving is that you conjoined player.UserId with the "Strength" and "Rebirths" values on lines 42 and 43. All you have to do is add a comma instead of a period in between both parameters. I have the solution below if you want to see the correct outcome.

game.Players.PlayerRemoving:Connect(function(player)
	local success, errormessage = pcall(function()
		dataStore:SetAsync("strength-"..player.UserId, player.leaderstats.Strength.Value)
		dataStore:SetAsync("rebirths-"..player.UserId, player.leaderstats.Rebirths.Value)
	end)
end)

1 comment

0

Thanks!

Do something like this inside the player removing part:

game.Players.PlayerRemoving:Connect(function(player)
    local success, errormessage = pcall(function()
        dataStore:SetAsync(player.UserId.."-strength", player.leaderstats.Strength.Value)
        dataStore:SetAsync(player.UserId.."-rebirths", player.leaderstats.Rebirths.Value)
    end)
end)

This discussion is preserved as it was. New answers, comments, and votes are closed.