Hi Guys, so I’m making a simulator and I have made my data system in this way -
local DS = game:GetService("DataStoreService")
local DataStore = DS:GetDataStore("Data")
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder", player)
leaderstats.Name = "leaderstats"
local Strength = Instance.new("IntValue", leaderstats)
Strength.Name = "Strengths"
Strength.Value = 0
local Rebirths = Instance.new("IntValue", leaderstats)
Rebirths.Name = "Rebirths"
Rebirths.Value = 0
local data
local data2
local success, err = pcall(function()
data = DataStore:GetAsync(player.UserId.."power")
data2 = DataStore:GetAsync(player.UserId.."rebirth")
end)
if success then
Strength.Value = data
else
warn(err)
end
end)
game.Players.PlayerRemoving:Connect(function(player)
local data
local data2
local success, err = pcall(function()
data = DataStore:SetAsync(player.UserId.."power", player.leaderstats.Strengths.Value)
data2 = DataStore:SetAsync(player.UserId.."rebirth", player.leaderstats.Rebirths.Value)
end)
if success then
print("Saved")
else
warn(err)
end
end)
game:BindToClose(function()
for i,v in pairs(game.Players:GetPlayers()) do
v:Kick("Server Closed")
end
end)
Now the problem is I have a global leaderboard which doesn’t works , probably because I have saved 2 data in one datastore and my global leaderboard which gets the datastore can’t access the things we want. Like I want to make a strength leaderboard but as I have saved rebirths and strengths in a same datastore, it doesn’t know probably and it doesn’t works
My global leaderboard script -
local DataStoreService = game:GetService("DataStoreService")
local CashDataStore = DataStoreService:GetOrderedDataStore("Data")
local leaderboard = script.Parent.Parent.Parent
local RefreshRate = 30
local function RefreshLeaderboard()
for i, Player in pairs(game.Players:GetPlayers()) do
CashDataStore:SetAsync(Player.UserId.."power", Player.leaderstats.Strengths.Value)-- You can add your Currency Value by writing Player.leaderstats.(Your currency name).Value
end
local Success, Error = pcall(function()
local Data = CashDataStore:GetSortedAsync(false, 10)
local CashPage = Data:GetCurrentPage()
for Rank, SavedData in ipairs(CashPage) do
local Key = string:gsub(tostring(SavedData.key, "power", ""))
local Username = game.Players:GetNameFromUserIdAsync(tonumber(Key))
local Cash = SavedData.value
if Cash then
local NewList = script.Parent.List:Clone()
NewList.Parent = leaderboard.SurfaceGui.Frame
NewList.Name = Username
NewList.Text = "#"..Rank.." "..Username.." "..Cash
NewList.Visible = true
NewList.ImageLabel.Image = game:GetService("Players"):GetUserThumbnailAsync(game.Players:GetUserIdFromNameAsync(Username), Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
end
end
end)
end
while true do
for i, Label in pairs(leaderboard.SurfaceGui.Frame:GetChildren()) do
if Label.Name ~= "List" and Label:IsA("TextLabel") then
Label:Destroy()
end
end
RefreshLeaderboard()
wait(RefreshRate)
end
Now I want to know how to only access the strength and display it. Thanks !