What do you want to achieve? Users will join the game and get a folder given to them called “Gender” This will be a data store too. However I thought I could just re-purpose my leaderboard folder giver but I was very wrong.
What solutions have you tried so far? Browsed devforum, nothing useful.
local DSS = game:GetService('DataStoreService')
local PD = DSS:GetDataStore('PlayerData')
local function onPlayerJoin(player)
local Gender = Instance.new("Folder")
Gender.Name = "Gender"
Gender.Parent = Gender
local Gender = Instance.new("IntValue")
Gender.Name = "Gender"
Gender.Parent = Gender
local playerUserID = 'Player_'..player.UserId
local data = PD:GetAsync(playerUserID)
if data then
Gender.Value = data['Gender']
else
Gender.Value = 0
end
end
local function create_table(player)
local player_stats = {}
for _, stat in pairs(player.Gender:GetChildren()) do
player_stats[stat.Name] = stat.Value
end
return player_stats
end
local function onPlayerExit(player)
local player_stats = create_table(player)
local success, err = pcall(function()
local playerUserId = 'Player_'..player.UserId
PD:setAsync(playerUserId, player_stats)
end)
if not success then
warn('Could not save data')
end
end
game.Players.PlayerAdded:Connect(onPlayerJoin)
game.Players.PlayerRemoving:Connect(onPlayerExit)
local DSS = game:GetService('DataStoreService')
local PD = DSS:GetDataStore('PlayerData')
local function onPlayerJoin(player)
local Gender = Instance.new("Folder")
Gender.Name = "Gender"
Gender.Parent = player
local playerUserID = 'Player_'..player.UserId
local data = PD:GetAsync(playerUserID)
if data then
Gender.Value = data['Gender']
else
Gender.Value = 0
end
end
local function create_table(player)
local player_stats = {}
for _, stat in pairs(player.Gender:GetChildren()) do
player_stats[stat.Name] = stat.Value
end
return player_stats
end
local function onPlayerExit(player)
local player_stats = create_table(player)
local success, err = pcall(function()
local playerUserId = 'Player_'..player.UserId
PD:setAsync(playerUserId, player_stats)
end)
if not success then
warn('Could not save data')
end
end
game.Players.PlayerAdded:Connect(onPlayerJoin)
game.Players.PlayerRemoving:Connect(onPlayerExit)
local DSS = game:GetService('DataStoreService')
local PD = DSS:GetDataStore('PlayerData')
local function onPlayerJoin(player)
local GenderFolder = Instance.new("Folder")
GenderFolder.Name = "Gender"
GenderFolder.Parent = player
local Gender = Instance.new("IntValue")
Gender.Name = "Gender"
Gender.Parent = GenderFolder
local playerUserID = 'Player_'..player.UserId
local data = PD:GetAsync(playerUserID)
if data then
Gender.Value = data['Gender']
else
Gender.Value = 0
end
end
local function create_table(player)
local player_stats = {}
for _, stat in pairs(player.Gender:GetChildren()) do
player_stats[stat.Name] = stat.Value
end
return player_stats
end
local function onPlayerExit(player)
local player_stats = create_table(player)
local success, err = pcall(function()
local playerUserId = 'Player_'..player.UserId
PD:setAsync(playerUserId, player_stats)
end)
if not success then
warn('Could not save data')
end
end
game.Players.PlayerAdded:Connect(onPlayerJoin)
game.Players.PlayerRemoving:Connect(onPlayerExit)
Try this.
This is basically your first code, I just changed the var Parent and var Name.
I think Gender should be a “String value” and not an “IntValue.”
You didn’t make a leaderboard and just put it as Gender. Instead you could do:
local playerUserID = 'Player_'..player.UserId
local data = PD:GetAsync(playerUserID)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local Gender = Instance.new("StrValue")
Gender.Name = "Gender"
Gender.Parent = leaderstats
if data then...
Something like that and then you can access this by another script: