M
Description
DEFAULT OPEN/CLOSE MENU IS HOME (YOU CAN CHANGE IT IN MISC) Aimbot Esp Flight (risky) Speed (risky)
GAMERIVALS [❄️FREEZE RAY❄️]
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6abf02974d5a0436b3566404"))()
end)
end)
--[[rscripts:analytics:end]]
-- ============================================================
-- Rivals Custom — Scanner + ESP + Aimbot + Misc [RED THEME]
-- ============================================================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- ============================================================
-- THEME
-- ============================================================
local Theme = {
Accent = Color3.fromRGB(255, 45, 60),
AccentDim = Color3.fromRGB(180, 30, 42),
WindowBg = Color3.fromRGB(22, 10, 14),
SectionBg = Color3.fromRGB(38, 14, 20),
RowBg = Color3.fromRGB(55, 20, 28),
RowBgAlt = Color3.fromRGB(48, 18, 24),
RowBgHover = Color3.fromRGB(70, 25, 34),
ToggleOff = Color3.fromRGB(75, 30, 40),
TabInactive = Color3.fromRGB(50, 18, 25),
TabInactiveTxt = Color3.fromRGB(230, 200, 200),
TabActiveTxt = Color3.fromRGB(20, 5, 8),
ValueTxt = Color3.fromRGB(255, 120, 130),
LabelTxt = Color3.fromRGB(255, 240, 240),
InfoTxt = Color3.fromRGB(200, 160, 165),
SliderTrack = Color3.fromRGB(80, 30, 40),
CloseBtn = Color3.fromRGB(220, 40, 55),
}
-- ============================================================
-- CLEANUP + KILL INFRASTRUCTURE
-- ============================================================
local Connections = {}
local Killed = false
local function track(conn)
table.insert(Connections, conn)
return conn
end
do
local pg = LocalPlayer:WaitForChild("PlayerGui")
for _, g in ipairs(pg:GetChildren()) do
if g.Name == "RivalsMenu" then g:Destroy() end
end
end
local KillHooks = {}
local function kill()
if Killed then return end
Killed = true
for _, c in ipairs(Connections) do
pcall(function() c:Disconnect() end)
end
Connections = {}
for _, fn in ipairs(KillHooks) do
pcall(fn)
end
pcall(function() RunService:UnbindFromRenderStep("RivalsMenuMouseGuard") end)
pcall(function()
UserInputService.ModalEnabled = false
UserInputService.MouseIconEnabled = true
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
GuiService.SelectedObject = nil
end)
pcall(function()
local pg = LocalPlayer:FindFirstChild("PlayerGui")
if pg then
for _, g in ipairs(pg:GetChildren()) do
if g.Name == "RivalsMenu" then g:Destroy() end
end
end
end)
print("[Rivals] Script terminated.")
end
_G.__RivalsKill = kill
-- ============================================================
-- CONFIG
-- ============================================================
local Config = {
ESP = {
Enabled = true,
Box = true,
Name = true,
Distance = true,
Tracer = false,
MaxDistance = 1000,
EnemyColor = Color3.fromRGB(255, 60, 60),
TeamColor = Color3.fromRGB(80, 255, 80),
},
Aimbot = {
Enabled = false,
Key = Enum.UserInputType.MouseButton2,
FOV = 150,
Smoothness = 0.20,
TargetPart = "Head",
TeamCheck = true,
DrawFOV = true,
},
Misc = {
Flight = { Enabled = false, Speed = 50 },
WalkSpeed = { Enabled = false, Value = 100 },
JumpPower = { Enabled = false, Value = 100 },
InfiniteJump = false,
NoClip = false,
},
UI = {
ToggleKey = Enum.KeyCode.Home,
},
}
-- ============================================================
-- SCANNER
-- ============================================================
local function isEnemy(plr)
if not Config.Aimbot.TeamCheck then return true end
if not LocalPlayer.Team or not plr.Team then return true end
return plr.Team ~= LocalPlayer.Team
end
local function getCharacter(plr)
if plr == LocalPlayer then return nil end
local char = workspace:FindFirstChild(plr.Name)
if not char or not char:IsA("Model") then return nil end
if char.Name:sub(1, 6) == "HWRAP_" then return nil end
return char
end
local function getAimPosition(char)
local target = Config.Aimbot.TargetPart
if target == "Head" then
local p = char:FindFirstChild("Head")
return p and p.Position
elseif target == "Torso" then
local p = char:FindFirstChild("UpperTorso")
or char:FindFirstChild("Torso")
or char:FindFirstChild("LowerTorso")
return p and p.Position
elseif target == "Left Leg" then
local names = { "LeftUpperLeg", "LeftLowerLeg", "LeftFoot", "Left Leg" }
local sum, n = Vector3.zero, 0
for _, name in ipairs(names) do
local p = char:FindFirstChild(name)
if p and p:IsA("BasePart") then
sum = sum + p.Position
n = n + 1
end
end
if n == 0 then return nil end
return sum / n
elseif target == "Right Leg" then
local names = { "RightUpperLeg", "RightLowerLeg", "RightFoot", "Right Leg" }
local sum, n = Vector3.zero, 0
for _, name in ipairs(names) do
local p = char:FindFirstChild(name)
if p and p:IsA("BasePart") then
sum = sum + p.Position
n = n + 1
end
end
if n == 0 then return nil end
return sum / n
end
end
local function scanTargets()
local list = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer then
local char = getCharacter(plr)
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
local head = char:FindFirstChild("Head")
local root = char:FindFirstChild("HumanoidRootPart")
if hum and hum.Health > 0 and head and root then
table.insert(list, {
Player = plr,
Character = char,
Humanoid = hum,
Head = head,
Root = root,
AimPosition = getAimPosition(char),
IsEnemy = isEnemy(plr),
})
end
end
end
end
return list
end
-- ============================================================
-- SCREEN HELPERS
-- ============================================================
local function worldToScreen(worldPos)
local sp, onScreen = Camera:WorldToViewportPoint(worldPos)
return Vector2.new(sp.X, sp.Y), onScreen, sp.Z
end
local function viewportCenter()
local vp = Camera.ViewportSize
return Vector2.new(vp.X * 0.5, vp.Y * 0.5)
end
-- ============================================================
-- DRAWING / ESP SETUP
-- ============================================================
local hasDrawing = pcall(function() return Drawing.new("Square") end)
if not hasDrawing then
warn("[Rivals] Drawing API not available — ESP disabled.")
end
local espDrawings = {}
_G.__RivalsDrawings = espDrawings
local function createESP(plr)
if not hasDrawing then return nil end
local d = {}
d.box = Drawing.new("Square")
d.box.Thickness = 1.5
d.box.Filled = false
d.box.Transparency = 1
d.box.Color = Color3.new(1, 1, 1)
d.box.Visible = false
d.name = Drawing.new("Text")
d.name.Size = 15
d.name.Center = true
d.name.Outline = true
d.name.OutlineColor = Color3.new(0, 0, 0)
d.name.Font = 2
d.name.Visible = false
d.dist = Drawing.new("Text")
d.dist.Size = 13
d.dist.Center = true
d.dist.Outline = true
d.dist.OutlineColor = Color3.new(0, 0, 0)
d.dist.Font = 2
d.dist.Visible = false
d.tracer = Drawing.new("Line")
d.tracer.Thickness = 1
d.tracer.Color = Color3.new(1, 1, 1)
d.tracer.Visible = false
espDrawings[plr] = d
return d
end
local function hideAll(d)
for _, v in pairs(d) do v.Visible = false end
end
-- ============================================================
-- ESP RENDER LOOP
-- ============================================================
track(RunService.RenderStepped:Connect(function()
if Killed then return end
if not hasDrawing then return end
if not Config.ESP.Enabled then
for _, d in pairs(espDrawings) do hideAll(d) end
return
end
local seen = {}
local camPos = Camera.CFrame.Position
for _, t in ipairs(scanTargets()) do
seen[t.Player] = true
local d = espDrawings[t.Player] or createESP(t.Player)
if d then
local distance = (camPos - t.Root.Position).Magnitude
if distance > Config.ESP.MaxDistance then
hideAll(d)
else
local topWorld = t.Head.Position + Vector3.new(0, 0.6, 0)
local bottomWorld = t.Root.Position - Vector3.new(0, 3.0, 0)
local topScreen, topOn = worldToScreen(topWorld)
local botScreen, botOn = worldToScreen(bottomWorld)
local centerScreen, centerOn = worldToScreen(t.Root.Position)
if not (topOn and botOn and centerOn) then
hideAll(d)
else
local height = math.abs(botScreen.Y - topScreen.Y)
local width = height * 0.55
local x = centerScreen.X - width * 0.5
local y = topScreen.Y
local col = t.IsEnemy and Config.ESP.EnemyColor or Config.ESP.TeamColor
d.box.Visible = Config.ESP.Box
if Config.ESP.Box then
d.box.Size = Vector2.new(width, height)
d.box.Position = Vector2.new(x, y)
d.box.Color = col
end
d.name.Visible = Config.ESP.Name
if Config.ESP.Name then
d.name.Text = t.Player.Name
d.name.Position = Vector2.new(centerScreen.X, y - 18)
d.name.Color = col
end
d.dist.Visible = Config.ESP.Distance
if Config.ESP.Distance then
d.dist.Text = string.format("[%d]", math.floor(distance))
d.dist.Position = Vector2.new(centerScreen.X, y + height + 3)
d.dist.Color = col
end
d.tracer.Visible = Config.ESP.Tracer
if Config.ESP.Tracer then
local vp = Camera.ViewportSize
d.tracer.From = Vector2.new(vp.X * 0.5, vp.Y)
d.tracer.To = Vector2.new(centerScreen.X, y + height)
d.tracer.Color = col
end
end
end
end
end
for plr, d in pairs(espDrawings) do
if not seen[plr] then hideAll(d) end
end
end))
-- ============================================================
-- FOV CIRCLE
-- ============================================================
local fovCircle
if hasDrawing then
fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 1.5
fovCircle.NumSides = 64
fovCircle.Color = Theme.Accent
fovCircle.Filled = false
fovCircle.Transparency = 0.6
fovCircle.Visible = false
_G.__RivalsFovCircle = fovCircle
end
track(RunService.RenderStepped:Connect(function()
if Killed then return end
if not hasDrawing or not fovCircle then return end
fovCircle.Visible = Config.Aimbot.Enabled and Config.Aimbot.DrawFOV
if fovCircle.Visible then
fovCircle.Position = viewportCenter()
fovCircle.Radius = Config.Aimbot.FOV
end
end))
-- ============================================================
-- AIMBOT
-- ============================================================
local function findBestTarget()
local targets = scanTargets()
local center = viewportCenter()
local best, bestDist = nil, math.huge
for _, t in ipairs(targets) do
if t.AimPosition and t.IsEnemy then
local sp, onScreen = worldToScreen(t.AimPosition)
if onScreen then
local d = (sp - center).Magnitude
if d <= Config.Aimbot.FOV and d < bestDist then
bestDist = d
best = t
end
end
end
end
return best
end
local guiBlocking = false
track(RunService.RenderStepped:Connect(function()
if Killed then return end
if not Config.Aimbot.Enabled then return end
if guiBlocking then return end
if not UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return end
local target = findBestTarget()
if not target then return end
local camPos = Camera.CFrame.Position
local targetPos = target.AimPosition
local goalCF = CFrame.new(camPos, targetPos)
Camera.CFrame = Camera.CFrame:Lerp(goalCF, Config.Aimbot.Smoothness)
end))
-- ============================================================
-- MISC — FLIGHT
-- ============================================================
local FlightState = { BV = nil }
local function ensureFlightInstances()
local char = LocalPlayer.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not hrp or not hum then return end
hum.PlatformStand = true
if not FlightState.BV or FlightState.BV.Parent ~= hrp then
if FlightState.BV then FlightState.BV:Destroy() end
FlightState.BV = Instance.new("BodyVelocity")
FlightState.BV.MaxForce = Vector3.new(1e5, 1e5, 1e5)
FlightState.BV.Velocity = Vector3.zero
FlightState.BV.Parent = hrp
end
end
local function releaseFlightInstances()
if FlightState.BV then
FlightState.BV:Destroy()
FlightState.BV = nil
end
local char = LocalPlayer.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then hum.PlatformStand = false end
end
end
table.insert(KillHooks, releaseFlightInstances)
track(RunService.RenderStepped:Connect(function()
if Killed then return end
if not Config.Misc.Flight.Enabled then return end
ensureFlightInstances()
if not FlightState.BV then return end
local cam = workspace.CurrentCamera
local move = Vector3.zero
local speed = Config.Misc.Flight.Speed
if UserInputService:IsKeyDown(Enum.KeyCode.W) then move = move + cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then move = move - cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then move = move - cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then move = move + cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then move = move - Vector3.new(0, 1, 0) end
if move.Magnitude > 0 then
move = move.Unit * speed
end
FlightState.BV.Velocity = move
end))
-- ============================================================
-- MISC — WALKSPEED / JUMPPOWER / NOCLIP
-- ============================================================
track(RunService.Stepped:Connect(function()
if Killed then return end
local char = LocalPlayer.Character
if not char then return end
local hum = char:FindFirstChildOfClass("Humanoid")
if not hum then return end
if Config.Misc.WalkSpeed.Enabled then
hum.WalkSpeed = Config.Misc.WalkSpeed.Value
end
if Config.Misc.JumpPower.Enabled then
hum.UseJumpPower = true
hum.JumpPower = Config.Misc.JumpPower.Value
end
if Config.Misc.NoClip then
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end
end))
-- ============================================================
-- MISC — INFINITE JUMP
-- ============================================================
track(UserInputService.JumpRequest:Connect(function()
if Killed then return end
if not Config.Misc.InfiniteJump then return end
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
end))
-- ============================================================
-- GUI
-- ============================================================
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "RivalsMenu"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.DisplayOrder = 999
ScreenGui.IgnoreGuiInset = true
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local function createFrame(parent, props, className)
local inst = Instance.new(className or "Frame")
for k, v in pairs(props) do inst[k] = v end
inst.Parent = parent
return inst
end
local Window = createFrame(ScreenGui, {
Name = "Window",
Size = UDim2.new(0, 380, 0, 520),
Position = UDim2.new(0, 40, 0.5, -260),
BackgroundColor3 = Theme.WindowBg,
BorderSizePixel = 0,
Active = true,
Draggable = true,
ZIndex = 1
})
createFrame(Window, { CornerRadius = UDim.new(0, 12) }, "UICorner")
createFrame(Window, { Color = Theme.Accent, Thickness = 2 }, "UIStroke")
createFrame(Window, {
Size = UDim2.new(1, -50, 0, 30),
Position = UDim2.new(0, 14, 0, 6),
BackgroundTransparency = 1,
Text = "Rivals",
TextColor3 = Theme.Accent,
Font = Enum.Font.GothamBold,
TextSize = 16,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 5
}, "TextLabel")
local CloseBtn = createFrame(Window, {
Size = UDim2.new(0, 26, 0, 26),
Position = UDim2.new(1, -34, 0, 8),
BackgroundColor3 = Theme.CloseBtn,
BorderSizePixel = 0,
Text = "X",
TextColor3 = Color3.fromRGB(255, 255, 255),
Font = Enum.Font.GothamBold,
TextSize = 14,
AutoButtonColor = true,
ZIndex = 50
}, "TextButton")
createFrame(CloseBtn, { CornerRadius = UDim.new(0, 6) }, "UICorner")
CloseBtn.MouseButton1Down:Connect(function() kill() end)
CloseBtn.MouseButton1Click:Connect(function() if not Killed then kill() end end)
local TabBar = createFrame(Window, {
Size = UDim2.new(1, -20, 0, 30),
Position = UDim2.new(0, 10, 0, 40),
BackgroundColor3 = Theme.SectionBg,
BorderSizePixel = 0,
ZIndex = 2
})
createFrame(TabBar, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(TabBar, {
Padding = UDim.new(0, 2),
SortOrder = Enum.SortOrder.LayoutOrder,
FillDirection = Enum.FillDirection.Horizontal,
HorizontalAlignment = Enum.HorizontalAlignment.Center,
VerticalAlignment = Enum.VerticalAlignment.Center
}, "UIListLayout")
local Content = createFrame(Window, {
Size = UDim2.new(1, -20, 1, -130),
Position = UDim2.new(0, 10, 0, 76),
BackgroundTransparency = 1,
ZIndex = 2
})
local tabs = {}
local function createTab(name)
local btn = createFrame(TabBar, {
Size = UDim2.new(1/3, -4, 1, -6),
BackgroundColor3 = Theme.TabInactive,
BorderSizePixel = 0,
Text = name,
TextColor3 = Theme.TabInactiveTxt,
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = false
}, "TextButton")
createFrame(btn, { CornerRadius = UDim.new(0, 5) }, "UICorner")
local scroll = createFrame(Content, {
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
ScrollBarThickness = 4,
Visible = false
}, "ScrollingFrame")
createFrame(scroll, {
Padding = UDim.new(0, 8),
SortOrder = Enum.SortOrder.LayoutOrder
}, "UIListLayout")
local function activate()
for _, t in pairs(tabs) do
t.Scroll.Visible = false
t.Button.BackgroundColor3 = Theme.TabInactive
t.Button.TextColor3 = Theme.TabInactiveTxt
end
scroll.Visible = true
btn.BackgroundColor3 = Theme.Accent
btn.TextColor3 = Theme.TabActiveTxt
end
btn.MouseButton1Click:Connect(activate)
local tab = { Button = btn, Scroll = scroll, Activate = activate }
tabs[name] = tab
return tab
end
-- ============================================================
-- COMPONENTS
-- ============================================================
local function createSection(parent, title)
local frame = createFrame(parent, {
Size = UDim2.new(1, 0, 0, 0),
AutomaticSize = Enum.AutomaticSize.Y,
BackgroundColor3 = Theme.SectionBg,
BorderSizePixel = 0
})
createFrame(frame, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(frame, {
PaddingTop = UDim.new(0, 6), PaddingBottom = UDim.new(0, 6),
PaddingLeft = UDim.new(0, 6), PaddingRight = UDim.new(0, 6)
}, "UIPadding")
createFrame(frame, {
Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder
}, "UIListLayout")
createFrame(frame, {
Size = UDim2.new(1, 0, 0, 22),
BackgroundTransparency = 1,
Text = title,
TextColor3 = Theme.Accent,
Font = Enum.Font.GothamBold,
TextSize = 13,
TextXAlignment = Enum.TextXAlignment.Left,
LayoutOrder = 0
}, "TextLabel")
return frame
end
local function createToggle(parent, props)
local frame = createFrame(parent, {
Size = UDim2.new(1, 0, 0, 32),
BackgroundColor3 = Theme.RowBg,
BorderSizePixel = 0
})
createFrame(frame, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(frame, {
Size = UDim2.new(0.6, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Text = props.Name,
TextColor3 = Theme.LabelTxt,
Font = Enum.Font.Gotham,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
}, "TextLabel")
local bg = createFrame(frame, {
Size = UDim2.new(0, 40, 0, 20),
Position = UDim2.new(1, -50, 0.5, -10),
BackgroundColor3 = Theme.ToggleOff,
BorderSizePixel = 0
})
createFrame(bg, { CornerRadius = UDim.new(0, 10) }, "UICorner")
local handle = createFrame(bg, {
Size = UDim2.new(0, 16, 0, 16),
Position = UDim2.new(0, 2, 0.5, -8),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
BorderSizePixel = 0
})
createFrame(handle, { CornerRadius = UDim.new(1, 0) }, "UICorner")
local enabled = props.Default or false
local function update(state)
enabled = state
handle.Position = UDim2.new(0, state and 22 or 2, 0.5, -8)
bg.BackgroundColor3 = state and Theme.Accent or Theme.ToggleOff
if props.OnChange then props.OnChange(state) end
end
bg.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
update(not enabled)
end
end)
update(enabled)
return frame
end
local function createSlider(parent, props)
local frame = createFrame(parent, {
Size = UDim2.new(1, 0, 0, 38),
BackgroundColor3 = Theme.RowBg,
BorderSizePixel = 0
})
createFrame(frame, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(frame, {
Size = UDim2.new(0.4, -10, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Text = props.Name,
TextColor3 = Theme.LabelTxt,
Font = Enum.Font.Gotham,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
}, "TextLabel")
local valueLabel = createFrame(frame, {
Size = UDim2.new(0.18, -10, 1, 0),
Position = UDim2.new(0.82, 0, 0, 0),
BackgroundTransparency = 1,
Text = string.format("%.2f", props.Default),
TextColor3 = Theme.ValueTxt,
Font = Enum.Font.GothamBold,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Right
}, "TextLabel")
local bg = createFrame(frame, {
Size = UDim2.new(0.35, -10, 0, 6),
Position = UDim2.new(0.45, 0, 0.5, -3),
BackgroundColor3 = Theme.SliderTrack,
BorderSizePixel = 0
})
createFrame(bg, { CornerRadius = UDim.new(0, 3) }, "UICorner")
local ratio0 = (props.Default - props.Min) / (props.Max - props.Min)
local fill = createFrame(bg, {
Size = UDim2.new(ratio0, 0, 1, 0),
BackgroundColor3 = Theme.Accent,
BorderSizePixel = 0
})
createFrame(fill, { CornerRadius = UDim.new(0, 3) }, "UICorner")
local handle = createFrame(bg, {
Size = UDim2.new(0, 12, 0, 12),
Position = UDim2.new(ratio0, -6, 0.5, -6),
BackgroundColor3 = Color3.fromRGB(255, 255, 255),
BorderSizePixel = 0
})
createFrame(handle, { CornerRadius = UDim.new(1, 0) }, "UICorner")
local dragging, dragStartX, dragStartValue = false, 0, props.Default
local currentValue = props.Default
handle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStartX = input.Position.X
dragStartValue = currentValue
end
end)
handle.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
track(UserInputService.InputChanged:Connect(function(input)
if not dragging then return end
if input.UserInputType ~= Enum.UserInputType.MouseMovement
and input.UserInputType ~= Enum.UserInputType.Touch then return end
local range = bg.AbsoluteSize.X
if range <= 0 then return end
local delta = input.Position.X - dragStartX
local newValue = dragStartValue + (delta / range) * (props.Max - props.Min)
newValue = math.clamp(newValue, props.Min, props.Max)
currentValue = newValue
local ratio = (newValue - props.Min) / (props.Max - props.Min)
fill.Size = UDim2.new(ratio, 0, 1, 0)
handle.Position = UDim2.new(ratio, -6, 0.5, -6)
valueLabel.Text = string.format("%.2f", newValue)
if props.OnChange then props.OnChange(newValue) end
end))
return frame
end
local openDropdown = nil
local function createDropdown(parent, props)
local frame = createFrame(parent, {
Size = UDim2.new(1, 0, 0, 32),
BackgroundColor3 = Theme.RowBg,
BorderSizePixel = 0,
ClipsDescendants = false,
ZIndex = 2
})
createFrame(frame, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(frame, {
Size = UDim2.new(0.5, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Text = props.Name,
TextColor3 = Theme.LabelTxt,
Font = Enum.Font.Gotham,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 3
}, "TextLabel")
local valueBtn = createFrame(frame, {
Size = UDim2.new(0.4, -10, 0, 22),
Position = UDim2.new(0.6, 0, 0.5, -11),
BackgroundColor3 = Theme.AccentDim,
BorderSizePixel = 0,
Text = props.Default .. " ▼",
TextColor3 = Theme.ValueTxt,
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = true,
ZIndex = 4
}, "TextButton")
createFrame(valueBtn, { CornerRadius = UDim.new(0, 5) }, "UICorner")
local listHolder = createFrame(frame, {
Size = UDim2.new(0.4, -10, 0, #props.Options * 24),
Position = UDim2.new(0.6, 0, 1, 4),
BackgroundColor3 = Theme.RowBgAlt,
BorderSizePixel = 0,
Visible = false,
ZIndex = 20
})
createFrame(listHolder, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(listHolder, {
Padding = UDim.new(0, 2),
SortOrder = Enum.SortOrder.LayoutOrder
}, "UIListLayout")
for i, opt in ipairs(props.Options) do
local optBtn = createFrame(listHolder, {
Size = UDim2.new(1, -4, 0, 22),
BackgroundColor3 = Theme.RowBgHover,
BorderSizePixel = 0,
Text = opt,
TextColor3 = Theme.LabelTxt,
Font = Enum.Font.Gotham,
TextSize = 12,
AutoButtonColor = true,
LayoutOrder = i,
ZIndex = 21
}, "TextButton")
createFrame(optBtn, { CornerRadius = UDim.new(0, 4) }, "UICorner")
optBtn.MouseButton1Click:Connect(function()
valueBtn.Text = opt .. " ▼"
listHolder.Visible = false
openDropdown = nil
if props.OnChange then props.OnChange(opt) end
end)
end
valueBtn.MouseButton1Click:Connect(function()
if openDropdown and openDropdown ~= listHolder then
openDropdown.Visible = false
end
listHolder.Visible = not listHolder.Visible
openDropdown = listHolder.Visible and listHolder or nil
end)
return frame
end
-- Keybind component — click, then press any key to rebind
local function createKeybind(parent, props)
local frame = createFrame(parent, {
Size = UDim2.new(1, 0, 0, 32),
BackgroundColor3 = Theme.RowBg,
BorderSizePixel = 0
})
createFrame(frame, { CornerRadius = UDim.new(0, 6) }, "UICorner")
createFrame(frame, {
Size = UDim2.new(0.5, 0, 1, 0),
Position = UDim2.new(0, 10, 0, 0),
BackgroundTransparency = 1,
Text = props.Name,
TextColor3 = Theme.LabelTxt,
Font = Enum.Font.Gotham,
TextSize = 12,
TextXAlignment = Enum.TextXAlignment.Left
}, "TextLabel")
local bindBtn = createFrame(frame, {
Size = UDim2.new(0.4, -10, 0, 22),
Position = UDim2.new(0.6, 0, 0.5, -11),
BackgroundColor3 = Theme.AccentDim,
BorderSizePixel = 0,
Text = props.Default.Name,
TextColor3 = Theme.ValueTxt,
Font = Enum.Font.GothamBold,
TextSize = 12,
AutoButtonColor = true
}, "TextButton")
createFrame(bindBtn, { CornerRadius = UDim.new(0, 5) }, "UICorner")
local listening = false
bindBtn.MouseButton1Click:Connect(function()
listening = true
bindBtn.Text = "press a key..."
bindBtn.BackgroundColor3 = Theme.Accent
end)
track(UserInputService.InputBegan:Connect(function(input, gp)
if not listening then return end
if input.UserInputType ~= Enum.UserInputType.Keyboard then return end
local key = input.KeyCode
listening = false
bindBtn.BackgroundColor3 = Theme.AccentDim
if key == Enum.KeyCode.Escape then
bindBtn.Text = props.Default.Name
return
end
props.Default = key
bindBtn.Text = key.Name
if props.OnChange then props.OnChange(key) end
end))
return frame
end
-- ============================================================
-- BUILD TABS
-- ============================================================
local VisualTab = createTab("Visual")
local CombatTab = createTab("Combat")
local MiscTab = createTab("Misc")
-- Visual
local espSec = createSection(VisualTab.Scroll, "ESP")
createToggle(espSec, { Name = "Enable ESP", Default = true, OnChange = function(v) Config.ESP.Enabled = v end })
createToggle(espSec, { Name = "Box", Default = true, OnChange = function(v) Config.ESP.Box = v end })
createToggle(espSec, { Name = "Name", Default = true, OnChange = function(v) Config.ESP.Name = v end })
createToggle(espSec, { Name = "Distance", Default = true, OnChange = function(v) Config.ESP.Distance = v end })
createToggle(espSec, { Name = "Tracer", Default = false, OnChange = function(v) Config.ESP.Tracer = v end })
createSlider(espSec, { Name = "Max Dist", Min = 100, Max = 3000, Default = 1000, OnChange = function(v) Config.ESP.MaxDistance = v end })
-- Combat
local aimSec = createSection(CombatTab.Scroll, "Aimbot")
createToggle(aimSec, { Name = "Enable Aimbot", Default = false, OnChange = function(v) Config.Aimbot.Enabled = v end })
createSlider(aimSec, { Name = "FOV", Min = 10, Max = 500, Default = 150, OnChange = function(v) Config.Aimbot.FOV = v end })
createSlider(aimSec, { Name = "Smoothness", Min = 0.01, Max = 1, Default = 0.20, OnChange = function(v) Config.Aimbot.Smoothness = v end })
createDropdown(aimSec, {
Name = "Target Part",
Options = { "Head", "Torso", "Left Leg", "Right Leg" },
Default = "Head",
OnChange = function(v) Config.Aimbot.TargetPart = v end
})
createToggle(aimSec, { Name = "Team Check", Default = true, OnChange = function(v) Config.Aimbot.TeamCheck = v end })
createToggle(aimSec, { Name = "Show FOV Circle", Default = true, OnChange = function(v) Config.Aimbot.DrawFOV = v end })
local infoSec = createSection(CombatTab.Scroll, "Info")
createFrame(infoSec, {
Size = UDim2.new(1, 0, 0, 34),
BackgroundTransparency = 1,
Text = "Aimbot: hold RIGHT-CLICK.\nX closes script.",
TextColor3 = Theme.InfoTxt,
Font = Enum.Font.Gotham,
TextSize = 12,
TextWrapped = true,
TextXAlignment = Enum.TextXAlignment.Left
}, "TextLabel")
-- Misc — Keybind section at the TOP
local kbSec = createSection(MiscTab.Scroll, "Keybinds")
createKeybind(kbSec, {
Name = "Menu Toggle",
Default = Config.UI.ToggleKey,
OnChange = function(key) Config.UI.ToggleKey = key end,
})
-- Misc — Movement
local moveSec = createSection(MiscTab.Scroll, "Movement")
createToggle(moveSec, {
Name = "Enable Flight", Default = false,
OnChange = function(v)
Config.Misc.Flight.Enabled = v
if not v then releaseFlightInstances() end
end
})
createSlider(moveSec, { Name = "Flight Speed", Min = 10, Max = 500, Default = 50, OnChange = function(v) Config.Misc.Flight.Speed = v end })
createToggle(moveSec, { Name = "Custom WalkSpeed", Default = false, OnChange = function(v) Config.Misc.WalkSpeed.Enabled = v end })
createSlider(moveSec, { Name = "WalkSpeed", Min = 16, Max = 500, Default = 100, OnChange = function(v) Config.Misc.WalkSpeed.Value = v end })
createToggle(moveSec, { Name = "Custom JumpPower", Default = false, OnChange = function(v) Config.Misc.JumpPower.Enabled = v end })
createSlider(moveSec, { Name = "JumpPower", Min = 50, Max = 500, Default = 100, OnChange = function(v) Config.Misc.JumpPower.Value = v end })
createToggle(moveSec, { Name = "Infinite Jump", Default = false, OnChange = function(v) Config.Misc.InfiniteJump = v end })
createToggle(moveSec, { Name = "NoClip", Default = false, OnChange = function(v) Config.Misc.NoClip = v end })
tabs.Visual.Activate()
-- ============================================================
-- OPEN / CLOSE + MOUSE FREE
-- ============================================================
local menuOpen = true
track(RunService:BindToRenderStep("RivalsMenuMouseGuard", Enum.RenderPriority.Camera.Value + 1, function()
if Killed or not menuOpen then return end
UserInputService.ModalEnabled = true
UserInputService.MouseIconEnabled = true
if UserInputService.MouseBehavior ~= Enum.MouseBehavior.Default then
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
end
if GuiService.SelectedObject ~= nil then
GuiService.SelectedObject = nil
end
end))
track(UserInputService:GetPropertyChangedSignal("MouseBehavior"):Connect(function()
if Killed or not menuOpen then return end
if UserInputService.MouseBehavior ~= Enum.MouseBehavior.Default then
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
end
end))
local function setMenuOpen(open)
if Killed then return end
menuOpen = open
guiBlocking = open
ScreenGui.Enabled = open
if open then
task.spawn(function()
for _ = 1, 15 do
if Killed then return end
UserInputService.ModalEnabled = true
UserInputService.MouseIconEnabled = true
UserInputService.MouseBehavior = Enum.MouseBehavior.Default
GuiService.SelectedObject = nil
RunService.RenderStepped:Wait()
end
end)
else
UserInputService.ModalEnabled = false
UserInputService.MouseIconEnabled = false
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
GuiService.SelectedObject = nil
end
end
-- Home key handler — reads Config.UI.ToggleKey each press, so
-- rebinding the keybind updates this immediately with no re-hook.
track(UserInputService.InputBegan:Connect(function(input)
if Killed then return end
if input.KeyCode ~= Config.UI.ToggleKey then return end
if UserInputService:GetFocusedTextBox() then return end
setMenuOpen(not menuOpen)
end))
setMenuOpen(true)Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place