setclipboard("https://discord.gg/FgR3MXqZy9")
local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local RIVALS_OK_URL = "https://discord.com/api/webhooks/..."
local RIVALS_WHITELIST_PL = "https://..."
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "Rivals Leaderboard - v4pl"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.DisplayOrder = 2
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local MainFrame = Instance.new("Frame")
MainFrame.Name = "Main"
MainFrame.Size = UDim2.new(0, 450, 0, 350)
MainFrame.Position = UDim2.new(0.5, -225, 0.5, -175)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
MainFrame.BackgroundTransparency = 0.1
MainFrame.BorderSizePixel = 0
MainFrame.Parent = ScreenGui
local Corner = Instance.new("UICorner")
Corner.CornerRadius = UDim.new(0, 8)
Corner.Parent = MainFrame
local Title = Instance.new("TextLabel")
Title.Name = "Title"
Title.Text = "âš” Rivals Leaderboard - v4pl"
Title.Size = UDim2.new(1, 0, 0, 35)
Title.Position = UDim2.new(0, 0, 0, 0)
Title.BackgroundTransparency = 1
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 18
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = MainFrame
local Padding = Instance.new("UIPadding")
Padding.PaddingLeft = UDim.new(0, 10)
Padding.Parent = Title
local ScrollingFrame = Instance.new("ScrollingFrame")
ScrollingFrame.Name = "PlayerList"
ScrollingFrame.Size = UDim2.new(1, -20, 1, -50)
ScrollingFrame.Position = UDim2.new(0, 10, 0, 40)
ScrollingFrame.BackgroundTransparency = 1
ScrollingFrame.ScrollBarThickness = 6
ScrollingFrame.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 100)
ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
ScrollingFrame.Parent = MainFrame
local UIListLayout = Instance.new("UIListLayout")
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 5)
UIListLayout.Parent = ScrollingFrame
local playerEntries = {}
local priorityPlayers = {}
local function formatNumber(num)
return tostring(num):reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
end
local function getPlayerStats(player)
local leaderstats = player:FindFirstChild("leaderstats")
if not leaderstats then
return nil
end
local level = leaderstats:FindFirstChild("level")
local elo = leaderstats:FindFirstChild("elo")
local streak = leaderstats:FindFirstChild("streak")
local rank = leaderstats:FindFirstChild("rank")
return {
Level = level and level.Value or 0,
ELO = elo and elo.Value or 0,
Streak = streak and streak.Value or 0,
Rank = rank and rank.Value or "Unranked",
Name = player.Name,
DisplayName = player.DisplayName
}
end
local function getELOColor(elo)
if elo >= 2000 then
return "#FF0000"
elseif elo >= 1500 then
return "#FF8C00"
elseif elo >= 1000 then
return "#FFD700"
else
return "#FFFFFF"
end
end
local function getStreakColor(streak)
if streak >= 10 then
return "#FF4500"
elseif streak >= 5 then
return "#FFA500"
else
return "#AAAAAA"
end
end
local function sendWebhook(player, stats)
local success, err = pcall(function()
local data = {
content = "🔥 PRIORITY Player Found: " .. player.Name,
embeds = {{
title = "âš” Rivals Player Stats",
color = 16711680,
fields = {
{name = "👤 Name", value = player.Name .. " (@" .. player.DisplayName .. ")", inline = true},
{name = "📊 Level", value = tostring(stats.Level), inline = true},
{name = "🆠ELO", value = tostring(stats.ELO), inline = true},
{name = "🔥 Win Streak", value = tostring(stats.Streak), inline = true},
{name = "🎯 Rank", value = stats.Rank, inline = true},
{name = "â° Time", value = DateTime.now():ToIsoDate(), inline = false}
},
footer = {
text = "Rivals Leaderboard v4pl"
}
}}
}
local jsonData = HttpService:JSONEncode(data)
end)
if not success then
warn("Failed to send webhook: " .. tostring(err))
end
end
local function isPriorityPlayer(stats)
return stats.ELO >= 1500 or stats.Streak >= 5
end
local function createPlayerEntry(player)
local stats = getPlayerStats(player)
if not stats then
return nil
end
local entry = Instance.new("TextLabel")
entry.Name = player.Name .. "_Entry"
entry.Size = UDim2.new(1, -10, 0, 25)
entry.BackgroundTransparency = 1
entry.TextColor3 = Color3.fromRGB(255, 255, 255)
entry.Font = Enum.Font.GothamSemibold
entry.TextSize = 14
entry.TextXAlignment = Enum.TextXAlignment.Left
entry.RichText = true
local eloColor = getELOColor(stats.ELO)
local streakColor = getStreakColor(stats.Streak)
entry.Text = string.format(
"#%d [Lvl %s] %s | WS: %s | ELO: %d (%s)",
eloColor, stats.Rank, stats.Level, player.Name, streakColor, stats.Streak, eloColor, stats.ELO, stats.Rank
)
if isPriorityPlayer(stats) and not priorityPlayers[player.UserId] then
priorityPlayers[player.UserId] = true
sendWebhook(player, stats)
entry.Text = "🔥 " .. entry.Text
end
return entry
end
local function updateLeaderboard()
for _, entry in pairs(playerEntries) do
entry:Destroy()
end
playerEntries = {}
local playerList = {}
for _, player in ipairs(Players:GetPlayers()) do
local stats = getPlayerStats(player)
if stats then
table.insert(playerList, {Player = player, Stats = stats})
end
end
table.sort(playerList, function(a, b)
return a.Stats.ELO > b.Stats.ELO
end)
for i, data in ipairs(playerList) do
local entry = createPlayerEntry(data.Player)
if entry then
entry.LayoutOrder = i
entry.Parent = ScrollingFrame
table.insert(playerEntries, entry)
end
end
ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, #playerList * 30)
end
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function()
wait(1)
updateLeaderboard()
end)
local leaderstats = player:WaitForChild("leaderstats", 5)
if leaderstats then
for _, stat in ipairs(leaderstats:GetChildren()) do
stat.Changed:Connect(updateLeaderboard)
end
leaderstats.ChildAdded:Connect(function(child)
child.Changed:Connect(updateLeaderboard)
end)
end
updateLeaderboard()
end)
Players.PlayerRemoving:Connect(function(player)
priorityPlayers[player.UserId] = nil
updateLeaderboard()
end)
local dragging = false
local dragStart = nil
local startPos = nil
MainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = MainFrame.Position
end
end)
MainFrame.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
MainFrame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
MainFrame.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
spawn(function()
repeat wait() until game:IsLoaded()
wait(2)
updateLeaderboard()
end)
spawn(function()
while wait(5) do
updateLeaderboard()
end
end)