Rivals Rage Script (Penith Hub)
RIVALS Keyless
Rivals Rage Script (Penith Hub)
👤 alexriderr 👁 14 views ❤️ 0 likes ⏱ Aug 30, 2026
A lot of features in this script are currently **broken**, but it can still be useful for **rage cheating in Rivals**. The script is also **heavily vibe-coded**, giving it a unique and experimental feel.
✨ Features
Aimbot Fly Speed Triggerbot Tracers
📋 Script Code
local Players          = game:GetService("Players")
local RunService       = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService     = game:GetService("TweenService")

local LocalPlayer = Players.LocalPlayer
if not LocalPlayer then
    LocalPlayer = Players:WaitForChild("LocalPlayer", 10)
end

local waitFn = (typeof ~= nil and task ~= nil and task.wait) or wait
local function clamp(v, a, b)
    if v <a> b then return b end
    return v
end

local function showError(msg)
    pcall(function()
        local sg = Instance.new("ScreenGui")
        sg.ResetOnSpawn = false
        sg.Parent = game:GetService("CoreGui")
        local f = Instance.new("Frame")
        f.Size = UDim2.new(0, 460, 0, 240)
        f.Position = UDim2.new(0.5, -230, 0.5, -120)
        f.BackgroundColor3 = Color3.fromRGB(45, 0, 0)
        f.BorderSizePixel = 0
        f.Parent = sg
        local t = Instance.new("TextLabel")
        t.Size = UDim2.new(1, -16, 1, -16)
        t.Position = UDim2.new(0, 8, 0, 8)
        t.BackgroundTransparency = 1
        t.TextColor3 = Color3.fromRGB(255, 255, 255)
        t.TextSize = 14
        t.TextWrapped = true
        t.Font = Enum.Font.Code
        t.Text = "SCRIPT ERROR:\n" .. tostring(msg)
        t.Parent = f
    end)
end

-- ============================================================
-- HITBOXES MODULE (inline, self-contained for easy sharing)
-- ============================================================
local Hitboxes = (function()
            local H = {}
            local P = game:GetService("Players")
            local LP = P.LocalPlayer
            H.Config = { Enabled = true, TeamCheck = false, Size = 1.6,
                Color = Color3.fromRGB(170, 0, 255), Transparency = 0.4 }
            local visual, connections = {}, {}
            local BASE = Vector3.new(4, 6, 2)
            local function gc(p) return p and p.Character end
            local function isEnemy(p)
                if p == LP then return false end
                if H.Config.TeamCheck and p.Team and LP.Team and p.Team == LP.Team then return false end
                local c = gc(p); return c and c:FindFirstChild("Humanoid") ~= nil
            end
            local function create(p)
                local c = gc(p); if not c then return end
                local root = c:FindFirstChild("HumanoidRootPart"); if not root then return end
                local sz = BASE * H.Config.Size
                local vis = Instance.new("Part")
                vis.Name = "HitboxESP"; vis.CanCollide = false; vis.Anchored = false; vis.Massless = true
                vis.Transparency = H.Config.Transparency; vis.Color = H.Config.Color
                vis.Material = Enum.Material.ForceField; vis.Size = sz; vis.Parent = c
                local w1 = Instance.new("WeldConstraint"); w1.Part0 = root; w1.Part1 = vis; w1.Parent = vis
                visual[p] = vis
            end
            local function remove(p)
                if visual[p] then visual[p]:Destroy(); visual[p] = nil end
            end
            function H:Refresh()
                for _, p in ipairs(P:GetPlayers()) do
                    if self.Config.Enabled and isEnemy(p) then
                        local c = gc(p)
                        local root = c and c:FindFirstChild("HumanoidRootPart")
                        if root then
                            local sz = BASE * self.Config.Size
                            if not visual[p] then
                                create(p)
                            else
                                if visual[p] then visual[p].Size = sz end
                            end
                        end
                    else remove(p) end
                end
            end
            function H:SetEnabled(s) self.Config.Enabled = s; self:Refresh() end
            local function onChar(p, c)
                c:WaitForChild("HumanoidRootPart", 5)
                if H.Config.Enabled and isEnemy(p) then waitFn(0.3); create(p) end
            end
            local function bind(p)
                if connections[p] then return end
                connections[p] = p.CharacterAdded:Connect(function(c) onChar(p, c) end)
                if p.Character then onChar(p, p.Character) end
            end
            for _, p in ipairs(P:GetPlayers()) do bind(p) end
            P.PlayerAdded:Connect(bind)
            P.PlayerRemoving:Connect(function(p)
                if connections[p] then connections[p]:Disconnect(); connections[p] = nil end
                remove(p)
            end)
            return H
        end)()

local function RUN()
    if not Hitboxes then
        error("Hitboxes module failed to initialize.")
    end

    -- ============================================================
    -- AIMBOT (mouse mode, smoothed)
    -- ============================================================
    local Aimbot = {
        Enabled   = false,
        HoldToAim = true,
        FOV       = 250,
        Speed     = 0.35,
        AimHead   = true,
        TeamCheck = false,
    }
    local aiming = false
    local canMouse = (typeof(mousemoverel) == "function")

    local function sameTeam(pl)
        return Aimbot.TeamCheck
            and pl.Team and LocalPlayer.Team
            and pl.Team == LocalPlayer.Team
    end

    local function getTarget()
        local cam = workspace.CurrentCamera
        if not cam then return nil end
        local center = Vector2.new(cam.ViewportSize.X / 2, cam.ViewportSize.Y / 2)
        local best, bestDist = nil, Aimbot.FOV
        for _, pl in ipairs(Players:GetPlayers()) do
            if pl ~= LocalPlayer and not sameTeam(pl) then
                local char = pl.Character
                if char and char:FindFirstChild("Humanoid") then
                    local part = (Aimbot.AimHead and char:FindFirstChild("Head"))
                        or char:FindFirstChild("HumanoidRootPart")
                    if part and part.Parent then
                        local sp, vis = cam:WorldToViewportPoint(part.Position)
                        if vis then
                            local d = (Vector2.new(sp.X, sp.Y) - center).Magnitude
                            if d < bestDist then bestDist = d; best = part end
                        end
                    end
                end
            end
        end
        return best
    end

    RunService.RenderStepped:Connect(function()
        pcall(function()
            if not Aimbot.Enabled then return end
            if Aimbot.HoldToAim and not aiming then return end
            if not canMouse then return end
            local cam = workspace.CurrentCamera
            if not cam then return end
            local target = getTarget()
            if not target then return end
            local sp, vis = cam:WorldToViewportPoint(target.Position)
            local vs = cam.ViewportSize
            if not vis or sp.X  vs.X or sp.Y  vs.Y then return end
            local mp = UserInputService:GetMouseLocation()
            local dx = sp.X - mp.X
            local dy = sp.Y - mp.Y
            local f = clamp(Aimbot.Speed, 0.05, 1)
            mousemoverel(math.round(dx * f), math.round(dy * f))
        end)
    end)

    -- ============================================================
    -- MOVEMENT: FLY + SPEED  (rebindable via settings)
    -- ============================================================
    local Binds = { Menu = "P", Aimbot = "MouseButton2", Fly = "F", Speed = "G" }
    local Fly   = { Enabled = false, Speed = 50 }
    local Speed = { Enabled = false, Value = 32 }
    local speedHum
    local flyBV, flyConn

    local function setFly(on)
        Fly.Enabled = on
        local char = LocalPlayer.Character
        if not char then return end
        local hrp = char:FindFirstChild("HumanoidRootPart") or char:WaitForChild("HumanoidRootPart", 5)
        if not hrp then return end
        if on then
            if flyBV then pcall(function() flyBV:Destroy() end) end
            flyBV = Instance.new("BodyVelocity")
            flyBV.MaxForce = Vector3.new(1e5, 1e5, 1e5)
            flyBV.Velocity = Vector3.new()
            flyBV.Parent = hrp
            if flyConn then flyConn:Disconnect() end
            flyConn = RunService.RenderStepped:Connect(function()
                if not flyBV or not flyBV.Parent then return end
                local cam = workspace.CurrentCamera
                if not cam then return end
                local dir = Vector3.new()
                local U = UserInputService
                if U:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end
                if U:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end
                if U:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end
                if U:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end
                if U:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
                if U:IsKeyDown(Enum.KeyCode.LeftControl) or U:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end
                if dir.Magnitude > 0 then dir = dir.Unit end
                flyBV.Velocity = dir * Fly.Speed
            end)
        else
            if flyBV then pcall(function() flyBV:Destroy() end); flyBV = nil end
            if flyConn then flyConn:Disconnect(); flyConn = nil end
        end
    end

    local function applySpeed()
        if Speed.Enabled and speedHum then
            speedHum.WalkSpeed = Speed.Value
        end
    end
    local function bindSpeedHum(hum)
        speedHum = hum
        applySpeed()
        hum:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
            if Speed.Enabled and hum.WalkSpeed ~= Speed.Value then
                hum.WalkSpeed = Speed.Value
            end
        end)
    end
    local function setSpeed(on)
        Speed.Enabled = on
        applySpeed()
    end
    do
        local c = LocalPlayer.Character
        local h = c and c:FindFirstChild("Humanoid")
        if h then bindSpeedHum(h) end
    end
    RunService.Stepped:Connect(function()
        if Speed.Enabled and speedHum and speedHum.WalkSpeed ~= Speed.Value then
            speedHum.WalkSpeed = Speed.Value
        end
    end)

    LocalPlayer.CharacterAdded:Connect(function(c)
        waitFn(0.2)
        local hum = c:FindFirstChild("Humanoid") or c:WaitForChild("Humanoid", 5)
        if hum then bindSpeedHum(hum) end
        if Fly.Enabled then
            local hrp = c:WaitForChild("HumanoidRootPart", 5)
            if hrp then setFly(true) end
        end
    end)

    -- ============================================================
    -- TRIGGERBOT (auto-fires when crosshair lands on an enemy)
    -- ============================================================
    local Triggerbot = { Enabled = false }
    local canClick = (typeof(mouse1press) == "function")
    local triggerDown = false

    local function triggerTarget()
        local cam = workspace.CurrentCamera
        if not cam then return false end
        local params = RaycastParams.new()
        params.FilterType = Enum.RaycastFilterType.Blacklist
        params.FilterDescendantsInstances = { LocalPlayer.Character or workspace }
        local res = workspace:Raycast(cam.CFrame.Position, cam.CFrame.LookVector * 1000, params)
        if res and res.Instance then
            local m = res.Instance:FindFirstAncestorOfClass("Model")
            if m then
                local pl = Players:GetPlayerFromCharacter(m)
                if pl and pl ~= LocalPlayer and not sameTeam(pl) then
                    return true
                end
            end
        end
        return false
    end

    RunService.RenderStepped:Connect(function()
        if not Triggerbot.Enabled or not canClick then
            if triggerDown then pcall(function() mouse1release() end); triggerDown = false end
            return
        end
        local hit = triggerTarget()
        if hit and not triggerDown then
            pcall(function() mouse1press() end); triggerDown = true
        elseif not hit and triggerDown then
            pcall(function() mouse1release() end); triggerDown = false
        end
    end)

    -- ============================================================
    -- ARRAYLIST (live player list panel, top-right)
    -- ============================================================
    local ArrayList = { Enabled = true, MaxRows = 30 }

    -- ============================================================
    -- TRACERS (2D lines from screen bottom to each enemy)
    -- ============================================================
    local Tracers = { Enabled = true }

    -- ============================================================
    -- CLEAN PURPLE INTERFACE
    -- ============================================================
    local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

    local PURPLE   = Color3.fromRGB(176, 38, 255)
    local PURPLE_D = Color3.fromRGB(138, 43, 226)
    local BG_A     = Color3.fromRGB(28, 14, 48)
    local BG_B     = Color3.fromRGB(18, 9, 33)
    local CARD     = Color3.fromRGB(38, 20, 60)
    local TXT      = Color3.fromRGB(232, 222, 248)
    local SUB      = Color3.fromRGB(150, 130, 175)
    local IDLE     = Color3.fromRGB(58, 42, 79)

    local gui = Instance.new("ScreenGui")
    gui.Name = "RivalsUI"
    gui.ResetOnSpawn = false
    gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    gui.DisplayOrder = 2147483647
    gui.IgnoreGuiInset = true
    pcall(function() gui.Parent = PlayerGui end)

    local main = Instance.new("Frame")
    main.Size = UDim2.new(0, 300, 0, 860)
    main.Position = UDim2.new(0.5, -150, 0.5, -430)
    main.BackgroundColor3 = BG_B
    main.BorderSizePixel = 0
    main.Active = true
    main.ClipsDescendants = true
    main.Parent = gui
    local mc = Instance.new("UICorner"); mc.CornerRadius = UDim.new(0, 14); mc.Parent = main
    local mg = Instance.new("UIGradient")
    mg.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, BG_A),
        ColorSequenceKeypoint.new(1, BG_B),
    })
    mg.Parent = main

    -- Title bar
    local title = Instance.new("TextButton")
    title.Size = UDim2.new(1, 0, 0, 50)
    title.BackgroundColor3 = PURPLE_D
    title.BorderSizePixel = 0
    title.Text = "Penith Hub"
    title.TextColor3 = Color3.fromRGB(255, 255, 255)
    title.Font = Enum.Font.GothamBold
    title.TextSize = 15
    title.AutoButtonColor = false
    title.Parent = main
    local tcor = Instance.new("UICorner"); tcor.CornerRadius = UDim.new(0, 14); tcor.Parent = title
    local tfix = Instance.new("Frame")
    tfix.Size = UDim2.new(1, 0, 0, 14)
    tfix.Position = UDim2.new(0, 0, 1, -14)
    tfix.BackgroundColor3 = PURPLE_D
    tfix.BorderSizePixel = 0
    tfix.Parent = title

    local minBtn = Instance.new("TextButton")
    minBtn.Size = UDim2.new(0, 32, 0, 32)
    minBtn.Position = UDim2.new(1, -38, 0, 9)
    minBtn.BackgroundColor3 = Color3.fromRGB(255, 80, 160)
    minBtn.Text = "-"
    minBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    minBtn.Font = Enum.Font.GothamBold
    minBtn.TextSize = 20
    minBtn.AutoButtonColor = false
    minBtn.Parent = title
    local mcor = Instance.new("UICorner"); mcor.CornerRadius = UDim.new(0, 8); mcor.Parent = minBtn

    local setBtn = Instance.new("TextButton")
    setBtn.Size = UDim2.new(0, 32, 0, 32)
    setBtn.Position = UDim2.new(1, -72, 0, 9)
    setBtn.BackgroundColor3 = Color3.fromRGB(90, 70, 140)
    setBtn.Text = "SET"
    setBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    setBtn.Font = Enum.Font.GothamBold
    setBtn.TextSize = 13
    setBtn.AutoButtonColor = false
    setBtn.Parent = title
    local sc2 = Instance.new("UICorner"); sc2.CornerRadius = UDim.new(0, 8); sc2.Parent = setBtn

    local body = Instance.new("Frame")
    body.Size = UDim2.new(1, 0, 1, -50)
    body.Position = UDim2.new(0, 0, 0, 50)
    body.BackgroundTransparency = 1
    body.Parent = main

    -- Draggable
    local dragging, dragStart, startPos
    title.InputBegan:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            dragStart = i.Position
            startPos = main.Position
        end
    end)
    UserInputService.InputEnded:Connect(function(i)
        if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
    end)
    UserInputService.InputChanged:Connect(function(i)
        if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then
            local d = i.Position - dragStart
            main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X,
                startPos.Y.Scale, startPos.Y.Offset + d.Y)
        end
    end)

    -- Card helper
    local function makeCard(parent, yPos, height, titleText)
        local card = Instance.new("Frame")
        card.Size = UDim2.new(0, 276, 0, height)
        card.Position = UDim2.new(0, 12, 0, yPos)
        card.BackgroundColor3 = CARD
        card.BorderSizePixel = 0
        card.Parent = parent
        local cc = Instance.new("UICorner"); cc.CornerRadius = UDim.new(0, 10); cc.Parent = card
        local hdr = Instance.new("TextLabel")
        hdr.Size = UDim2.new(1, -24, 0, 22)
        hdr.Position = UDim2.new(0, 12, 0, 8)
        hdr.BackgroundTransparency = 1
        hdr.Text = titleText
        hdr.TextColor3 = PURPLE
        hdr.Font = Enum.Font.GothamBold
        hdr.TextSize = 13
        hdr.TextXAlignment = Enum.TextXAlignment.Left
        hdr.Parent = card
        local line = Instance.new("Frame")
        line.Size = UDim2.new(1, -24, 0, 2)
        line.Position = UDim2.new(0, 12, 0, 32)
        line.BackgroundColor3 = PURPLE
        line.BorderSizePixel = 0
        line.Parent = card
        return card
    end

    local function makeToggle(parent, y, text, default, cb)
        local row = Instance.new("Frame")
        row.Size = UDim2.new(1, -24, 0, 36)
        row.Position = UDim2.new(0, 12, 0, y)
        row.BackgroundTransparency = 1
        row.Parent = parent

        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1, -64, 1, 0)
        label.BackgroundTransparency = 1
        label.Text = text
        label.TextColor3 = TXT
        label.Font = Enum.Font.Gotham
        label.TextSize = 13
        label.TextXAlignment = Enum.TextXAlignment.Left
        label.Parent = row

        local sw = Instance.new("TextButton")
        sw.Size = UDim2.new(0, 46, 0, 24)
        sw.Position = UDim2.new(1, -46, 0.5, -12)
        sw.BackgroundColor3 = IDLE
        sw.AutoButtonColor = false
        sw.Text = ""
        sw.Parent = row
        local sc = Instance.new("UICorner"); sc.CornerRadius = UDim.new(1, 0); sc.Parent = sw

        local knob = Instance.new("Frame")
        knob.Size = UDim2.new(0, 20, 0, 20)
        knob.Position = UDim2.new(0, 2, 0.5, -10)
        knob.BackgroundColor3 = Color3.fromRGB(235, 225, 250)
        knob.Parent = sw
        local kc = Instance.new("UICorner"); kc.CornerRadius = UDim.new(1, 0); kc.Parent = knob

        local state = default
        local function set(v)
            state = v
            sw.BackgroundColor3 = v and PURPLE or IDLE
            TweenService:Create(knob, TweenInfo.new(0.15, Enum.EasingStyle.Quad), {
                Position = v and UDim2.new(0, 24, 0.5, -10) or UDim2.new(0, 2, 0.5, -10)
            }):Play()
            cb(v)
        end
        sw.MouseButton1Click:Connect(function() set(not state) end)
        set(state)
    end

    local function makeSlider(parent, y, text, min, max, default, cb)
        local row = Instance.new("Frame")
        row.Size = UDim2.new(1, -24, 0, 44)
        row.Position = UDim2.new(0, 12, 0, y)
        row.BackgroundTransparency = 1
        row.Parent = parent

        local top = Instance.new("Frame")
        top.Size = UDim2.new(1, 0, 0, 18)
        top.BackgroundTransparency = 1
        top.Parent = row

        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1, -50, 1, 0)
        label.BackgroundTransparency = 1
        label.Text = text
        label.TextColor3 = TXT
        label.Font = Enum.Font.Gotham
        label.TextSize = 13
        label.TextXAlignment = Enum.TextXAlignment.Left
        label.Parent = top

        local val = Instance.new("TextLabel")
        val.Size = UDim2.new(0, 50, 1, 0)
        val.Position = UDim2.new(1, -50, 0, 0)
        val.BackgroundTransparency = 1
        val.Text = tostring(default)
        val.TextColor3 = PURPLE
        val.Font = Enum.Font.GothamBold
        val.TextSize = 13
        val.TextXAlignment = Enum.TextXAlignment.Right
        val.Parent = top

        local bar = Instance.new("Frame")
        bar.Size = UDim2.new(1, 0, 0, 6)
        bar.Position = UDim2.new(0, 0, 1, -10)
        bar.BackgroundColor3 = IDLE
        bar.Parent = row
        local bc = Instance.new("UICorner"); bc.CornerRadius = UDim.new(1, 0); bc.Parent = bar

        local fill = Instance.new("Frame")
        fill.Size = UDim2.new(0, 0, 1, 0)
        fill.BackgroundColor3 = PURPLE
        fill.Parent = bar
        local fc = Instance.new("UICorner"); fc.CornerRadius = UDim.new(1, 0); fc.Parent = fill

        local knob = Instance.new("Frame")
        knob.Size = UDim2.new(0, 14, 0, 14)
        knob.BackgroundColor3 = Color3.fromRGB(240, 230, 255)
        knob.Parent = bar
        local kc = Instance.new("UICorner"); kc.CornerRadius = UDim.new(1, 0); kc.Parent = knob

        local value = default
        local function setValue(v)
            value = clamp(v, min, max)
            local t = (value - min) / (max - min)
            fill.Size = UDim2.new(t, 0, 1, 0)
            knob.Position = UDim2.new(t, -7, 0.5, -7)
            val.Text = string.format("%.1f", value)
            cb(value)
        end

        local sliding
        bar.InputBegan:Connect(function(i)
            if i.UserInputType == Enum.UserInputType.MouseButton1 then
                sliding = true
                local rel = (i.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X
                setValue(min + rel * (max - min))
            end
        end)
        UserInputService.InputEnded:Connect(function(i)
            if i.UserInputType == Enum.UserInputType.MouseButton1 then sliding = false end
        end)
        UserInputService.InputChanged:Connect(function(i)
            if sliding and i.UserInputType == Enum.UserInputType.MouseMovement then
                local rel = (i.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X
                setValue(min + rel * (max - min))
            end
        end)
        setValue(default)
    end

    -- Two views: MAIN and SETTINGS
    local viewMain = Instance.new("Frame")
    viewMain.Size = UDim2.new(1, 0, 1, 0)
    viewMain.BackgroundTransparency = 1
    viewMain.Parent = body
    local viewSettings = Instance.new("Frame")
    viewSettings.Size = UDim2.new(1, 0, 1, 0)
    viewSettings.BackgroundTransparency = 1
    viewSettings.Visible = false
    viewSettings.Parent = body

    local listening, bindButtons = nil, {}

    -- MAIN view
    local esp = makeCard(viewMain, 10, 268, "VISUAL  -  HITBOX ESP")
    makeToggle(esp, 44, "Show Boxes", true, function(v) Hitboxes:SetEnabled(v) end)
    makeToggle(esp, 86, "Team Check", false, function(v)
        Hitboxes.Config.TeamCheck = v; Hitboxes:Refresh(); Aimbot.TeamCheck = v
    end)
    makeToggle(esp, 128, "Tracers", true, function(v) Tracers.Enabled = v end)
    makeSlider(esp, 170, "Box Size", 1, 5, 1.6, function(v) Hitboxes.Config.Size = v; Hitboxes:Refresh() end)
    makeToggle(esp, 218, "ArrayList", true, function(v) ArrayList.Enabled = v end)

    local mv = makeCard(viewMain, 246, 130, "MOVEMENT  -  FLY / SPEED")
    makeToggle(mv, 44, "Fly", false, function(v) setFly(v) end)
    makeToggle(mv, 86, "Speed", false, function(v) setSpeed(v) end)

    local aim = makeCard(viewMain, 386, 276, "COMBAT  -  AIMBOT")
    makeToggle(aim, 44, "Enabled", false, function(v) Aimbot.Enabled = v end)
    makeToggle(aim, 86, "Hold RMB", true, function(v) Aimbot.HoldToAim = v end)
    makeToggle(aim, 128, "Aim Head", true, function(v) Aimbot.AimHead = v end)
    makeSlider(aim, 172, "FOV", 30, 400, 250, function(v) Aimbot.FOV = v end)
    makeSlider(aim, 222, "Smoothness", 0.05, 1, 0.35, function(v) Aimbot.Speed = v end)

    local trig = makeCard(viewMain, 672, 130, "COMBAT  -  TRIGGERBOT")
    makeToggle(trig, 44, "Enabled", false, function(v) Triggerbot.Enabled = v end)

    -- SETTINGS view
    local function makeBind(parent, y, text, key)
        local row = Instance.new("Frame")
        row.Size = UDim2.new(1, -24, 0, 36)
        row.Position = UDim2.new(0, 12, 0, y)
        row.BackgroundTransparency = 1
        row.Parent = parent
        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1, -80, 1, 0)
        label.BackgroundTransparency = 1
        label.Text = text
        label.TextColor3 = TXT
        label.Font = Enum.Font.Gotham
        label.TextSize = 13
        label.TextXAlignment = Enum.TextXAlignment.Left
        label.Parent = row
        local btn = Instance.new("TextButton")
        btn.Size = UDim2.new(0, 76, 0, 28)
        btn.Position = UDim2.new(1, -76, 0.5, -14)
        btn.BackgroundColor3 = IDLE
        btn.AutoButtonColor = false
        btn.Text = Binds[key]
        btn.TextColor3 = Color3.fromRGB(240, 230, 255)
        btn.Font = Enum.Font.GothamBold
        btn.TextSize = 12
        btn.Parent = row
        local bc = Instance.new("UICorner"); bc.CornerRadius = UDim.new(0, 8); bc.Parent = btn
        btn.MouseButton1Click:Connect(function()
            listening = key
            btn.Text = "..."
        end)
        bindButtons[key] = btn
    end

    local kb = makeCard(viewSettings, 10, 212, "SETTINGS  -  KEYBINDS")
    makeBind(kb, 44, "Menu (show/hide)", "Menu")
    makeBind(kb, 84, "Aimbot", "Aimbot")
    makeBind(kb, 124, "Fly", "Fly")
    makeBind(kb, 164, "Speed", "Speed")

    local mvset = makeCard(viewSettings, 234, 150, "SETTINGS  -  MOVEMENT")
    makeSlider(mvset, 44, "Fly Speed", 10, 150, 50, function(v) Fly.Speed = v end)
    makeSlider(mvset, 96, "Walk Speed", 16, 100, 32, function(v) Speed.Value = v end)

    local hint = Instance.new("TextLabel")
    hint.Size = UDim2.new(1, -24, 0, 22)
    hint.Position = UDim2.new(0, 12, 1, -30)
    hint.BackgroundTransparency = 1
    hint.Text = "click a key, then press a new one"
    hint.TextColor3 = SUB
    hint.Font = Enum.Font.Gotham
    hint.TextSize = 11
    hint.Parent = viewSettings

    -- Settings toggle
    local inSettings = false
    setBtn.MouseButton1Click:Connect(function()
        inSettings = not inSettings
        viewSettings.Visible = inSettings
        viewMain.Visible = not inSettings
        setBtn.Text = inSettings and "BACK" or "SET"
    end)

    local foot = Instance.new("TextLabel")
    foot.Size = UDim2.new(1, 0, 0, 22)
    foot.Position = UDim2.new(0, 0, 1, -22)
    foot.BackgroundTransparency = 1
    foot.Text = "press  P  to hide / show"
    foot.TextColor3 = SUB
    foot.Font = Enum.Font.Gotham
    foot.TextSize = 11
    foot.Parent = main

    -- ============================================================
    -- ARRAYLIST PANEL
    -- ============================================================
    local arrayGui = Instance.new("ScreenGui")
    arrayGui.Name = "RivalsArrayList"
    arrayGui.ResetOnSpawn = false
    arrayGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    arrayGui.DisplayOrder = 2147483646
    arrayGui.IgnoreGuiInset = true
    pcall(function() arrayGui.Parent = PlayerGui end)

    local arrayFrame = Instance.new("Frame")
    arrayFrame.Size = UDim2.new(0, 210, 0, 40)
    arrayFrame.Position = UDim2.new(1, -220, 0, 10)
    arrayFrame.BackgroundColor3 = CARD
    arrayFrame.BorderSizePixel = 0
    arrayFrame.ClipsDescendants = true
    arrayFrame.Parent = arrayGui
    local ac = Instance.new("UICorner"); ac.CornerRadius = UDim.new(0, 10); ac.Parent = arrayFrame

    local aHdr = Instance.new("TextLabel")
    aHdr.Size = UDim2.new(1, -16, 0, 26)
    aHdr.Position = UDim2.new(0, 8, 0, 6)
    aHdr.BackgroundTransparency = 1
    aHdr.Text = "PLAYERS"
    aHdr.TextColor3 = PURPLE
    aHdr.Font = Enum.Font.GothamBold
    aHdr.TextSize = 13
    aHdr.TextXAlignment = Enum.TextXAlignment.Left
    aHdr.Parent = arrayFrame

    local arrayRows = {}
    local function ensureRows(n)
        while #arrayRows < n do
            local i = #arrayRows + 1
            local row = Instance.new("Frame")
            row.Size = UDim2.new(1, -16, 0, 22)
            row.Position = UDim2.new(0, 8, 0, 38 + (i - 1) * 24)
            row.BackgroundTransparency = 1
            row.Parent = arrayFrame
            local dot = Instance.new("Frame")
            dot.Size = UDim2.new(0, 10, 0, 10)
            dot.Position = UDim2.new(0, 0, 0.5, -5)
            dot.BackgroundColor3 = PURPLE
            dot.BorderSizePixel = 0
            dot.Parent = row
            local dc = Instance.new("UICorner"); dc.CornerRadius = UDim.new(1, 0); dc.Parent = dot
            local nm = Instance.new("TextLabel")
            nm.Size = UDim2.new(1, -18, 1, 0)
            nm.Position = UDim2.new(0, 16, 0, 0)
            nm.BackgroundTransparency = 1
            nm.Text = ""
            nm.TextColor3 = TXT
            nm.Font = Enum.Font.Gotham
            nm.TextSize = 12
            nm.TextXAlignment = Enum.TextXAlignment.Left
            nm.Parent = row
            arrayRows[i] = { row = row, dot = dot, nm = nm }
        end
    end

    local ArrayListModules = {
        { "Hitbox ESP", function() return Hitboxes.Config.Enabled end },
        { "Team Check", function() return Hitboxes.Config.TeamCheck end },
        { "Tracers",    function() return Tracers.Enabled end },
        { "Fly",        function() return Fly.Enabled end },
        { "Speed",      function() return Speed.Enabled end },
        { "Aimbot",     function() return Aimbot.Enabled end },
        { "Triggerbot", function() return Triggerbot.Enabled end },
    }
    local modHdr = Instance.new("TextLabel")
    modHdr.Size = UDim2.new(1, -16, 0, 22)
    modHdr.Position = UDim2.new(0, 8, 0, 40)
    modHdr.BackgroundTransparency = 1
    modHdr.Text = "MODULES"
    modHdr.TextColor3 = PURPLE
    modHdr.Font = Enum.Font.GothamBold
    modHdr.TextSize = 13
    modHdr.TextXAlignment = Enum.TextXAlignment.Left
    modHdr.Parent = arrayFrame
    local modRows = {}
    for i, m in ipairs(ArrayListModules) do
        local row = Instance.new("Frame")
        row.Size = UDim2.new(1, -16, 0, 22)
        row.BackgroundTransparency = 1
        row.Parent = arrayFrame
        local dot = Instance.new("Frame")
        dot.Size = UDim2.new(0, 10, 0, 10)
        dot.Position = UDim2.new(0, 0, 0.5, -5)
        dot.BackgroundColor3 = IDLE
        dot.BorderSizePixel = 0
        dot.Parent = row
        local dc = Instance.new("UICorner"); dc.CornerRadius = UDim.new(1, 0); dc.Parent = dot
        local nm = Instance.new("TextLabel")
        nm.Size = UDim2.new(1, -18, 1, 0)
        nm.Position = UDim2.new(0, 16, 0, 0)
        nm.BackgroundTransparency = 1
        nm.Text = m[1]
        nm.TextColor3 = SUB
        nm.Font = Enum.Font.Gotham
        nm.TextSize = 12
        nm.TextXAlignment = Enum.TextXAlignment.Left
        nm.Parent = row
        modRows[i] = { row = row, dot = dot, nm = nm, get = m[2] }
    end

    local arrayT = 0
    RunService.RenderStepped:Connect(function(dt)
        if not ArrayList.Enabled then arrayGui.Enabled = false; return end
        arrayGui.Enabled = true
        arrayT = arrayT + dt
        if arrayT < 0.25 then return end
        arrayT = 0
        local lp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
        local list = {}
        for _, pl in ipairs(Players:GetPlayers()) do
            if pl ~= LocalPlayer and pl.Character and pl.Character:FindFirstChild("HumanoidRootPart") then
                local root = pl.Character.HumanoidRootPart
                local dist = lp and (root.Position - lp.Position).Magnitude or 0
                local enemy = not (Aimbot.TeamCheck and pl.Team and LocalPlayer.Team and pl.Team == LocalPlayer.Team)
                table.insert(list, { pl = pl, dist = dist, enemy = enemy })
            end
        end
        table.sort(list, function(a, b) return a.dist < b.dist end)
        local shown = math.min(#list, ArrayList.MaxRows)
        ensureRows(shown)
        for i = 1, #arrayRows do
            local r = arrayRows[i]
            if i = 0 and sp.X = 0 and sp.Y <= vs.Y then
                            if not l then
                                l = DrawingLib.new("Line")
                                l.Thickness = 1.5
                                l.Transparency = 1
                                tracerLines[pl] = l
                            end
                            l.Visible = true
                            l.Color = enemy and Color3.fromRGB(170, 0, 255) or Color3.fromRGB(120, 200, 120)
                            l.From = from
                            l.To = Vector2.new(sp.X, sp.Y)
                        elseif l then
                            l.Visible = false
                        end
                    elseif l then
                        l.Visible = false
                    end
                end
            end
        end)
    end)

    local minimized = false
    minBtn.MouseButton1Click:Connect(function()
        minimized = not minimized
        TweenService:Create(main, TweenInfo.new(0.2, Enum.EasingStyle.Quad), {
            Size = minimized and UDim2.new(0, 300, 0, 50) or UDim2.new(0, 300, 0, 860)
        }):Play()
        minBtn.Text = minimized and "+" or "-"
    end)

    local function matchBind(bindName, i)
        if bindName == "MouseButton1" or bindName == "MouseButton2" or bindName == "MouseButton3" then
            local map = { MouseButton1 = Enum.UserInputType.MouseButton1,
                MouseButton2 = Enum.UserInputType.MouseButton2,
                MouseButton3 = Enum.UserInputType.MouseButton3 }
            return i.UserInputType == map[bindName]
        end
        return i.KeyCode.Name == bindName
    end

    UserInputService.InputBegan:Connect(function(i, gp)
        if listening then
            if i.KeyCode == Enum.KeyCode.Escape then
                if bindButtons[listening] then bindButtons[listening].Text = Binds[listening] end
                listening = nil
                return
            end
            local nm
            if i.UserInputType == Enum.UserInputType.MouseButton2 then nm = "MouseButton2"
            elseif i.UserInputType == Enum.UserInputType.MouseButton3 then nm = "MouseButton3"
            elseif i.KeyCode and i.KeyCode ~= Enum.KeyCode.Unknown then nm = i.KeyCode.Name
            else nm = nil end
            if nm and nm ~= "MouseButton1" then
                Binds[listening] = nm
                if bindButtons[listening] then bindButtons[listening].Text = nm end
                listening = nil
            end
            return
        end
        if matchBind(Binds.Aimbot, i) then aiming = true; return end
        if gp and (i.UserInputType == Enum.UserInputType.MouseButton1
                or i.UserInputType == Enum.UserInputType.MouseButton2
                or i.UserInputType == Enum.UserInputType.MouseButton3) then
            return
        end
        if matchBind(Binds.Menu, i) then gui.Enabled = not gui.Enabled; return end
        if matchBind(Binds.Fly, i) then setFly(not Fly.Enabled); return end
        if matchBind(Binds.Speed, i) then setSpeed(not Speed.Enabled); return end
    end)
    UserInputService.InputEnded:Connect(function(i, gp)
        if matchBind(Binds.Aimbot, i) then aiming = false end
    end)
end

xpcall(RUN, showError)
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game RIVALS
TypeKeyless
Authoralexriderr
Views14
Likes0
PublishedAug 30, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
MM2 SPAWNER AND EQUIPPABLE SCRIPT – NO KEY
MM2 SPAWNER AND EQUIPPABLE SCRIPT – NO KEY
Murder Mystery 2 • 👁 14
Keyless
Auto farm San Diego Border Roleplay script by Honey Meelon
Auto farm San Diego Border Roleplay script by Honey Meelon
San Diego Border Roleplay • 👁 14
Keyless
Prison Life – Trolling Script V2 / Aiming Script
Prison Life – Trolling Script V2 / Aiming Script
Prison Life • 👁 10
Keyless
Neverlose script steal an egg (2026)
Neverlose script steal an egg (2026)
Steal An Egg • 👁 11
Keyless
OP Work at a Pizza Place Trolling GUI [Free / Keyless]
OP Work at a Pizza Place Trolling GUI [Free / Keyless]
Work at a Pizza Place • 👁 11
Keyless