The leaderstat works but the DataStore service does not save anything.

Here's my code ::

local level = game:GetService('DataStoreService'):GetDataStore('Lev191el')
local xp = game:GetService('DataStoreService'):GetDataStore('X191P')
local axp = game:GetService('DataStoreService'):GetDataStore('AXP') -- amount of xp needed

function savedata(dataname, playerid, value)
	game:GetService('DataStoreService'):GetDataStore(dataname):SetAsync(playerid, value)
end


game.Players.PlayerAdded:connect(function(player)
	local leader = Instance.new('Folder')
	leader.Name = 'leaderstats'
	leader.Parent = player
	local levelz = Instance.new('IntValue')
	levelz.Value = level:GetAsync(tostring(player.userId)) or 1
	levelz.Name = 'Level'
	levelz.Parent = player:WaitForChild('leaderstats')
	local xpz = Instance.new('NumberValue')
	xpz.Value = xp:GetAsync(tostring(player.userId)) 
	xpz.Name = 'XP'
	xpz.Parent = player
	local xpn = Instance.new('IntValue')
	xpn.Value = axp:GetAsync(tostring(player.userId)) or 700
	xpn.Name = 'XpNeeded'
	xpn.Parent = player
	
	xpz.Changed:connect(function()
		if player:WaitForChild('XP').Value >= player:WaitForChild('XpNeeded').Value then
			levelz.Value = levelz.Value+1
			xpn.Value = xpn.Value+700
			savedata('Levels',player.userId,levelz.Value)
			savedata('XP',player.userId,xpz.Value)
			savedata('AXP',player.userId,xpn.Value)
		else
			savedata('Levels',player.userId,levelz.Value)
			savedata('XP',player.userId,xpz.Value)
			savedata('AXP',player.userId,xpn.Value)
		end
		    savedata('Levels',player.userId,levelz.Value)
			savedata('XP',player.userId,xpz.Value)
			savedata('AXP',player.userId,xpn.Value)
	end)
end)

game.Players.PlayerRemoving:connect(function(player)
		savedata('Levels',player.userId,player.leaderstats.Level.Value)
			savedata('XP',player.userId,player.XP.Value)
			savedata('AXP',player.userId,player.XpNeeded.Value)
end)

1 comment

0

I'll add on that making your DataStores named strangely doesn't really increase security.