[Working] Roblox Rivals Script in 2026 – Unlock Skins, Aimbot, ESP

Roblox Rivals is a popular shooting game. Challenging duels are hard, and that’s why many players are looking for a working Rivals script. If you are also looking for it, then you have come to the right place.

Here we have listed down all Rivals scripts that we have manually tested using Xeno and other executors. So most scripts support Xeno PC, and you don’t even require a key to get access to its features.

The Rivals script gives you abilities to Silent Aim, Aimbot, TriggerBot, Ragebot, Visual ESP, Auto Shoot, Sensitivity, and more. You can also unlock Rivals’ Skins to make your avatar more stunning.

These are scripts that support mobile executors as well.

All Roblox Rivals Script

Rivals Classic Script

loadstring(game:HttpGet("https://raw.githubusercontent.com/endoverdosing/Soluna-API/refs/heads/main/rivals-classic.lua",true))()

Rivals Skin changer script by Soluna

Rivals Skin changer script by Soluna
loadstring(game:HttpGet("https://soluna-script.vercel.app/main.lua",true))()

Universal Script For Rivals By Nexocen

loadstring(game:HttpGet("https://raw.githubusercontent.com/Nexoo2/Rivals/refs/heads/main/NexoOfficialRivals"))()

Rivals Z3US Script

RIVALS Z3US Script | Silent Aim, Ragebot, Skin Changer, Device Spoofer
loadstring(game:HttpGet("https://raw.githubusercontent.com/blackowl1231/Z3US/refs/heads/main/main.lua"))()

Rivals Skin Changer Script

loadstring(game:HttpGet("https://raw.githubusercontent.com/endoverdosing/Soluna-API/refs/heads/main/skin-changer.lua",true))()

Rivals Script – Unlock skins

loadstring(game:HttpGet("https://raw.githubusercontent.com/blackowl1231/Z3US/refs/heads/main/main.lua"))()

Aimbot Rivals Script (Xeno Supported)

Aimbot Rivals Script (Xeno Supported)
loadstring(game:HttpGet("https://raw.githubusercontent.com/W1lteGameYT/W1lteGame-Hub-Best-Rivals-Aimbot-Script-NO-KEY-/refs/heads/main/script"))()

Rivals script Noket Free keyless – Silent aim, ESP

Copy the script below

— Taka1337 Free Cheat Menu for RIVALS (Draggable GUI + Basic ESP + Aimbot + Discord)
— RightShift toggle GUI | B toggle ESP | Q toggle Aimbot

local UserInputService = game:GetService(“UserInputService”)
local RunService = game:GetService(“RunService”)
local Players = game:GetService(“Players”)
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Camera = workspace.CurrentCamera

local guiEnabled = true
local espEnabled = false
local aimbotEnabled = false

— Темы (только 3 базовые)
local themes = {
Purple = {bg = Color3.fromRGB(30,20,50), stroke = Color3.fromRGB(180,100,255), title = Color3.fromRGB(200,120,255), text = Color3.fromRGB(220,220,255), btnIdle = Color3.fromRGB(50,40,70), btnActive = Color3.fromRGB(90,50,120), btnText = Color3.fromRGB(220,180,255), fovColor = Color3.fromRGB(180,100,255)},
Orange = {bg = Color3.fromRGB(50,30,20), stroke = Color3.fromRGB(255,160,60), title = Color3.fromRGB(255,180,80), text = Color3.fromRGB(255,220,180), btnIdle = Color3.fromRGB(70,45,30), btnActive = Color3.fromRGB(120,70,40), btnText = Color3.fromRGB(255,200,140), fovColor = Color3.fromRGB(255,160,60)},
Blue = {bg = Color3.fromRGB(15,20,40), stroke = Color3.fromRGB(80,150,255), title = Color3.fromRGB(120,180,255), text = Color3.fromRGB(200,220,255), btnIdle = Color3.fromRGB(25,35,70), btnActive = Color3.fromRGB(40,70,120), btnText = Color3.fromRGB(180,200,255), fovColor = Color3.fromRGB(100,160,255)}
}

local currentThemeName = “Purple”
local currentTheme = themes[currentThemeName]

— Настройки аимбота
local AimbotSettings = {
TeamCheck = true,
WallCheck = true, — В бесплатной версии отключена проверка через стены
FOV = 120,
Smoothness = 0.2, — Немного менее плавный в бесплатной версии
Part = “Head”,
Prediction = 0.01, — Базовое предсказание
UseMouse = true
}

— Применение темы
local function applyTheme(theme)
currentTheme = theme
MainFrame.BackgroundColor3 = theme.bg
UIStroke.Color = theme.stroke
Title.TextColor3 = theme.title
Stats.TextColor3 = theme.text
HintLabel.TextColor3 = theme.text
WatermarkLabel.TextColor3 = theme.text
ESPBtn.BackgroundColor3 = espEnabled and theme.btnActive or theme.btnIdle
ESPBtn.TextColor3 = theme.btnText
AimbotBtn.BackgroundColor3 = aimbotEnabled and theme.btnActive or theme.btnIdle
AimbotBtn.TextColor3 = theme.btnText
DiscordBtn.BackgroundColor3 = theme.btnIdle
DiscordBtn.TextColor3 = theme.btnText
ThemeBtn.BackgroundColor3 = theme.btnIdle
ThemeBtn.TextColor3 = theme.btnText
HideBtn.BackgroundColor3 = theme.btnIdle
HideBtn.TextColor3 = theme.btnText
if fovCircle then
fovCircle.Color = theme.fovColor
end
end

— ScreenGui
local ScreenGui = Instance.new(“ScreenGui”)
ScreenGui.Name = “Taka1337FreeCheat”
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = LocalPlayer:WaitForChild(“PlayerGui”)

— Главное окно
local MainFrame = Instance.new(“Frame”)
MainFrame.Size = UDim2.new(0, 250, 0, 290)
MainFrame.Position = UDim2.new(0.5, -125, 0.5, -145)
MainFrame.BackgroundColor3 = currentTheme.bg
MainFrame.BorderSizePixel = 0
MainFrame.Visible = true
MainFrame.Parent = ScreenGui

local UICorner = Instance.new(“UICorner”)
UICorner.CornerRadius = UDim.new(0, 12)
UICorner.Parent = MainFrame

local UIStroke = Instance.new(“UIStroke”)
UIStroke.Color = currentTheme.stroke
UIStroke.Thickness = 3
UIStroke.Transparency = 0.3
UIStroke.Parent = MainFrame

— Делаем окно перетаскиваемым
local dragging = false
local dragInput = nil
local dragStart = nil
local startPos = nil

local function updateInput(input)
local delta = input.Position – dragStart
local newPositionX = startPos.X.Offset + delta.X
local newPositionY = startPos.Y.Offset + delta.Y

MainFrame.Position = UDim2.new( startPos.X.Scale, newPositionX, startPos.Y.Scale, newPositionY )

end

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

input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end

end)

MainFrame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)

UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
updateInput(input)
end
end)

— Заголовок
local Title = Instance.new(“TextLabel”)
Title.Size = UDim2.new(1, 0, 0, 25)
Title.Position = UDim2.new(0, 0, 0, 5)
Title.BackgroundTransparency = 1
Title.Text = “Taka1337 FREE version”
Title.TextColor3 = currentTheme.title
Title.TextSize = 18
Title.Font = Enum.Font.GothamBlack
Title.TextStrokeTransparency = 0.7
Title.TextStrokeColor3 = Color3.new(0,0,0)
Title.TextWrapped = true
Title.TextXAlignment = Enum.TextXAlignment.Center
Title.Parent = MainFrame

— Watermark (надпись о бесплатной версии)
local WatermarkLabel = Instance.new(“TextLabel”)
WatermarkLabel.Size = UDim2.new(1, -20, 0, 45)
WatermarkLabel.Position = UDim2.new(0, 10, 0, 30)
WatermarkLabel.BackgroundTransparency = 1
WatermarkLabel.Text = “You’re using the free version.\nYou can buy the premium version\nfor $1 here | t.me/Taka1337”
WatermarkLabel.TextColor3 = currentTheme.text
WatermarkLabel.TextSize = 10
WatermarkLabel.Font = Enum.Font.Gotham
WatermarkLabel.TextXAlignment = Enum.TextXAlignment.Center
WatermarkLabel.TextYAlignment = Enum.TextYAlignment.Top
WatermarkLabel.TextWrapped = true
WatermarkLabel.Parent = MainFrame

— Stats
local Stats = Instance.new(“TextLabel”)
Stats.Size = UDim2.new(1, -20, 0, 40)
Stats.Position = UDim2.new(0, 10, 0, 80)
Stats.BackgroundTransparency = 1
Stats.Text = “FPS: …\nPing: … ms”
Stats.TextColor3 = currentTheme.text
Stats.TextSize = 14
Stats.Font = Enum.Font.Gotham
Stats.TextXAlignment = Enum.TextXAlignment.Left
Stats.TextYAlignment = Enum.TextYAlignment.Top
Stats.Parent = MainFrame

— Кнопка ESP
local ESPBtn = Instance.new(“TextButton”)
ESPBtn.Size = UDim2.new(0.9, 0, 0, 32)
ESPBtn.Position = UDim2.new(0.05, 0, 0, 125)
ESPBtn.BackgroundColor3 = currentTheme.btnIdle
ESPBtn.Text = “B – ESP / Ники”
ESPBtn.TextColor3 = currentTheme.btnText
ESPBtn.Font = Enum.Font.GothamBold
ESPBtn.TextSize = 13
ESPBtn.TextWrapped = true
ESPBtn.Parent = MainFrame

local BtnCornerESP = Instance.new(“UICorner”)
BtnCornerESP.CornerRadius = UDim.new(0, 8)
BtnCornerESP.Parent = ESPBtn

— Кнопка Aimbot
local AimbotBtn = Instance.new(“TextButton”)
AimbotBtn.Size = UDim2.new(0.9, 0, 0, 32)
AimbotBtn.Position = UDim2.new(0.05, 0, 0, 162)
AimbotBtn.BackgroundColor3 = currentTheme.btnIdle
AimbotBtn.Text = “Q – Aimbot (FREE)”
AimbotBtn.TextColor3 = currentTheme.btnText
AimbotBtn.Font = Enum.Font.GothamBold
AimbotBtn.TextSize = 13
AimbotBtn.TextWrapped = true
AimbotBtn.Parent = MainFrame

local BtnCornerAim = Instance.new(“UICorner”)
BtnCornerAim.CornerRadius = UDim.new(0, 8)
BtnCornerAim.Parent = AimbotBtn

— Кнопка Discord
local DiscordBtn = Instance.new(“TextButton”)
DiscordBtn.Size = UDim2.new(0.9, 0, 0, 32)
DiscordBtn.Position = UDim2.new(0.05, 0, 0, 199)
DiscordBtn.BackgroundColor3 = currentTheme.btnIdle
DiscordBtn.Text = “Discord Server”
DiscordBtn.TextColor3 = currentTheme.btnText
DiscordBtn.Font = Enum.Font.GothamBold
DiscordBtn.TextSize = 13
DiscordBtn.TextWrapped = true
DiscordBtn.Parent = MainFrame

local BtnCornerDiscord = Instance.new(“UICorner”)
BtnCornerDiscord.CornerRadius = UDim.new(0, 8)
BtnCornerDiscord.Parent = DiscordBtn

— Кнопка смены темы
local ThemeBtn = Instance.new(“TextButton”)
ThemeBtn.Size = UDim2.new(0.9, 0, 0, 32)
ThemeBtn.Position = UDim2.new(0.05, 0, 0, 236)
ThemeBtn.BackgroundColor3 = currentTheme.btnIdle
ThemeBtn.Text = “Theme: Purple”
ThemeBtn.TextColor3 = currentTheme.btnText
ThemeBtn.Font = Enum.Font.GothamBold
ThemeBtn.TextSize = 13
ThemeBtn.TextWrapped = true
ThemeBtn.Parent = MainFrame

local BtnCornerTheme = Instance.new(“UICorner”)
BtnCornerTheme.CornerRadius = UDim.new(0, 8)
BtnCornerTheme.Parent = ThemeBtn

— Подсказка
local HintLabel = Instance.new(“TextLabel”)
HintLabel.Size = UDim2.new(1, -20, 0, 25)
HintLabel.Position = UDim2.new(0, 10, 1, -30)
HintLabel.BackgroundTransparency = 1
HintLabel.Text = “RightShift — открыть/закрыть меню”
HintLabel.TextColor3 = currentTheme.text
HintLabel.TextSize = 11
HintLabel.Font = Enum.Font.Gotham
HintLabel.TextWrapped = true
HintLabel.TextXAlignment = Enum.TextXAlignment.Center
HintLabel.Parent = MainFrame

— Hide/Show кнопка
local HideBtn = Instance.new(“TextButton”)
HideBtn.Size = UDim2.new(0, 140, 0, 36)
HideBtn.Position = UDim2.new(1, -150, 0, 10)
HideBtn.AnchorPoint = Vector2.new(1, 0)
HideBtn.BackgroundColor3 = currentTheme.btnIdle
HideBtn.Text = “Hide / Show GUI”
HideBtn.TextColor3 = currentTheme.btnText
HideBtn.Font = Enum.Font.GothamBold
HideBtn.TextSize = 14
HideBtn.Parent = ScreenGui

local HideCorner = Instance.new(“UICorner”)
HideCorner.CornerRadius = UDim.new(0, 10)
HideCorner.Parent = HideBtn

— FOV Circle для аимбота (только визуальный)
local fovCircle = Drawing.new(“Circle”)
fovCircle.Thickness = 2
fovCircle.NumSides = 100
fovCircle.Radius = AimbotSettings.FOV
fovCircle.Filled = false
fovCircle.Transparency = 0.75
fovCircle.Visible = false
fovCircle.Color = currentTheme.fovColor

RunService.RenderStepped:Connect(function()
fovCircle.Position = Vector2.new(Mouse.X, Mouse.Y + 36)
end)

— Функция для копирования Discord ссылки
local function copyDiscordLink()
— Пытаемся скопировать в буфер обмена
pcall(function()
— Для Synapse X и других исполнителей
if setclipboard then
setclipboard(“https://discord.gg/3JMgTcKmCN”)

— Показываем уведомление game:GetService(“StarterGui”):SetCore(“SendNotification”, { Title = “Discord Server”, Text = “Ссылка скопирована в буфер обмена!\nhttps://discord.gg/3JMgTcKmCN”, Duration = 5, Icon = “rbxassetid://3222877” }) else — Альтернативный метод game:GetService(“StarterGui”):SetCore(“SendNotification”, { Title = “Discord Server”, Text = “Ссылка: https://discord.gg/3JMgTcKmCN\nСкопируйте вручную”, Duration = 5, Icon = “rbxassetid://3222877” }) end end)— Также отправляем в чат для удобства pcall(function() game:GetService(“ReplicatedStorage”).DefaultChatSystemChatEvents.SayMessageRequest:FireServer(“Join our Discord: https://discord.gg/3JMgTcKmCN”, “All”) end)

end

DiscordBtn.MouseButton1Click:Connect(copyDiscordLink)

— Анимбот функция
local function GetClosestTarget()
if not LocalPlayer.Character then return nil end

local closest = nil local shortestDistance = AimbotSettings.FOV local mousePos = Vector2.new(Mouse.X, Mouse.Y)for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end if not player.Character then continue endlocal humanoid = player.Character:FindFirstChild(“Humanoid”) if not humanoid or humanoid.Health <= 0 then continue endif AimbotSettings.TeamCheck and player.Team and LocalPlayer.Team and player.Team == LocalPlayer.Team then continue endlocal targetPart = player.Character:FindFirstChild(AimbotSettings.Part) if not targetPart then continue endlocal partPos = targetPart.Position— Предсказание движения if player.Character:FindFirstChild(“HumanoidRootPart”) then local hrp = player.Character.HumanoidRootPart partPos = partPos + (hrp.Velocity * AimbotSettings.Prediction) endlocal screenPos, onScreen = Camera:WorldToViewportPoint(partPos)if onScreen then local distance = (Vector2.new(screenPos.X, screenPos.Y) – mousePos).Magnitudeif distance < shortestDistance then — В бесплатной версии нет проверки через стены shortestDistance = distance closest = targetPart end end endreturn closest

end

— Аимбот через управление мышью
local aimbotConnection
local function StartAimbot()
if aimbotConnection then aimbotConnection:Disconnect() end

aimbotConnection = RunService.RenderStepped:Connect(function() if not aimbotEnabled or not LocalPlayer.Character then return endlocal target = GetClosestTarget() if target then local targetPosition = target.Position— Добавляем предсказание if target.Parent:FindFirstChild(“HumanoidRootPart”) then local hrp = target.Parent.HumanoidRootPart targetPosition = targetPosition + (hrp.Velocity * AimbotSettings.Prediction) end— Конвертируем мировые координаты в экранные local screenPoint = Camera:WorldToScreenPoint(targetPosition)— Перемещаем курсор к цели с плавностью if screenPoint.Z > 0 then local newMousePos = Vector2.new(screenPoint.X, screenPoint.Y) local delta = newMousePos – Vector2.new(Mouse.X, Mouse.Y) local smoothedDelta = delta * AimbotSettings.Smoothness mousemoverel(smoothedDelta.X, smoothedDelta.Y) end end end)

end

local function StopAimbot()
if aimbotConnection then
aimbotConnection:Disconnect()
aimbotConnection = nil
end
end

— Toggle функции
local function toggleESP()
espEnabled = not espEnabled
if not espEnabled then
clearAllESP()
end
ESPBtn.BackgroundColor3 = espEnabled and currentTheme.btnActive or currentTheme.btnIdle
end

ESPBtn.MouseButton1Click:Connect(toggleESP)

local function toggleAimbot()
aimbotEnabled = not aimbotEnabled
fovCircle.Visible = aimbotEnabled
AimbotBtn.BackgroundColor3 = aimbotEnabled and currentTheme.btnActive or currentTheme.btnIdle

if aimbotEnabled then StartAimbot() else StopAimbot() end

end

AimbotBtn.MouseButton1Click:Connect(toggleAimbot)

— Смена темы
local themeOrder = {“Purple”, “Orange”, “Blue”}
local themeIndex = 1

ThemeBtn.MouseButton1Click:Connect(function()
themeIndex = (themeIndex % #themeOrder) + 1
currentThemeName = themeOrder[themeIndex]
ThemeBtn.Text = “Theme: ” .. currentThemeName
applyTheme(themes[currentThemeName])
end)

— Hide/Show GUI
HideBtn.MouseButton1Click:Connect(function()
guiEnabled = not guiEnabled
MainFrame.Visible = guiEnabled
end)

— Клавиши
UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode.B then
toggleESP()
elseif input.KeyCode == Enum.KeyCode.Q then
toggleAimbot()
elseif input.KeyCode == Enum.KeyCode.RightShift then
guiEnabled = not guiEnabled
MainFrame.Visible = guiEnabled
elseif aimbotEnabled then
if input.KeyCode == Enum.KeyCode.E then
AimbotSettings.FOV = math.clamp(AimbotSettings.FOV + 10, 50, 300)
fovCircle.Radius = AimbotSettings.FOV
elseif input.KeyCode == Enum.KeyCode.R then
AimbotSettings.FOV = math.clamp(AimbotSettings.FOV – 10, 50, 300)
fovCircle.Radius = AimbotSettings.FOV
end
end
end)

— ESP
local function clearAllESP()
for _, plr in ipairs(Players:GetPlayers()) do
if plr.Character and plr.Character:FindFirstChild(“Head”) then
local esp = plr.Character.Head:FindFirstChild(“TakaESP”)
if esp then esp:Destroy() end
end
end
end

RunService.Heartbeat:Connect(function()
if not espEnabled then
clearAllESP()
return
end
for _, plr in ipairs(Players:GetPlayers()) do
if plr == LocalPlayer or not plr.Character or not plr.Character:FindFirstChild(“Head”) then
continue
end
local head = plr.Character.Head
if not head:FindFirstChild(“TakaESP”) then
local bb = Instance.new(“BillboardGui”)
bb.Name = “TakaESP”
bb.Adornee = head
bb.Size = UDim2.new(0, 200, 0, 50)
bb.StudsOffset = Vector3.new(0, 4.2, 0)
bb.AlwaysOnTop = true
bb.LightInfluence = 0
bb.Parent = head

local txt = Instance.new(“TextLabel”) txt.Size = UDim2.new(1, 0, 1, 0) txt.BackgroundTransparency = 1 txt.Text = plr.Name txt.TextColor3 = currentTheme.title txt.TextStrokeTransparency = 0.4 txt.TextStrokeColor3 = Color3.new(0, 0, 0) txt.Font = Enum.Font.GothamBlack txt.TextSize = 18 txt.TextWrapped = true txt.Parent = bb end end

end)

— FPS + Ping
local lastTick = tick()
RunService.RenderStepped:Connect(function()
local dt = tick() – lastTick
lastTick = tick()
local fps = math.floor(1 / dt + 0.5)
local ping = math.floor(LocalPlayer:GetNetworkPing() * 1000 + 0.5) or “???”
Stats.Text = “FPS: ” .. fps .. “\nPing: ” .. ping .. ” ms”
end)

— Очистка при выходе игрока
Players.PlayerRemoving:Connect(function(plr)
if plr.Character and plr.Character:FindFirstChild(“Head”) then
local esp = plr.Character.Head:FindFirstChild(“TakaESP”)
if esp then esp:Destroy() end
end
end)

— Очистка при удалении персонажа
LocalPlayer.CharacterRemoving:Connect(function()
clearAllESP()
if aimbotEnabled then StopAimbot() end
end)

— Применяем начальную тему
applyTheme(currentTheme)

print(“Taka1337 FREE version loaded | B – ESP | Q – Aimbot | RightShift – Menu”)
print(“Buy premium for $1: t.me/Taka1337”)
print(“Join Discord: https://discord.gg/3JMgTcKmCN”)
print(“Premium features: Chams, Infinity Jump, Wall Check, More themes, Anime girl, Black sky, Tracers”)

Rivals script Noket Free keyless - Silent aim, ESP

Rivals Script by thegxx

Copy the Script Below

local repo = “https://raw.githubusercontent.com/deividcomsono/Obsidian/main/”
local Library = loadstring(game:HttpGet(repo .. “Library.lua”))()
local ThemeManager = loadstring(game:HttpGet(repo .. “addons/ThemeManager.lua”))()
local SaveManager = loadstring(game:HttpGet(repo .. “addons/SaveManager.lua”))()

local Options = Library.Options
local Toggles = Library.Toggles

Library.ForceCheckbox = false
Library.ShowToggleFrameInKeybinds = true

local RunService = game:GetService(“RunService”)
local Players = game:GetService(“Players”)
local LocalPlayer = Players.LocalPlayer
local Workspace = game:GetService(“Workspace”)
local ReplicatedStorage = game:GetService(“ReplicatedStorage”)
local UserInputService = game:GetService(“UserInputService”)
local Camera = Workspace.CurrentCamera

— Connection storage for proper cleanup
local connections = {}

local Window = Library:CreateWindow({
Title = “Rivals – thegxx”,
Footer = “version: 2.0 – finished”,
Icon = 123123,
NotifySide = “Right”,
ShowCustomCursor = true,
})

local Tabs = {
Aimbot = Window:AddTab(“Aimbot & Precision”, “user”),
Visuals = Window:AddTab(“Visuals & ESP”, “eye”),
Movement = Window:AddTab(“Movement & Mobility”, “running”),
Protection = Window:AddTab(“Protection & Survival”, “shield”),
Extras = Window:AddTab(“UI & Extras”, “gear”),
[“UI Settings”] = Window:AddTab(“UI Settings”, “settings”),
}

— Utility functions
local function getCharacter()
return LocalPlayer.Character
end

local function getHumanoid()
local character = getCharacter()
return character and character:FindFirstChild(“Humanoid”)
end

local function getRoot()
local character = getCharacter()
return character and character:FindFirstChild(“HumanoidRootPart”)
end

— Aimbot settings
local aimDeadCheck = true
local aimWallCheck = true
local aimPriority = “Distance”
local aimFOV = 500
local aimMaxDistance = 0 — 0 = no limit

local function isValidTarget(player)
if player == LocalPlayer or not player.Character or not player.Character:FindFirstChild(“Humanoid”) or not player.Character:FindFirstChild(“Head”) then
return false
end

if aimDeadCheck and player.Character.Humanoid.Health <= 0 then return false end— Distance check if aimMaxDistance > 0 then local myRoot = getRoot() if myRoot then local distance = (myRoot.Position – player.Character.Head.Position).Magnitude if distance > aimMaxDistance then return false end end endif aimWallCheck then local ray = Ray.new(Camera.CFrame.Position, (player.Character.Head.Position – Camera.CFrame.Position).Unit * 500) local part = Workspace:FindPartOnRayWithIgnoreList(ray, {getCharacter()}) if part and part:IsDescendantOf(player.Character) then return true else return false end end return true

end

local function getClosestPlayer(fov)
local closest, closestValue = nil, math.huge
local center = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)

for _, player in ipairs(Players:GetPlayers()) do if not isValidTarget(player) then continue end local head = player.Character.Head local pos, onScreen = Camera:WorldToViewportPoint(head.Position) if not onScreen then continue end local dist = (center – Vector2.new(pos.X, pos.Y)).Magnitude if dist > (fov or math.huge) then continue end local value = aimPriority == “Distance” and dist or player.Character.Humanoid.Health if value < closestValue then closestValue = value closest = player end end return closest

end

— Aimbot Tab – UNIFIED
local AimbotMainGroupBox = Tabs.Aimbot:AddLeftGroupbox(“Aimbot Main Settings”)
local AimbotFOVGroupBox = Tabs.Aimbot:AddRightGroupbox(“FOV Settings”)

— Aimbot Settings
local aimbotEnabled = false
local aimbotMode = “Rage”
local aimbotLock = “Head”
local aimbotAutoFire = false
local aimbotPrediction = false
local aimbotSensitivity = 1

AimbotMainGroupBox:AddToggle(“AimbotToggle”, {
Text = “Enable Aimbot”,
Default = false,
Callback = function(Value)
aimbotEnabled = Value
end,
})

AimbotMainGroupBox:AddLabel(“Aimbot Keybind”):AddKeyPicker(“AimbotKeybind”, {
Default = “MB2”,
Mode = “Hold”,
Text = “Aimbot Key”,
NoUI = false,
SyncToggleState = false,
Callback = function(Value)
aimbotEnabled = Value
end,
})

AimbotMainGroupBox:AddDropdown(“AimbotMode”, {
Values = { “Rage”, “Legit” },
Default = 1,
Multi = false,
Text = “Aimbot Mode”,
Callback = function(Value)
aimbotMode = Value
end,
})

AimbotMainGroupBox:AddDropdown(“AimbotLock”, {
Values = { “Head”, “Torso” },
Default = 1,
Multi = false,
Text = “Lock Target”,
Callback = function(Value)
aimbotLock = Value
end,
})

AimbotMainGroupBox:AddToggle(“AimbotAutoFire”, {
Text = “Auto-Fire”,
Default = false,
Callback = function(Value)
aimbotAutoFire = Value
end,
})

AimbotMainGroupBox:AddToggle(“AimbotPrediction”, {
Text = “Movement Prediction”,
Default = false,
Callback = function(Value)
aimbotPrediction = Value
end,
})

AimbotMainGroupBox:AddSlider(“AimbotSensitivity”, {
Text = “Sensitivity (Legit)”,
Default = 1,
Min = 0.1,
Max = 5,
Rounding = 1,
Callback = function(Value)
aimbotSensitivity = Value
end,
})

— Priorities and Checks
AimbotMainGroupBox:AddDropdown(“AimPriority”, {
Values = { “Distance”, “Health” },
Default = 1,
Multi = false,
Text = “Priority”,
Callback = function(Value)
aimPriority = Value
end,
})

AimbotMainGroupBox:AddSlider(“AimMaxDistance”, {
Text = “Max Distance”,
Default = 0,
Min = 0,
Max = 1000,
Rounding = 0,
Suffix = ” studs”,
Tooltip = “0 = no distance limit”,
Callback = function(Value)
aimMaxDistance = Value
end,
})

AimbotMainGroupBox:AddToggle(“AimDeadCheck”, {
Text = “Dead Check”,
Default = true,
Callback = function(Value)
aimDeadCheck = Value
end,
})

AimbotMainGroupBox:AddToggle(“AimWallCheck”, {
Text = “Wall Check”,
Default = true,
Callback = function(Value)
aimWallCheck = Value
end,
})

— FOV Settings (Unified for both Aimbot and Silent Aim)
AimbotFOVGroupBox:AddSlider(“AimFOV”, {
Text = “Aimbot FOV”,
Default = 500,
Min = 100,
Max = 1000,
Rounding = 0,
Callback = function(Value)
aimFOV = Value
end,
})

— Silent Aim
local silentAimEnabled = false
local silentAimHitchance = 50

AimbotFOVGroupBox:AddToggle(“SilentAimToggle”, {
Text = “Silent Aim”,
Tooltip = “Invisible aim, adjusts trajectories”,
Default = false,
Callback = function(Value)
silentAimEnabled = Value
end,
})

AimbotFOVGroupBox:AddSlider(“SilentAimHitchance”, {
Text = “Silent Aim Hitchance”,
Default = 50,
Min = 0,
Max = 100,
Rounding = 0,
Suffix = “%”,
Callback = function(Value)
silentAimHitchance = Value
end,
})

— FOV Circle
local fovCircleEnabled = false
local fovCircleSize = 100
local fovCircleRainbow = false
local fovCircle = Drawing.new(“Circle”)
fovCircle.Visible = false
fovCircle.Thickness = 2
fovCircle.Color = Color3.new(1,1,1)
fovCircle.Transparency = 1
fovCircle.NumSides = 64

AimbotFOVGroupBox:AddToggle(“FOVCircleToggle”, {
Text = “FOV Circle”,
Tooltip = “Visible aim circle”,
Default = false,
Callback = function(Value)
fovCircleEnabled = Value
fovCircle.Visible = Value
end,
})

AimbotFOVGroupBox:AddSlider(“FOVCircleSize”, {
Text = “FOV Circle Size”,
Default = 100,
Min = 50,
Max = 500,
Rounding = 0,
Suffix = ” px”,
Callback = function(Value)
fovCircleSize = Value
end,
})

AimbotFOVGroupBox:AddToggle(“FOVCircleRainbow”, {
Text = “Rainbow FOV”,
Default = false,
Callback = function(Value)
fovCircleRainbow = Value
end,
})

— Improved Aimbot loop
connections[“Aimbot”] = RunService:BindToRenderStep(“Aimbot”, Enum.RenderPriority.Camera.Value, function(dt)
if not aimbotEnabled then return end
local closest = getClosestPlayer(aimFOV)
if closest and closest.Character then
local targetPart = closest.Character:FindFirstChild(aimbotLock == “Head” and “Head” or “UpperTorso”)
if not targetPart then return end

local prediction = aimbotPrediction and targetPart.AssemblyLinearVelocity * 0.1 or Vector3.zero local targetPos = targetPart.Position + predictionif aimbotMode == “Rage” then Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, targetPos) elseif aimbotMode == “Legit” then local currentLook = Camera.CFrame.LookVector local targetLook = (targetPos – Camera.CFrame.Position).Unit local smoothFactor = math.clamp(aimbotSensitivity * dt * 10, 0.01, 0.3) local newLook = currentLook:Lerp(targetLook, smoothFactor) Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, Camera.CFrame.Position + newLook) endif aimbotAutoFire then local tool = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass(“Tool”) if tool then tool:Activate() end end end

end)

— Silent Aim hook
pcall(function()
local utility = require(ReplicatedStorage.Modules.Utility)
local oldRaycast = utility.Raycast

utility.Raycast = function(…) local args = {…} if silentAimEnabled and #args >= 3 and math.random(100) <= silentAimHitchance then local closest = getClosestPlayer(aimFOV) if closest and closest.Character and closest.Character:FindFirstChild(“Head”) then args[3] = closest.Character.Head.Position end end return oldRaycast(table.unpack(args)) end

end)

— Improved TriggerBot
local triggerBotEnabled = false
local triggerBotDelay = 0
local triggerBotLastShot = 0

AimbotMainGroupBox:AddToggle(“TriggerBotToggle”, {
Text = “TriggerBot”,
Tooltip = “Auto-shoot when aiming at enemy”,
Default = false,
Callback = function(Value)
triggerBotEnabled = Value
end,
})

AimbotMainGroupBox:AddSlider(“TriggerBotDelay”, {
Text = “TriggerBot Delay”,
Default = 0,
Min = 0,
Max = 500,
Rounding = 0,
Suffix = “ms”,
Callback = function(Value)
triggerBotDelay = Value / 1000
end,
})

connections[“TriggerBot”] = RunService.Heartbeat:Connect(function()
if not triggerBotEnabled then return end
if tick() – triggerBotLastShot < triggerBotDelay then return end

local mouse = LocalPlayer:GetMouse() local target = mouse.Target if target and target.Parent then local humanoid = target.Parent:FindFirstChild(“Humanoid”) if humanoid and humanoid.Health > 0 then local player = Players:GetPlayerFromCharacter(target.Parent) if player and player ~= LocalPlayer then triggerBotLastShot = tick() local tool = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass(“Tool”) if tool then tool:Activate() end end end end

end)

— FOV Circle update
connections[“FOVCircle”] = RunService.RenderStepped:Connect(function()
if fovCircleEnabled then
fovCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
fovCircle.Radius = fovCircleSize
fovCircle.Visible = true
if fovCircleRainbow then
fovCircle.Color = Color3.fromHSV(tick() % 5 / 5, 1, 1)
end
else
fovCircle.Visible = false
end
end)

— Visuals Tab
local VisualsLeftGroupBox = Tabs.Visuals:AddLeftGroupbox(“Player ESP Options”)
local VisualsSkeletonGroupBox = Tabs.Visuals:AddRightGroupbox(“Skeleton ESP Options”)
local VisualsOtherGroupBox = Tabs.Visuals:AddLeftGroupbox(“Other Visuals”)

— ESP Variables
local playerESPEnabled = false
local boxESPEnabled = false
local chamsESPEnabled = false
local playerESPName = true
local playerESPDistance = true
local playerESPHealth = true
local playerESPWeapon = true
local rainbowModeEnabled = false
local deadESPEnabled = true

— Store ESP states for toggle functionality
local espStates = {
Box = false,
Chams = false,
Name = true,
Distance = true,
Health = true,
Weapon = true,
Skeleton = false,
Tracers = false
}

— ESP Storage
local espBoxes = {}
local espChams = {}
local espTexts = {}
local skeletonLines = {}

— Intelligent ESP Management System
local function cleanupPlayerESP(player)
if espBoxes[player] then
pcall(function() espBoxes[player]:Remove() end)
espBoxes[player] = nil
end
if espChams[player] then
pcall(function() espChams[player]:Destroy() end)
espChams[player] = nil
end
if espTexts[player] then
pcall(function() espTexts[player]:Remove() end)
espTexts[player] = nil
end
if skeletonLines[player] then
if skeletonLines[player].lines then
for _, line in pairs(skeletonLines[player].lines) do
pcall(function() line:Remove() end)
end
end
if skeletonLines[player].tracer then
pcall(function() skeletonLines[player].tracer:Remove() end)
end
skeletonLines[player] = nil
end
end

— ESP creation function
local function createPlayerESP(player)
if player == LocalPlayer then return end
if not player.Character then return end

— Clean up existing ESP first cleanupPlayerESP(player)— Box ESP local box = Drawing.new(“Square”) box.Visible = false box.Color = Color3.new(1, 1, 1) box.Thickness = 2 box.Filled = false box.Transparency = 1 espBoxes[player] = box— Chams ESP local cham = Instance.new(“Highlight”) cham.Name = “ESP_Cham_” .. player.Name cham.Parent = game.CoreGui cham.Adornee = player.Character cham.FillTransparency = 0.5 cham.OutlineTransparency = 0 cham.FillColor = Color3.new(1, 1, 1) cham.OutlineColor = Color3.new(1, 1, 1) cham.Enabled = false espChams[player] = cham— Text ESP local text = Drawing.new(“Text”) text.Visible = false text.Color = Color3.new(1, 1, 1) text.Size = 16 text.Center = true text.Outline = true text.Transparency = 1 text.Font = 2 espTexts[player] = text

end

— ESP Toggle System
local function toggleESPState()
playerESPEnabled = not playerESPEnabled

if playerESPEnabled then — Restore previous states boxESPEnabled = espStates.Box chamsESPEnabled = espStates.Chams playerESPName = espStates.Name playerESPDistance = espStates.Distance playerESPHealth = espStates.Health playerESPWeapon = espStates.Weapon skeletonESPEnabled = espStates.Skeleton skeletonESPTracers = espStates.Tracers— Create ESP for all players for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then createPlayerESP(player) end end Library:Notify(“ESP Enabled!”, 2) else — Store current states espStates.Box = boxESPEnabled espStates.Chams = chamsESPEnabled espStates.Name = playerESPName espStates.Distance = playerESPDistance espStates.Health = playerESPHealth espStates.Weapon = playerESPWeapon espStates.Skeleton = skeletonESPEnabled espStates.Tracers = skeletonESPTracers— Disable all ESP boxESPEnabled = false chamsESPEnabled = false skeletonESPEnabled = false skeletonESPTracers = false— Clean up all ESP for player in pairs(espBoxes) do cleanupPlayerESP(player) end Library:Notify(“ESP Disabled!”, 2) end— Update toggles Toggles.BoxESPToggle:SetValue(boxESPEnabled) Toggles.ChamsESPToggle:SetValue(chamsESPEnabled) Toggles.SkeletonESPToggle:SetValue(skeletonESPEnabled) Toggles.SkeletonESPTracers:SetValue(skeletonESPTracers)

end

— ESP Keybind
VisualsLeftGroupBox:AddLabel(“ESP Master Keybind”):AddKeyPicker(“ESPKeybind”, {
Default = “P”,
Mode = “Toggle”,
Text = “ESP Master Key”,
NoUI = false,
Callback = function(Value)
toggleESPState()
end,
})

VisualsLeftGroupBox:AddToggle(“PlayerESPToggle”, {
Text = “Enable Player ESP”,
Default = false,
Callback = function(Value)
playerESPEnabled = Value
if not Value then
toggleESPState()
end
end,
})

VisualsLeftGroupBox:AddToggle(“BoxESPToggle”, {
Text = “Box ESP”,
Default = false,
Callback = function(Value)
boxESPEnabled = Value
espStates.Box = Value
end,
})

VisualsLeftGroupBox:AddToggle(“ChamsESPToggle”, {
Text = “Chams ESP”,
Default = false,
Callback = function(Value)
chamsESPEnabled = Value
espStates.Chams = Value
end,
})

VisualsLeftGroupBox:AddToggle(“PlayerESPName”, {
Text = “Name”,
Default = true,
Callback = function(Value)
playerESPName = Value
espStates.Name = Value
end,
})

VisualsLeftGroupBox:AddToggle(“PlayerESPDistance”, {
Text = “Distance”,
Default = true,
Callback = function(Value)
playerESPDistance = Value
espStates.Distance = Value
end,
})

VisualsLeftGroupBox:AddToggle(“PlayerESPHealth”, {
Text = “Health”,
Default = true,
Callback = function(Value)
playerESPHealth = Value
espStates.Health = Value
end,
})

VisualsLeftGroupBox:AddToggle(“PlayerESPWeapon”, {
Text = “Equipped Weapon”,
Default = true,
Callback = function(Value)
playerESPWeapon = Value
espStates.Weapon = Value
end,
})

— Player management system
local function setupPlayerESP(player)
if player == LocalPlayer then return end

player.CharacterAdded:Connect(function(char) task.wait(0.1) if playerESPEnabled then createPlayerESP(player) end end)player.CharacterRemoving:Connect(function() cleanupPlayerESP(player) end)if player.Character then task.wait(0.1) createPlayerESP(player) end

end

— Setup for existing players
for _, player in ipairs(Players:GetPlayers()) do
setupPlayerESP(player)
end

— Setup for new players
Players.PlayerAdded:Connect(function(player)
setupPlayerESP(player)
end)

Players.PlayerRemoving:Connect(function(player)
cleanupPlayerESP(player)
end)

— ESP update with intelligent cleanup
connections[“PlayerESP”] = RunService.Heartbeat:Connect(function()
if not playerESPEnabled then return end

local hue = tick() % 5 / 5 local rainbowColor = Color3.fromHSV(hue, 1, 1)for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end— Auto cleanup for dead/disconnected players if not player.Character or not player.Character.Parent then cleanupPlayerESP(player) continue endlocal humanoid = player.Character:FindFirstChild(“Humanoid”) local root = player.Character:FindFirstChild(“HumanoidRootPart”)if not humanoid or not root then cleanupPlayerESP(player) continue end— Auto cleanup for dead players if deadESP is enabled if deadESPEnabled and humanoid.Health <= 0 then cleanupPlayerESP(player) continue end— Create ESP if it doesn’t exist if not espBoxes[player] then createPlayerESP(player) endlocal rootPos, onScreen = Camera:WorldToViewportPoint(root.Position) if onScreen then — Text ESP if espTexts[player] then local textStr = “” if playerESPName then textStr = textStr .. player.Name .. “\n” end if playerESPDistance then local myRoot = getRoot() if myRoot then textStr = textStr .. math.floor((myRoot.Position – root.Position).Magnitude) .. ” studs\n” end end if playerESPHealth then textStr = textStr .. math.floor(humanoid.Health) .. “/” .. humanoid.MaxHealth .. “\n” end if playerESPWeapon then local tool = player.Character:FindFirstChildOfClass(“Tool”) or player.Backpack:FindFirstChildOfClass(“Tool”) if tool then textStr = textStr .. tool.Name end endespTexts[player].Text = textStr espTexts[player].Position = Vector2.new(rootPos.X, rootPos.Y – 50) espTexts[player].Visible = true if rainbowModeEnabled then espTexts[player].Color = rainbowColor end end— Box ESP if boxESPEnabled and espBoxes[player] then local minX, minY = math.huge, math.huge local maxX, maxY = -math.huge, -math.hugefor _, part in ipairs(player.Character:GetDescendants()) do if part:IsA(“BasePart”) then local corners = { part.CFrame * CFrame.new(part.Size.X/2, part.Size.Y/2, part.Size.Z/2).Position, part.CFrame * CFrame.new(part.Size.X/2, part.Size.Y/2, -part.Size.Z/2).Position, part.CFrame * CFrame.new(part.Size.X/2, -part.Size.Y/2, part.Size.Z/2).Position, part.CFrame * CFrame.new(part.Size.X/2, -part.Size.Y/2, -part.Size.Z/2).Position, part.CFrame * CFrame.new(-part.Size.X/2, part.Size.Y/2, part.Size.Z/2).Position, part.CFrame * CFrame.new(-part.Size.X/2, part.Size.Y/2, -part.Size.Z/2).Position, part.CFrame * CFrame.new(-part.Size.X/2, -part.Size.Y/2, part.Size.Z/2).Position, part.CFrame * CFrame.new(-part.Size.X/2, -part.Size.Y/2, -part.Size.Z/2).Position } for _, corner in ipairs(corners) do local pos = Camera:WorldToViewportPoint(corner) minX = math.min(minX, pos.X) maxX = math.max(maxX, pos.X) minY = math.min(minY, pos.Y) maxY = math.max(maxY, pos.Y) end end endespBoxes[player].Size = Vector2.new(maxX – minX, maxY – minY) espBoxes[player].Position = Vector2.new(minX, minY) espBoxes[player].Visible = true if rainbowModeEnabled then espBoxes[player].Color = rainbowColor end end else if espTexts[player] then espTexts[player].Visible = false end if espBoxes[player] then espBoxes[player].Visible = false end end— Chams ESP if chamsESPEnabled and espChams[player] then if espChams[player].Adornee ~= player.Character then espChams[player].Adornee = player.Character end espChams[player].Enabled = true if rainbowModeEnabled then espChams[player].FillColor = rainbowColor espChams[player].OutlineColor = rainbowColor end elseif espChams[player] then espChams[player].Enabled = false end end

end)

— Skeleton ESP
local skeletonESPEnabled = false
local skeletonESPTracers = false

VisualsSkeletonGroupBox:AddToggle(“SkeletonESPToggle”, {
Text = “Skeleton ESP”,
Tooltip = “Full player skeleton”,
Default = false,
Callback = function(Value)
skeletonESPEnabled = Value
espStates.Skeleton = Value
end,
})

VisualsSkeletonGroupBox:AddToggle(“SkeletonESPTracers”, {
Text = “Tracers”,
Default = false,
Callback = function(Value)
skeletonESPTracers = Value
espStates.Tracers = Value
end,
})

local function getPos(part)
return part and part.Position or nil
end

connections[“SkeletonESP”] = RunService.Heartbeat:Connect(function()
if not skeletonESPEnabled then return end

local hue = tick() % 5 / 5 local rainbowColor = Color3.fromHSV(hue, 1, 1)for _, player in ipairs(Players:GetPlayers()) do if player == LocalPlayer then continue end— Auto cleanup for invalid players if not player.Character or not player.Character.Parent then if skeletonLines[player] then cleanupPlayerESP(player) end continue endlocal humanoid = player.Character:FindFirstChild(“Humanoid”) if not humanoid or (deadESPEnabled and humanoid.Health <= 0) then if skeletonLines[player] then cleanupPlayerESP(player) end continue end— Initialize skeleton lines if not skeletonLines[player] then skeletonLines[player] = { lines = {}, tracer = nil } for i = 1, 14 do local line = Drawing.new(“Line”) line.Visible = false line.Color = Color3.new(1,1,1) line.Thickness = 2 line.Transparency = 1 skeletonLines[player].lines[i] = line end endlocal char = player.Character local bonePairs = { {char:FindFirstChild(“Head”), char:FindFirstChild(“UpperTorso”)}, {char:FindFirstChild(“UpperTorso”), char:FindFirstChild(“LowerTorso”)}, {char:FindFirstChild(“UpperTorso”), char:FindFirstChild(“LeftUpperArm”)}, {char:FindFirstChild(“LeftUpperArm”), char:FindFirstChild(“LeftLowerArm”)}, {char:FindFirstChild(“LeftLowerArm”), char:FindFirstChild(“LeftHand”)}, {char:FindFirstChild(“UpperTorso”), char:FindFirstChild(“RightUpperArm”)}, {char:FindFirstChild(“RightUpperArm”), char:FindFirstChild(“RightLowerArm”)}, {char:FindFirstChild(“RightLowerArm”), char:FindFirstChild(“RightHand”)}, {char:FindFirstChild(“LowerTorso”), char:FindFirstChild(“LeftUpperLeg”)}, {char:FindFirstChild(“LeftUpperLeg”), char:FindFirstChild(“LeftLowerLeg”)}, {char:FindFirstChild(“LeftLowerLeg”), char:FindFirstChild(“LeftFoot”)}, {char:FindFirstChild(“LowerTorso”), char:FindFirstChild(“RightUpperLeg”)}, {char:FindFirstChild(“RightUpperLeg”), char:FindFirstChild(“RightLowerLeg”)}, {char:FindFirstChild(“RightLowerLeg”), char:FindFirstChild(“RightFoot”)} }for i, pair in ipairs(bonePairs) do local startPart, endPart = pair[1], pair[2] if startPart and endPart then local startPos = getPos(startPart) local endPos = getPos(endPart)if startPos and endPos then local startScreen, startOn = Camera:WorldToViewportPoint(startPos) local endScreen, endOn = Camera:WorldToViewportPoint(endPos) local line = skeletonLines[player].lines[i]if startOn and endOn and line then line.From = Vector2.new(startScreen.X, startScreen.Y) line.To = Vector2.new(endScreen.X, endScreen.Y) line.Visible = true if rainbowModeEnabled then line.Color = rainbowColor end elseif line then line.Visible = false end elseif skeletonLines[player].lines[i] then skeletonLines[player].lines[i].Visible = false end elseif skeletonLines[player].lines[i] then skeletonLines[player].lines[i].Visible = false end end— Tracers if skeletonESPTracers then local root = char:FindFirstChild(“HumanoidRootPart”) if root then local rootPos, onScreen = Camera:WorldToViewportPoint(root.Position) if onScreen then if not skeletonLines[player].tracer then local tracer = Drawing.new(“Line”) tracer.Thickness = 2 tracer.Transparency = 1 tracer.Color = Color3.new(1,1,1) skeletonLines[player].tracer = tracer endlocal tracer = skeletonLines[player].tracer tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) tracer.To = Vector2.new(rootPos.X, rootPos.Y) tracer.Visible = true if rainbowModeEnabled then tracer.Color = rainbowColor end else if skeletonLines[player].tracer then skeletonLines[player].tracer.Visible = false end end end else if skeletonLines[player] and skeletonLines[player].tracer then skeletonLines[player].tracer.Visible = false end end end

end)

— Other Visuals
VisualsOtherGroupBox:AddToggle(“DeadESPToggle”, {
Text = “Hide Dead ESP”,
Tooltip = “Automatically remove ESP from dead players”,
Default = true,
Callback = function(Value)
deadESPEnabled = Value
end,
})

VisualsOtherGroupBox:AddToggle(“RainbowModeToggle”, {
Text = “Rainbow Mode”,
Tooltip = “Animated colors on all ESPs”,
Default = false,
Callback = function(Value)
rainbowModeEnabled = Value
end,
})

— Movement Tab (Removed Speed Hack)
local MovementLeftGroupBox = Tabs.Movement:AddLeftGroupbox(“Movement Options”)
local MovementRightGroupBox = Tabs.Movement:AddRightGroupbox(“Additional Movement”)

— Fly Hack
local flyEnabled = false
local flySpeed = 10
local flyBodyVelocity

MovementLeftGroupBox:AddToggle(“FlyHackToggle”, {
Text = “Fly Hack”,
Tooltip = “Free flight”,
Default = false,
Callback = function(Value)
flyEnabled = Value

if Value then local root = getRoot() if root then root.Anchored = falseif not flyBodyVelocity then flyBodyVelocity = Instance.new(“BodyVelocity”) flyBodyVelocity.MaxForce = Vector3.new(4000, 4000, 4000) flyBodyVelocity.Velocity = Vector3.zero flyBodyVelocity.Parent = root end end else if flyBodyVelocity then flyBodyVelocity:Destroy() flyBodyVelocity = nil end end end,

})

MovementLeftGroupBox:AddSlider(“FlyHackSpeed”, {
Text = “Fly Speed”,
Default = 10,
Min = 1,
Max = 100,
Rounding = 0,
Callback = function(Value)
flySpeed = Value
end,
})

MovementLeftGroupBox:AddLabel(“Fly Keybind”):AddKeyPicker(“FlyKeybind”, {
Default = “F”,
Mode = “Toggle”,
Text = “Fly Key”,
NoUI = false,
Callback = function(Value)
flyEnabled = Value
Toggles.FlyHackToggle:SetValue(Value)
end,
})

connections[“Fly”] = RunService.Heartbeat:Connect(function()
if flyEnabled and flyBodyVelocity and flyBodyVelocity.Parent then
local moveDir = Vector3.zero
if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDir += Camera.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDir -= Camera.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir -= Camera.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir += Camera.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then moveDir += Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then moveDir -= Vector3.new(0, 1, 0) end

if moveDir.Magnitude > 0 then flyBodyVelocity.Velocity = moveDir.Unit * flySpeed else flyBodyVelocity.Velocity = Vector3.zero end end

end)

— Infinite Jump
local infJumpEnabled = false
local infJumpConnection

MovementRightGroupBox:AddToggle(“InfiniteJumpToggle”, {
Text = “Infinite Jump”,
Tooltip = “Unlimited jumps without cooldown”,
Default = false,
Callback = function(Value)
infJumpEnabled = Value
if Value then
infJumpConnection = UserInputService.JumpRequest:Connect(function()
local humanoid = getHumanoid()
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
else
if infJumpConnection then
infJumpConnection:Disconnect()
infJumpConnection = nil
end
end
end,
})

— No Clip
local noClipEnabled = false

MovementRightGroupBox:AddToggle(“NoClipToggle”, {
Text = “No Clip”,
Tooltip = “Walk through walls/objects”,
Default = false,
Callback = function(Value)
noClipEnabled = Value
end,
})

connections[“NoClip”] = RunService.Stepped:Connect(function()
if noClipEnabled then
pcall(function()
for _, part in ipairs(getCharacter():GetDescendants()) do
if part:IsA(“BasePart”) then
part.CanCollide = false
end
end
end)
end
end)

— Bunny Hop
local bunnyHopEnabled = false

MovementRightGroupBox:AddToggle(“BunnyHopToggle”, {
Text = “Bunny Hop”,
Tooltip = “Auto-jump for momentum gain”,
Default = false,
Callback = function(Value)
bunnyHopEnabled = Value
end,
})

connections[“BunnyHop”] = RunService.Heartbeat:Connect(function()
if bunnyHopEnabled then
pcall(function()
local humanoid = getHumanoid()
if humanoid and humanoid.MoveDirection.Magnitude > 0 and humanoid.FloorMaterial ~= Enum.Material.Air then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
end
end)

— Protection Tab
local ProtectionLeftGroupBox = Tabs.Protection:AddLeftGroupbox(“Protection Options”)

local antiAimEnabled = false
local antiAimMode = “Spin”
local antiAimSpeed = 10

ProtectionLeftGroupBox:AddToggle(“AntiAimToggle”, {
Text = “Anti-Aim”,
Tooltip = “Deflects enemy aims”,
Default = false,
Callback = function(Value)
antiAimEnabled = Value
end,
})

ProtectionLeftGroupBox:AddDropdown(“AntiAimMode”, {
Values = { “Spin”, “Jitter”, “Random” },
Default = 1,
Multi = false,
Text = “Mode”,
Callback = function(Value)
antiAimMode = Value
end,
})

ProtectionLeftGroupBox:AddSlider(“AntiAimSpeed”, {
Text = “Spin Speed”,
Default = 10,
Min = 1,
Max = 50,
Rounding = 0,
Callback = function(Value)
antiAimSpeed = Value
end,
})

— Third Person Force – CORRIGIDO
local forceThirdPerson = false
local originalCameraType = nil
local originalMaxZoom = nil
local originalMinZoom = nil

ProtectionLeftGroupBox:AddToggle(“ForceThirdPerson”, {
Text = “Force Third Person”,
Tooltip = “Forces third person view for better Anti-Aim”,
Default = false,
Callback = function(Value)
forceThirdPerson = Value

if Value then — Salvar configurações originais originalCameraType = LocalPlayer.CameraMode originalMaxZoom = LocalPlayer.CameraMaxZoomDistance originalMinZoom = LocalPlayer.CameraMinZoomDistance— Forçar terceira pessoa LocalPlayer.CameraMode = Enum.CameraMode.Classic LocalPlayer.CameraMaxZoomDistance = 50 LocalPlayer.CameraMinZoomDistance = 5— Garantir que a câmera está em terceira pessoa task.spawn(function() wait(0.1) if LocalPlayer.CameraMode ~= Enum.CameraMode.Classic then LocalPlayer.CameraMode = Enum.CameraMode.Classic end end)Library:Notify(“Third Person Enabled!”, 2) else — Restaurar configurações originais if originalCameraType then LocalPlayer.CameraMode = originalCameraType else LocalPlayer.CameraMode = Enum.CameraMode.Classic endif originalMaxZoom then LocalPlayer.CameraMaxZoomDistance = originalMaxZoom else LocalPlayer.CameraMaxZoomDistance = 128 endif originalMinZoom then LocalPlayer.CameraMinZoomDistance = originalMinZoom else LocalPlayer.CameraMinZoomDistance = 0.5 endLibrary:Notify(“Third Person Disabled!”, 2) end end,

})

— Sistema de verificação contínua para terceira pessoa
connections[“ThirdPersonCheck”] = RunService.Heartbeat:Connect(function()
if forceThirdPerson then
— Verificar e forçar continuamente a terceira pessoa
if LocalPlayer.CameraMode ~= Enum.CameraMode.Classic then
LocalPlayer.CameraMode = Enum.CameraMode.Classic
end

— Garantir distâncias de zoom adequadas if LocalPlayer.CameraMaxZoomDistance < 20 then LocalPlayer.CameraMaxZoomDistance = 50 endif LocalPlayer.CameraMinZoomDistance > 10 then LocalPlayer.CameraMinZoomDistance = 5 end end— Anti-Aim if antiAimEnabled then pcall(function() local root = getRoot() if root then if antiAimMode == “Spin” then root.CFrame = root.CFrame * CFrame.Angles(0, math.rad(antiAimSpeed), 0) elseif antiAimMode == “Jitter” then root.CFrame = root.CFrame * CFrame.Angles(0, math.rad(math.random(-180, 180)), 0) elseif antiAimMode == “Random” then root.CFrame = root.CFrame * CFrame.Angles( math.rad(math.random(-5, 5)), math.rad(math.random(-180, 180)), math.rad(math.random(-5, 5)) ) end end end) end

end)

— Extras Tab
local ExtrasLeftGroupBox = Tabs.Extras:AddLeftGroupbox(“Extras Options”)

local fpsBoostEnabled = false

ExtrasLeftGroupBox:AddToggle(“FPSBoostToggle”, {
Text = “FPS Boost”,
Tooltip = “Optimizes performance”,
Default = false,
Callback = function(Value)
fpsBoostEnabled = Value
if Value then
pcall(function()
local lighting = game:GetService(“Lighting”)
lighting.GlobalShadows = false
lighting.FogEnd = 9e9
settings().Rendering.QualityLevel = Enum.QualityLevel.Level01

for _, v in pairs(workspace:GetDescendants()) do if v:IsA(“ParticleEmitter”) or v:IsA(“Trail”) or v:IsA(“Smoke”) or v:IsA(“Fire”) then v.Enabled = false end end end) Library:Notify(“FPS Boost Enabled!”, 3) else pcall(function() local lighting = game:GetService(“Lighting”) lighting.GlobalShadows = true settings().Rendering.QualityLevel = Enum.QualityLevel.Automatic end) end end,

})

ExtrasLeftGroupBox:AddButton(“Remove Textures (Extreme FPS)”, function()
for _, v in pairs(workspace:GetDescendants()) do
pcall(function()
if v:IsA(“Decal”) or v:IsA(“Texture”) then
v:Destroy()
elseif v:IsA(“BasePart”) then
v.Material = Enum.Material.SmoothPlastic
v.Reflectance = 0
end
end)
end
Library:Notify(“Textures removed!”, 3)
end)

ExtrasLeftGroupBox:AddDivider()

ExtrasLeftGroupBox:AddButton(“Fullbright”, function()
local lighting = game:GetService(“Lighting”)
lighting.Brightness = 2
lighting.ClockTime = 14
lighting.FogEnd = 100000
lighting.GlobalShadows = false
lighting.OutdoorAmbient = Color3.fromRGB(128, 128, 128)
Library:Notify(“Fullbright Enabled!”, 3)
end)

ExtrasLeftGroupBox:AddButton(“Remove Fog”, function()
local lighting = game:GetService(“Lighting”)
lighting.FogEnd = 100000
for _, v in pairs(lighting:GetChildren()) do
if v:IsA(“Atmosphere”) then
v:Destroy()
end
end
Library:Notify(“Fog Removed!”, 3)
end)

— UI Settings Tab
local MenuGroup = Tabs[“UI Settings”]:AddLeftGroupbox(“Menu”)
local ConfigGroup = Tabs[“UI Settings”]:AddRightGroupbox(“Configuration”)

MenuGroup:AddToggle(“KeybindMenuOpen”, {
Default = false,
Text = “Open Keybind Menu”,
Callback = function(value)
Library.KeybindFrame.Visible = value
end,
})

MenuGroup:AddToggle(“ShowCustomCursor”, {
Text = “Custom Cursor”,
Default = true,
Callback = function(Value)
Library.ShowCustomCursor = Value
end,
})

MenuGroup:AddDropdown(“NotificationSide”, {
Values = { “Left”, “Right” },
Default = 2,
Text = “Notification Side”,
Callback = function(Value)
Library:SetNotifySide(Value)
end,
})

MenuGroup:AddDivider()

MenuGroup:AddButton(“Unload Script”, function()
Library:Unload()
end)

MenuGroup:AddLabel(“Menu Keybind”):AddKeyPicker(“MenuKeybind”, {
Default = “RightShift”,
NoUI = true,
Text = “Menu keybind”
})

Library.ToggleKeybind = Options.MenuKeybind

— Configuration Manager
ConfigGroup:AddLabel(“Config Management”)
ConfigGroup:AddDivider()

ConfigGroup:AddDropdown(“ConfigList”, {
Values = {},
Default = 1,
Multi = false,
Text = “Select Config”,
})

ConfigGroup:AddInput(“ConfigName”, {
Default = “”,
Numeric = false,
Finished = false,
Text = “Config Name”,
Tooltip = “Enter name for your config”,
Placeholder = “MyConfig”,
})

ConfigGroup:AddButton(“Save Config”, function()
local configName = Options.ConfigName.Value
if configName == “” then
Library:Notify(“Please enter a config name!”, 3)
return
end
SaveManager:Save(configName)
Library:Notify(“Config ‘” .. configName .. “‘ saved!”, 3)
SaveManager:Refresh()
end)

ConfigGroup:AddButton(“Load Config”, function()
local configName = Options.ConfigName.Value
if configName == “” then
Library:Notify(“Please enter a config name!”, 3)
return
end
if SaveManager:Load(configName) then
Library:Notify(“Config ‘” .. configName .. “‘ loaded!”, 3)
else
Library:Notify(“Config not found!”, 3)
end
end)

ConfigGroup:AddButton(“Delete Config”, function()
local configName = Options.ConfigName.Value
if configName == “” then
Library:Notify(“Please enter a config name!”, 3)
return
end
if SaveManager:Delete(configName) then
Library:Notify(“Config ‘” .. configName .. “‘ deleted!”, 3)
SaveManager:Refresh()
else
Library:Notify(“Config not found!”, 3)
end
end)

ConfigGroup:AddDivider()

ConfigGroup:AddButton(“Refresh Config List”, function()
SaveManager:Refresh()
Library:Notify(“Config list refreshed!”, 2)
end)

ConfigGroup:AddButton(“Set as Autoload”, function()
local configName = Options.ConfigName.Value
if configName == “” then
Library:Notify(“Please enter a config name!”, 3)
return
end
SaveManager:SetAutoload(configName)
Library:Notify(“Config ‘” .. configName .. “‘ set as autoload!”, 3)
end)

— Theme Manager Section
local ThemeGroup = Tabs[“UI Settings”]:AddLeftGroupbox(“Themes”)

ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)

SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({
“MenuKeybind”,
“ConfigName”,
“ConfigList”,
“ThemeList”
})

ThemeManager:SetFolder(“RivalsCheat”)
SaveManager:SetFolder(“RivalsCheat/configs”)

ThemeManager:ApplyToTab(Tabs[“UI Settings”])

— Auto-save interval
task.spawn(function()
while true do
task.wait(300)
if SaveManager.Autoload then
SaveManager:Save(SaveManager.Autoload)
end
end
end)

— Load autoload config on startup
SaveManager:LoadAutoloadConfig()

— Proper cleanup on unload
Library:OnUnload(function()
print(“Unloading Rivals Cheat…”)

— Disconnect all connections for name, conn in pairs(connections) do pcall(function() if name == “Aimbot” then RunService:UnbindFromRenderStep(“Aimbot”) elseif type(conn) == “table” and conn.Disconnect then conn:Disconnect() end end) end connections = {}— Clean up all ESP for player in pairs(espBoxes) do cleanupPlayerESP(player) end— Clean up FOV circle pcall(function() fovCircle:Remove() end)— Reset physics if flyBodyVelocity then flyBodyVelocity:Destroy() end Workspace.Gravity = 196.2— Reset camera settings if originalCameraType then LocalPlayer.CameraMode = originalCameraType else LocalPlayer.CameraMode = Enum.CameraMode.Classic endif originalMaxZoom then LocalPlayer.CameraMaxZoomDistance = originalMaxZoom else LocalPlayer.CameraMaxZoomDistance = 128 endif originalMinZoom then LocalPlayer.CameraMinZoomDistance = originalMinZoom else LocalPlayer.CameraMinZoomDistance = 0.5 end— Reset humanoid pcall(function() local humanoid = getHumanoid() if humanoid then humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 end end)— Disconnect infinite jump if infJumpConnection then infJumpConnection:Disconnect() end— Reset lighting pcall(function() local lighting = game:GetService(“Lighting”) lighting.GlobalShadows = true lighting.Brightness = 1 settings().Rendering.QualityLevel = Enum.QualityLevel.Automatic end)Library:Notify(“Script unloaded successfully!”, 3)

end)

— Startup notification
Library:Notify(“Rivals Cheat v2.0 Loaded!\nAll features optimized and fixed.”, 5)

Rivals Script by thegxx

Rivals Nexus Hub Script Keyless – Aimbot

loadstring(game:HttpGet('https://nexus-script.vercel.app/RivalsV2.lua'))()

Ember Hub Rivals Script

Ember Hub Rivals Script
loadstring(game:HttpGet("https://raw.githubusercontent.com/scripter66/EmberHub/refs/heads/main/Rivals.lua"))()

Rivals Aimbot Script for Xeno

Rivals Aimbot Script for Xeno
loadstring(game:HttpGet("https://pastefy.app/YiGY38uo/raw"))()

Rivals Script Keyless

loadstring(game:HttpGet("https://scripts.projectsnare.online/SnareRivals", true))()

Kingzz Free V3 Rivals Script

loadstring(game:HttpGet("https://pastefy.app/xN0fvncj/raw"))()

Karbid Hub Script for Racket Rivals

loadstring(game:HttpGet("https://raw.githubusercontent.com/karbid-dev/Karbid/main/LocaonolK"))()

Zytra Hub Free Rivals Script Keyless

loadstring(game:HttpGet("https://raw.githubusercontent.com/LegitZytra/Zytra-Hub-V1/main/ZytraHub.lua"))()

Hexagon Rivals Aimbot Script Keyless

Hexagon Rivals Aimbot Script Keyless
loadstring(game:HttpGet("https://raw.githubusercontent.com/hell0zz12/Hexagon-Roblox/refs/heads/main/HexagonNew.lua"))()

Rivals Silent Aim Script with the click shoot button

Rivals Silent Aim Scrip with click shoot button
loadstring(game:HttpGet("https://raw.githubusercontent.com/JNHHGaming/Rivals-Script/refs/heads/main/JN%20HH%20Gaming",true))()

Rivals Ultra OP Hub

loadstring(game:HttpGet("https://gist.githubusercontent.com/mariusz123334434/c0fa386cabadd3e72098964bd42397ff/raw/c07f47e36166b5f058a9c50de75292c7a61ae77d/gistfile1.txt"))()

Rivals Sample Script

loadstring(game:HttpGet("https://pastefy.app/iYZ74giD/raw?part="))()

Rivals Aimbot and Fly, Owl Hub Script

loadstring(game:HttpGet("https://raw.githubusercontent.com/CriShoux/OwlHub/master/OwlHub.txt"))();

Dark Hub Rivals Script

loadstring(game:HttpGet("https://raw.githubusercontent.com/25Dark25/Scripts/refs/heads/main/key-script"))()
--Key:DarkHub87356

XeRivals Script (Destroy your enemies)

loadstring(game:HttpGet("https://zephyrlua.gay/lua/XeRivals.lua",true))()

SAINT Hub Script (No key)

loadstring(game:HttpGet("https://raw.githubusercontent.com/tokyotokyo-dev/rivals/refs/heads/main/rivalsaimwh.lua", true))()

How to run the Rivals Script?

To run the Xeno Rivals script and use all these extra features, you need a Roblox script executor. Follow the steps below:

  • First of all, go to xeno-executors.org and download latest version of Xeno on your Windows or laptop.
  • Now extract the zip folder and open the exe file.
  • Open the Roblox app on PC and sign in, then search for the Rivals game and hit the Play button.
  • Click Xeno, then click the attach button to link the executor to the Roblox client.
  • Copy any Rivals scripts from the above list and paste them into Xeno.
  • Click the Execute button and wait for the script to load.
  • A script UI will load where you can enable any features.

To get more script visit our dedicated Xeno script page and find the best working Roblox game scripts.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top