Roblox có một hệ thống bảng xếp hạng tích hợp cho phép bạn hiển thị thông tin người dùng như điểm số, tiền tệ hoặc thời gian nhanh nhất trong một cuộc đua.

Thiết lập bảng xếp hạng
Để thiết lập bảng xếp hạng và thêm người chơi khi họ tham gia trò chơi:
Tạo một Script mới trong ServerScriptService và đặt tên là Leaderboard.

Trong script, kết nối một hàm với sự kiện PlayerAdded.
local Players = game:GetService("Players")local function leaderboardSetup(player)endPlayers.PlayerAdded:Connect(leaderboardSetup)Bên trong hàm đã kết nối, tạo một instance Folder mới, đặt tên là leaderstats, và gán nó cho người chơi.
local Players = game:GetService("Players")local function leaderboardSetup(player)local leaderstats = Instance.new("Folder")leaderstats.Name = "leaderstats"leaderstats.Parent = playerendPlayers.PlayerAdded:Connect(leaderboardSetup)
Thêm thống kê
Bảng xếp hạng sử dụng các đối tượng kiểu giá trị để lưu trữ và hiển thị thống kê của người chơi. Script này sẽ hiển thị vàng của người chơi bằng cách sử dụng IntValue, một chỗ giữ cho một số nguyên.
Trong hàm leaderboardSetup(), thêm các dòng từ 8 đến 11:
local Players = game:GetService("Players")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = leaderstats
end
Players.PlayerAdded:Connect(leaderboardSetup)
Những dòng này thực hiện điều sau đây:
Một instance IntValue được tạo ra.
Tên của instance được thiết lập là "Gold". Đây chính xác là cách mà thống kê sẽ xuất hiện trên bảng xếp hạng.

Giá trị ban đầu của thống kê Value được đặt là 0. Giá trị này có thể được đặt về bất kỳ giá trị nào bạn muốn, bao gồm một giá trị được lưu trữ trong dữ liệu lưu trữ nếu bạn đang triển khai bảng xếp hạng bền vững.
Instance được gán cho thư mục leaderstats sẽ thêm nó vào bảng xếp hạng. Khi một người chơi tham gia trò chơi, tên của họ sẽ xuất hiện trên bảng.

Cập nhật thống kê
Để cập nhật thống kê bảng xếp hạng của người chơi, hãy thay đổi thuộc tính Value của thống kê đó trong thư mục leaderstats của họ. Ví dụ, bạn có thể gán script sau cho bất kỳ đối tượng nhặt nào để tăng thống kê Gold của người chơi khi họ nhặt nó.
local Players = game:GetService("Players")
local goldChunk = script.Parent
local function onPartTouch(otherPart)
local partParent = otherPart.Parent
local player = Players:GetPlayerFromCharacter(partParent)
local leaderstats = player and player:FindFirstChild("leaderstats")
local goldStat = leaderstats and leaderstats:FindFirstChild("Gold")
if goldStat then
-- Hủy đối tượng nhặt
goldChunk:Destroy()
-- Cập nhật thống kê bảng xếp hạng của người chơi
goldStat.Value += 10
end
end
goldChunk.Touched:Connect(onPartTouch)
Sắp xếp thống kê
Có ba cách để kiểm soát thứ tự của các thống kê trong bảng xếp hạng:
- Thêm các thống kê theo thứ tự mà bạn muốn chúng xuất hiện.
- Thêm một BoolValue con tên là IsPrimary vào thống kê và đặt giá trị của nó là true để đặt thống kê đó ở vị trí đầu tiên trong bảng xếp hạng.
- Thêm một NumberValue con tên là Priority vào thống kê và đặt giá trị của nó thành một số nguyên. Giá trị ưu tiên cao hơn sẽ xuất hiện sớm hơn trong bảng xếp hạng. Các thống kê không có ưu tiên có giá trị ưu tiên mặc định là 0.
Mẫu mã này cho thấy cách thêm giá trị IsPrimary vào một thống kê:
local Players = game:GetService("Players")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = leaderstats
local isPrimary = Instance.new("BoolValue")
isPrimary.Name = "IsPrimary"
isPrimary.Value = true
isPrimary.Parent = gold
end
Players.PlayerAdded:Connect(leaderboardSetup)
Ẩn bảng xếp hạng
Để ẩn bảng xếp hạng, như trên màn hình menu hoặc trong một đoạn cắt, hãy đặt một LocalScript vào trong StarterGui hoặc StarterPlayerScripts chứa một lệnh gọi đến StarterGui.
local StarterGui = game:GetService("StarterGui")StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)