If i replace uid_ with anything else it doesnt work anymore
local DSS = game:GetService("DataStoreService")
local datastore = DSS:GetDataStore("GeneralSaveData", "Players")
function generateDataKey(player)
local ret = ("uid_" .. player.userId)
return ret
end
function generateDataTable(player)
local dataTable = {
Units = player.leaderstats.Units.Value,
Level = player.leaderstats.Level.Value,
Xp = player.leaderstats.Xp.Value
}
return dataTable
end
function saveDataForPlayer(player)
local key = generateDataKey(player)
local data = generateDataTable(player)
datastore:SetAsync(key, data)
end
function inputDataToPlayer(player, data)
player.leaderstats.Units.Value = data.Units
player.leaderstats.Level.Value = data.Level
player.leaderstats.Xp.Value = data.Xp
end
function loadDataForPlayer(player)
local key = generateDataKey(player)
local data = datastore:GetAsync(key)
inputDataToPlayer(player, data)
end
game.Players.PlayerAdded:connect(function(player)
player:WaitForChild("leaderstats")
loadDataForPlayer(player) --Load first thing when they join
end)
game.Players.PlayerRemoving:connect(saveDataForPlayer) --Save data when the player leaves the game

2 comments
Well then the problem is something else. Please tell me the output.
also on line 6 you do not need to use the parentheses and you don't need spaces before or after the .. concatenator operation. Also you should not use deprecated code like :connect. You should use :Connect