Database 2 not saving

Good Day,

I am having issues using Database 2, from Roblox Studio or the published game the datastore 2 is not saving data, when the player leaves the game all data is lost, it works fine while playing the game.

I have SaveInStudio bool set and allow API/HTTP enabled.

local DataStore2 = require(game.ServerScriptService:WaitForChild("Modules"):WaitForChild("DataStore2"))
local FormatNum = require(game.ReplicatedStorage:WaitForChild("Modules"):WaitForChild("FormatNum"))

DataStore2.Combine("MasterKey", 
					"coins", 
					"backpackvalue", 
					"backpacksize", 
					"backpackused", 
					"backpacktype",  
					"tooltype", 
					"inmine")

game.Players.PlayerAdded:Connect(function(player)
	
	local PlayerGui = player.PlayerGui
	
	-- Setup Stats
	local folder = Instance.new("Folder", player)
	folder.Name = "leaderstats"
	
	-- Coins
	local datacoins = DataStore2("coins", player)
	local coins = Instance.new("IntValue", folder)
	coins.Name = "coins"

	-- backpackvalue
	local databackpackvalue = DataStore2("backpackvalue", player)
	local backpackvalue = Instance.new("IntValue", folder)
	backpackvalue.Name = "backpackvalue"
	
	-- backpacksize
	local databackpacksize = DataStore2("backpacksize", player)
	local backpacksize = Instance.new("IntValue", folder)
	backpacksize.Name = "backpacksize"

	-- backpackused
	local databackpackused = DataStore2("backpackused", player)
	local backpackused = Instance.new("IntValue", folder)
	backpackused.Name = "backpackused"

	-- backpacktype
	local databackpacktype = DataStore2("backpacktype", player)
	local backpacktype = Instance.new("StringValue", folder)
	backpacktype.Name = "backpacktype"
	
	-- tooltype
	local datatooltype = DataStore2("tooltype", player)
	local tooltype = Instance.new("StringValue", folder)
	tooltype.Name = "tooltype"
	
	-- inmine
	local datainmine = DataStore2("inmine", player)
	local inmine = Instance.new("IntValue", folder)
	inmine.Name = "inmine"
	
	
	
	
	---------------------------------
	-- Load Data
	---------------------------------
	
	-- coins
	if datacoins:Get() ~= nil then
		coins.Value = datacoins:Get()
		--PlayerGui.Status.Main.FrameCoins.coinsValue.Text = FormatNum.Simplify(coins.Value)
		--PlayerGui.Status.Main.FrameCoins.coins.Text = tostring(coins.Value)
	else
		coins.Value = 0
		--PlayerGui.Status.Main.FrameCoins.coins.Text = tostring(coins.Value)
	end
	
	-- backpackvalue
	if databackpackvalue:Get() ~= nil then
		backpackvalue.Value = databackpackvalue:Get()
	else
		backpackvalue.Value = 0
	end
	
	
	-- backpacksize
	if databackpacksize:Get() ~= nil then
		backpacksize.Value = databackpacksize:Get()
	else
		backpacksize.Value = 10
	end
	
	
	-- backpackused
	if databackpackused:Get() ~= nil then
		backpackused.Value = databackpackused:Get()
	else
		backpackused.Value = 0
	end
	
	
	-- backpacktype
	if databackpacktype:Get() ~= nil then
		backpacktype.Value = databackpacktype:Get()
	else
		backpacktype.Value = "backpack"
	end
	
	
	-- tooltype
	if datatooltype:Get() ~= nil then
		tooltype.Value = datatooltype:Get()
	else
		tooltype.Value = "pickaxe"
	end

	
	-- inmine
	if datainmine:Get() ~= nil then
		inmine.Value = datainmine:Get()
	else
		inmine.Value = 1
	end
	
	
	
	
	---------------------------------
	-- Save data
	---------------------------------

	-- Coins
	coins.Changed:Connect(function()
		datacoins:Set(coins.Value)
	end)
	
	-- backpackvalue
	backpackvalue.Changed:Connect(function()
		databackpackvalue:Set(backpackvalue.Value)
	end)
	
	-- backpacksize
	backpacksize.Changed:Connect(function()
		databackpacksize:Set(backpacksize.Value)
	end)
	
	-- backpackused
	backpackused.Changed:Connect(function()
		databackpackused:Set(backpackused.Value)
	end)
	
	-- backpacktype
	backpacktype.Changed:Connect(function()
		databackpacktype:Set(backpacktype.Value)
	end)
	
	-- tooltype
	tooltype.Changed:Connect(function()
		datatooltype:Set(tooltype.Value)
	end)
	
	-- inmine
	inmine.Changed:Connect(function()
		datainmine:Set(inmine.Value)
	end)
	
	
	
-------------------------------------------------------------------------------------------------------------	
-- Coins
-------------------------------------------------------------------------------------------------------------	
local function setCoins(player, coins)
	player.leaderstats.coins.Value = player.leaderstats.coins.Value + coins
	return player.leaderstats.coins.Value
end
game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-Coins-RF").OnServerInvoke = setCoins
	
local function getCoins(player)
	return player.leaderstats.coins.Value
end
game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-Coins-RF").OnServerInvoke = getCoins	
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
	
	
-------------------------------------------------------------------------------------------------------------	
-- backpackvalue
-------------------------------------------------------------------------------------------------------------	
local function setbackpackvalue(player, backpackvalue)
		player.leaderstats.backpackvalue.Value = player.leaderstats.backpackvalue.Value + backpackvalue
		return player.leaderstats.backpackvalue.Value
end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-backpackvalue-RF").OnServerInvoke = setbackpackvalue
	
	local function getbackpackvalue(player)
		return player.leaderstats.backpackvalue.Value
end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-backpackvalue-RF").OnServerInvoke = backpackvalue		
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------

	
	
-------------------------------------------------------------------------------------------------------------	
-- backpacksize
-------------------------------------------------------------------------------------------------------------		
	local function setbackpacksize(player, backpacksize)
		player.leaderstats.backpacksize.Value = player.leaderstats.backpacksize.Value + backpacksize
		return player.leaderstats.backpacksize.Value
end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-backpacksize-RF").OnServerInvoke = setbackpacksize

	local function getbackpacksize(player)
		return player.leaderstats.backpacksize.Value
end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-backpacksize-RF").OnServerInvoke = getbackpacksize
	
	
	
------------------------------------------------------------------
-- backpackused
------------------------------------------------------------------	
	local function setbackpackused(player, backpackused)
		player.leaderstats.backpackused.Value = player.leaderstats.backpackused.Value + backpackused
		return player.leaderstats.backpackused.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-backpackused-RF").OnServerInvoke = setbackpackused

	local function getbackpackused(player)
		return player.leaderstats.backpackused.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-backpackused-RF").OnServerInvoke = getbackpackused		
	
	
	------------------------------------------------------------------
	-- backpacktype
	------------------------------------------------------------------	
	local function setbackpacktype(player, backpacktype)
		player.leaderstats.backpacktype.Value = player.leaderstats.backpacktype.Value + backpacktype
		return player.leaderstats.backpacktype.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-backpackused-RF").OnServerInvoke = setbackpackused

	local function getbackpacktype(player)
		return player.leaderstats.backpacktype.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-backpacktype-RF").OnServerInvoke = getbackpacktype		

	
	------------------------------------------------------------------
	-- tooltype
	------------------------------------------------------------------	
	local function settooltype(player, backpacktype)
		player.leaderstats.tooltype.Value = player.leaderstats.tooltype.Value + tooltype
		return player.leaderstats.tooltype.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-tooltype-RF").OnServerInvoke = settooltype

	local function gettooltype(player)
		return player.leaderstats.tooltype.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-tooltype-RF").OnServerInvoke = gettooltype
	
	------------------------------------------------------------------
	-- inmine
	------------------------------------------------------------------	
	local function setinmine(player, inmine)
		player.leaderstats.inmine.Value = player.leaderstats.inmine.Value + inmine
		return player.leaderstats.inmine.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Set-tooltype-RF").OnServerInvoke = settooltype

	local function getinmine(player)
		return player.leaderstats.inmine.Value
	end
	game.ReplicatedStorage:WaitForChild("RemoteFunctions"):WaitForChild("Get-inmine-RF").OnServerInvoke = getinmine
	
end)












1 Like