Rivals Rage Script (Penith Hub), Keyless

Rivals Rage Script (Penith Hub), Keyless

RIVALS • 1 week ago
126 views
Rivals Rage Script (Penith Hub), Keyless Keyless
XenoDev
Play Game Game Link

Description

Not every script lives up to the hype, but this one for Rivals delivers what it promises. Featuring Aimbot and Fly among other tools, it’s worth trying if you want to get more out of your sessions. no key needed.

What This Script Can Do

  • Aimbot: Assists your targeting so your shots or attacks land more consistently, which is useful in fast-paced Rivals rounds.
  • Fly: Allows your character to fly freely around the Rivals map, making navigation and exploration much easier.
  • Speed Hack: Boosts your character’s movement speed so you can get around Rivals’s map much faster than normal.
  • Triggerbot: Adds Triggerbot functionality to your Rivals setup, helpful for both new and experienced players.
  • Access: No key system or Linkvertise redirect needed — just paste and run.
  • Executor Compatibility: Works great on Delta, Codex, Hydrogen, Wave, and most mobile and PC executors.
Features
Compatible Executors

Script

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  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)

Comments (0)

No comments yet. Be the first!