How would i save Leaderstats/values Across Different Games

Skip to (AG-2) if you just want to read what i have tried. the rest is just what i have been trying to do and somewhat im making.

i need to save data over games. i have tried some videos but when i “save” them. it doesn’t and just only makes a instance. i really need this for a game im working on.

i have tried doing other things such as changing values from being a boolvalue to a int value and see if its a 1 or 0 to see if its true or false. i have also tried using fewer values that needs to be saved. i have over 20+ values that need to be saved in order for the game to work. this incudes settings. shop. and other game mechanics.

now i would keep this a secret. but its really nothing new. the game im working on is a fnaf game. same mechanics as fnaf 2 but a few new things. like you needing to look at a animatronic to stop it from killing you. but due to that i also want to save how many times the player has died to the animatronic. so far i have no idea why its not working.

the reason i need the boolvalue is because of the shop. if the player has a upgrade or a badge then something would happen that night. like a duable verification system to see if the player beat the night. same with the other value to see if the player has played the tutorial. or even played before.

i also need it to see what night the player is on. i also im trying to add a animatronic Saving system. so if the player disconnects from the game mid game. it would save all animatronics positions and ablity usage. same with how much time intel the next move. same with time etc…

(AG-2)

So the problem. its not saving. this is the code i have. i put some comments there because i sometime dip out of coding for weeks just to relax for a bit.

this is for making the instances. – placed in ServerScriptService

game.Players.PlayerAdded:Connect(function(Player)

	local leaderstats = Instance.new("Folder",Player)
	leaderstats.Name = "leaderstats"

	local Nights = Instance.new("IntValue",leaderstats)
	Nights.Name = "Nights"
	Nights.Value = 0
	
	local Night = Instance.new("IntValue",leaderstats)
	Night.Name = "Night"
	Night.Value = 0
	
	-- -_- Nights -_- --
	
	local FazCoins = Instance.new("IntValue",leaderstats)
	FazCoins.Name = "FazCoins"
	FazCoins.Value = 0
	
	local FazTickets = Instance.new("IntValue",leaderstats)
	FazTickets.Name = "FazTickets"
	FazTickets.Value = 0
	
	local TotalScore = Instance.new("IntValue",leaderstats)
	TotalScore.Name = "TotalScore"
	TotalScore.Value = 0
	
	local Score = Instance.new("IntValue",leaderstats)
	Score.Name = "Score"
	Score.Value = 0
	
	local FazPoints = Instance.new("IntValue",leaderstats)
	FazPoints.Name = "FazPoints"
	FazPoints.Value = 0
	
	local DeathCoins = Instance.new("IntValue",leaderstats)
	DeathCoins.Name = "DeathCoins"
	DeathCoins.Value = 0
	
	local Score2 = Instance.new("IntValue",leaderstats)
	Score2.Name = "Score2"
	Score2.Value = 0
	
	-- -_- Points -_- --
	
	local PCUpgrade_FasterTasks = Instance.new("IntValue",leaderstats)
	PCUpgrade_FasterTasks.Name = "PCUpgrade_FasterTasks"
	PCUpgrade_FasterTasks.Value = 0
	
	local PCUpgrade_FasterTasksToggNumber = Instance.new("IntValue",leaderstats)
	PCUpgrade_FasterTasksToggNumber.Name = "PCUpgrade_FasterTasksToggNumber"
	PCUpgrade_FasterTasksToggNumber.Value = 0
	
	local PCUpgrade_CameraTurnSpeed = Instance.new("IntValue",leaderstats)
	PCUpgrade_CameraTurnSpeed.Name = "PCUpgrade_CameraTurn"
	PCUpgrade_CameraTurnSpeed.Value = 0
	
	local PCUpgrade_CameraTurnSpeedToggleNumber = Instance.new("IntValue",leaderstats)
	PCUpgrade_CameraTurnSpeedToggleNumber.Name = "PCUpgrade_CameraTurnSpeedToggleNumber"
	PCUpgrade_CameraTurnSpeedToggleNumber.Value = 0
	
	local PCUpgrade_CameraNightVision = Instance.new("BoolValue",leaderstats)
	PCUpgrade_CameraNightVision.Name = "PCUpgrade_CameraNightVision"
	PCUpgrade_CameraNightVision.Value = false
	
	local PCUpgrade_CameraNightVisionToggle = Instance.new("BoolValue",leaderstats)
	PCUpgrade_CameraNightVisionToggle.Name = "PCUpgrade_CameraNightVisionToggle"
	PCUpgrade_CameraNightVisionToggle.Value = false
	
	local PCUpgrade_CameraLight = Instance.new("BoolValue",leaderstats)
	PCUpgrade_CameraLight.Name = "PCUpgrade_CameraLight"
	PCUpgrade_CameraLight.Value = false
	
	local PCUpgrade_CameraLightToggle = Instance.new("BoolValue",leaderstats)
	PCUpgrade_CameraLightToggle.Name = "PCUpgrade_CameraLightToggle"
	PCUpgrade_CameraLightToggle.Value = false
	
	local PCUpgrade_Power = Instance.new("IntValue",leaderstats)
	PCUpgrade_Power.Name = "PCUpgrade_Power"
	PCUpgrade_Power.Value = 0
	
	local PCUpgrade_PowerToggleNumber = Instance.new("IntValue",leaderstats)
	PCUpgrade_PowerToggleNumber.Name = "PCUpgrade_PowerToggleNumber"
	PCUpgrade_PowerToggleNumber.Value = 0
	
	local PCUpgrade_AnimatronicRust = Instance.new("IntValue",leaderstats)
	PCUpgrade_AnimatronicRust.Name = "PCUpgrade_AnimatronicRust"
	PCUpgrade_AnimatronicRust.Value = 0
	
	local PCUpgrade_AnimatronicRustToggleNumber = Instance.new("IntValue",leaderstats)
	PCUpgrade_AnimatronicRustToggleNumber.Name = "PCUpgrade_AnimatronicRustToggleNumber"
	PCUpgrade_AnimatronicRustToggleNumber.Value = 0
	
	local PCUpgrade_Flash = Instance.new("IntValue",leaderstats)
	PCUpgrade_Flash.Name = "PCUpgrade_Flash"
	PCUpgrade_Flash.Value = 0
	
	local PCUpgrade_FlashToggleNumber = Instance.new("IntValue",leaderstats)
	PCUpgrade_FlashToggleNumber.Name = "PCUpgrade_FlashToggleNumber"
	PCUpgrade_FlashToggleNumber.Value = 0
	
	local sPCUpgrade_FastSwitch = Instance.new("IntValue",leaderstats)
	sPCUpgrade_FastSwitch.Name = "PCUpgrade_FastSwitch"
	sPCUpgrade_FastSwitch.Value = 0
	
	local sPCUpgrade_FastSwitchToggleNumber = Instance.new("IntValue",leaderstats)
	sPCUpgrade_FastSwitchToggleNumber.Name = "PCUpgrade_FastSwitchToggleNumber"
	sPCUpgrade_FastSwitchToggleNumber.Value = 0
	
	local PcUpgrade_PowerOn = Instance.new("IntValue",leaderstats)
	PcUpgrade_PowerOn.Name = "PcUpgrade_PowerOn"
	PcUpgrade_PowerOn.Value = 0
	
	local PcUpgrade_PowerOnToggleNumber = Instance.new("IntValue",leaderstats)
	PcUpgrade_PowerOnToggleNumber.Name = "PcUpgrade_PowerOnToggleNumber"
	PcUpgrade_PowerOnToggleNumber.Value = 0
	
	-- -_- Upgrades -_- --
	
end)

and this is what saves it.

local ds = game:GetService("DataStoreService"):GetGlobalDataStore()

game.Players.PlayerAdded:Connect(function(plr)
	wait()
	local plrkey = "id_"..plr.UserId
	
	local sNights = plr.leaderstats.Nights
	local sNight = plr.leaderstats.Night
	
	-- -_- Wins -_- --
	
	local sFazCoins = plr.leaderstats.FazCoins
	local sFazTickets = plr.leaderstats.FazTickets
	local sScore = plr.leaderstats.Score
	local sScore2 = plr.leaderstats.Score2
	local sFazPoints = plr.leaderstats.FazPoints
	local sTotalScore = plr.leaderstats.TotalScore
	local sDeathCoins = plr.leaderstats.DeathCoins
	
	-- -_- Currency -_- --
	
	local sPCUpgrade_FasterTasks = plr.leaderstats.PCUpgrade_FasterTasks
	local sPCUpgrade_CameraTurn = plr.leaderstats.PCUpgrade_CameraTurn
	local sPCUpgrade_CameraNightVision = plr.leaderstats.PCUpgrade_CameraNightVision
	local sPCUpgrade_Power = plr.leaderstats.PCUpgrade_Power
	local sPCUpgrade_AnimatronicRust = plr.leaderstats.PCUpgrade_AnimatronicRust
	local sPCUpgrade_Flash = plr.leaderstats.PCUpgrade_Flash
	local sPCUpgrade_FastSwitch = plr.leaderstats.PCUpgrade_FastSwitch
	
	-- -_- Upgrades -_- --
	
	local sPCUpgrade_FasterTasksToggNumber = plr.leaderstats.PCUpgrade_FasterTasksToggNumber
	local sPCUpgrade_CameraTurnSpeedToggleNumber = plr.leaderstats.PCUpgrade_CameraTurnSpeedToggleNumber
	local sPCUpgrade_CameraLightToggle = plr.leaderstats.PCUpgrade_CameraLightToggle
	local sPCUpgrade_CameraNightVisionToggle = plr.leaderstats.PCUpgrade_CameraNightVisionToggle
	local sPCUpgrade_PowerToggleNumber = plr.leaderstats.PCUpgrade_PowerToggleNumber
	local sPCUpgrade_AnimatronicRustToggleNumber = plr.leaderstats.PCUpgrade_AnimatronicRustToggleNumber
	local sPCUpgrade_FlashToggleNumber = plr.leaderstats.PCUpgrade_FlashToggleNumber
	local sPCUpgrade_FastSwitchToggleNumber = plr.leaderstats.PCUpgrade_FastSwitchToggleNumber
	local sPcUpgrade_PowerOnToggleNumber = plr.leaderstats.PcUpgrade_PowerOnToggleNumber
	
	-- -_- Upgrade toggle -_- --
	
	local Saved = ds:GetAsync(plrkey)
	if Saved then
		
		sNights.Value = Saved[1]
		sNight.Value = Saved[2]
		sFazCoins.Value = Saved[3]
		sFazTickets.Value = Saved[4]
		sScore.Value = Saved[5]
		sScore2.Value = Saved[6]
		sFazPoints.Value = Saved[7]
		sDeathCoins.Value = Saved[16]
		
		-- -_- Currency -_- --
		
		sTotalScore.Value = Saved[8]
		sPCUpgrade_FasterTasks.Value = Saved[9]
		sPCUpgrade_CameraTurn.Value = Saved[10]
		sPCUpgrade_CameraNightVision.Value = Saved[11]
		sPCUpgrade_Power.Value = Saved[13]
		sPCUpgrade_AnimatronicRust.Value = Saved[14]
		sPCUpgrade_Flash.Value = Saved[15]
		sPCUpgrade_FastSwitch.Value = Saved[17] -- 18
		
		-- -_- Upgrades -_- --
		
		sPCUpgrade_FasterTasksToggNumber.Value = Saved[18]
		sPCUpgrade_CameraTurnSpeedToggleNumber.Value = Saved[19]
		sPCUpgrade_CameraLightToggle.Value = Saved[20]
		sPCUpgrade_CameraNightVisionToggle.Value = Saved[21]
		sPCUpgrade_PowerToggleNumber.Value = Saved[22]
		sPCUpgrade_AnimatronicRustToggleNumber.Value = Saved[23]
		sPCUpgrade_FlashToggleNumber.Value = Saved[24]
		sPCUpgrade_FastSwitchToggleNumber.Value = Saved[25]
		sPcUpgrade_PowerOnToggleNumber.Value = Saved[26]
		
		-- -_- Upgrade Toggle -_- --
		
	else
		local NumberForSaving = {
			
			sNights.Value,
			sNight.Value,
			sFazCoins.Value,
			sFazTickets.Value, 
			sScore.Value, 
			sScore2.Value, 
			sFazPoints.Value, 
			sTotalScore.Value, 
			sDeathCoins.Value,
			
			-- -_- Currency -_- --
			
			sPCUpgrade_FasterTasks.Value, 
			sPCUpgrade_CameraTurn.Value, 
			sPCUpgrade_CameraNightVision.Value,
			sPCUpgrade_CameraNightVisionToggle.Value,
			sPCUpgrade_Power.Value,
			sPCUpgrade_AnimatronicRust.Value,
			sPCUpgrade_Flash.Value,
			sPCUpgrade_Flash.Value,
			sPCUpgrade_FastSwitch.Value,
			
			-- -_- Upgrades -_- --
			
			sPCUpgrade_FasterTasksToggNumber.Value,
			sPCUpgrade_CameraTurnSpeedToggleNumber.Value,
			sPCUpgrade_CameraLightToggle.Value,
			sPCUpgrade_CameraNightVisionToggle.Value,
			sPCUpgrade_PowerToggleNumber.Value,
			sPCUpgrade_AnimatronicRustToggleNumber.Value,
			sPCUpgrade_FlashToggleNumber.Value,
			sPCUpgrade_FastSwitchToggleNumber.Value,
			sPcUpgrade_PowerOnToggleNumber.Value,
			
			-- -_- Upgrade Toggle -_- --
			
		}
		ds:GetAsync(plrkey, NumberForSaving)
	end
end)

game.Players.PlayerRemoving:Connect(function(plr,Saving)
	ds:SetAsync("id_"..plr.UserId,{plr.leaderstats.Night.Value,plr.leaderstats.FazCoins.Value, plr.leaderstats.FazTickets.Value, plr.leaderstats.Score.Value, plr.leaderstats.Score2.Value, plr.leaderstats.FazPoints.Value,plr.leaderstats.TotalScore.Value,plr.leaderstats.DeathCoins.Value,plr.leaderstats.PCUpgrade_FasterTasks.Value,plr.leaderstats.PCUpgrade_CameraTurn.Value,plr.leaderstats.PCUpgrade_CameraNightVision.Value,	plr.leaderstats.PCUpgrade_Power.Value,plr.leaderstats.PCUpgrade_CameraLight.Value,plr.leaderstats.PCUpgrade_AnimatronicRust.Value,plr.leaderstats.PCUpgrade_Flash.Value,plr.leaderstats.PCUpgrade_FastSwitch.Value,	plr.leaderstats.PcUpgrade_PowerOn,plr.leaderstats.PCUpgrade_FasterTasksToggNumber.Value,plr.leaderstats.PCUpgrade_CameraTurnSpeedToggleNumber.Value,plr.leaderstats.PCUpgrade_CameraNightVisionToggle.Value,plr.leaderstats.PCUpgrade_PowerToggleNumber.Value,plr.leaderstats.PCUpgrade_CameraLightToggle.Value,plr.leaderstats.PCUpgrade_AnimatronicRustToggleNumber.Value,plr.leaderstats.PCUpgrade_FlashToggleNumber.Value,plr.leaderstats.PCUpgrade_FastSwitchToggleNumber.Value,plr.leaderstats.PcUpgrade_PowerOnToggleNumber,})
end)

i still need to add a lot more. but im gonna wait it out intel i solve the problem.

heres the youtube videos that i have tried:

The one that im using. im willing to change it

Didnt work. and i dont know if it can save from different places

Didnt like the look of it. and still dont know if its able to be saved across places

1 Like

The best option (to my knowledge) would be to use http service to send your data to firestore which is realiable

If you choose the REALTIME not FIRESTORE but REALTIME database then you can unlimited read and writes. Then in other games you can retrieve the data. It is owned by google so it’s secure and super easy to use, the realtime database took me minutes to understand so I highly recommend.

It’s also got like 10k libraries about different languages so its widely supported.

Or choose another database but all the others I found are like £200

1 Like