Aimbot [open source]
Key RequiredUniversal

Aimbot [open source]

Universal Scriptxeepyxeepy 1.6K views 33.6K executesUpdated Sep 11, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•2639 lines (45485 chars)
--[[
    RAYFIELD TEST MENU
    Aimbot + ESP + Movement + +1 Autofarm

    MAIN
    - Aimbot
    - Aimbot Part
    - Smooth Aimbot
    - Smoothness
    - FOV Circle
    - FOV Radius
    - Wall Check
    - Team Check
    - Triggerbot
    - Triggerbot Delay
    - ESP
    - ESP Boxes
    - ESP Names
    - Tracers

    MOVEMENT
    - Flight
    - Flight Speed
    - Speed
    - Speed Value
    - Noclip

    +1
    - Autofarm
    - Starting Stage
    - Stage Delay
]]

--------------------------------------------------
-- RAYFIELD LOADER
--------------------------------------------------

local function loadRayfield()

    local success, result = pcall(function()

        local source = game:HttpGet(
            "https://sirius.menu/rayfield"
        )

        if not source or source == "" then
            error("HttpGet returned empty source")
        end

        local fn, compileError =
            loadstring(source)

        if not fn then
            error(
                "loadstring compile error: "
                .. tostring(compileError)
            )
        end

        return fn()

    end)

    if not success then

        warn(
            "[Rayfield Loader Error] "
            .. tostring(result)
        )

        return nil
    end

    return result

end

local Rayfield = loadRayfield()

if not Rayfield then
    warn("Rayfield could not be loaded.")
    return
end

--------------------------------------------------
-- SERVICES
--------------------------------------------------

local Players =
    game:GetService("Players")

local RunService =
    game:GetService("RunService")

local UserInputService =
    game:GetService("UserInputService")

local PathfindingService =
    game:GetService("PathfindingService")

local LocalPlayer =
    Players.LocalPlayer

local Camera =
    workspace.CurrentCamera

if not LocalPlayer then
    warn("LocalPlayer not found.")
    return
end

--------------------------------------------------
-- WINDOW
--------------------------------------------------

local Window

local WindowSuccess, WindowError =
    pcall(function()

        Window = Rayfield:CreateWindow({

            Name = "Aimbot & ESP",

            LoadingTitle =
                "Aimbot & ESP",

            LoadingSubtitle =
                "Own Game Testing",

            ConfigurationSaving = {
                Enabled = true,
                FolderName = nil,
                FileName = "AimbotESP"
            },

            Discord = {
                Enabled = false,
                Invite = "",
                RememberJoins = true
            },

            KeySystem = false

        })

    end)

if not WindowSuccess then

    warn(
        "[Window Error] "
        .. tostring(WindowError)
    )

    return

end

--------------------------------------------------
-- TABS
--------------------------------------------------

local MainTab =
    Window:CreateTab(
        "Main",
        4483362458
    )

local MovementTab =
    Window:CreateTab(
        "Movement",
        4483362458
    )

local PlusOneTab =
    Window:CreateTab(
        "+1",
        4483362458
    )

--------------------------------------------------
-- SETTINGS
--------------------------------------------------

local AimbotEnabled = false
local AimbotPart = "Head"

local SmoothAimbot = false
local Smoothness = 0.5

local FOVCircleEnabled = false
local FOVRadius = 150

local WallCheck = false
local TeamCheck = false

local ESPEnabled = false
local ESPBoxes = true
local ESPNames = true
local TracersEnabled = false

local TriggerbotEnabled = false
local TriggerbotDelay = 0.05
local TriggerbotLastShot = 0

--------------------------------------------------
-- MOVEMENT SETTINGS
--------------------------------------------------

local FlightEnabled = false
local FlightSpeed = 50

local SpeedEnabled = false
local SpeedValue = 30

local NoclipEnabled = false

local FlightConnection = nil
local NoclipConnection = nil

local FlightAttachment = nil
local FlightVelocity = nil

local NoclipOriginal = {}

--------------------------------------------------
-- +1 SETTINGS
--------------------------------------------------

local AutoFarmEnabled = false
local SelectedStage = 1
local StageDelay = 1

local AutoFarmRunning = false

--------------------------------------------------
-- DRAWING
--------------------------------------------------

local DrawingLib = nil
local DrawingAvailable = false

pcall(function()

    if Drawing then
        DrawingLib = Drawing
        DrawingAvailable = true
    end

end)

local FOVCircle = nil

if DrawingAvailable then

    pcall(function()

        FOVCircle =
            DrawingLib.new("Circle")

        FOVCircle.Visible = false
        FOVCircle.Filled = false
        FOVCircle.Thickness = 2

        FOVCircle.Color =
            Color3.fromRGB(
                255,
                255,
                255
            )

        FOVCircle.Radius =
            FOVRadius

    end)

end

local function UpdateFOVCircle()

    if not FOVCircle then
        return
    end

    local viewport =
        Camera.ViewportSize

    FOVCircle.Visible =
        FOVCircleEnabled

    FOVCircle.Radius =
        FOVRadius

    FOVCircle.Position =
        Vector2.new(
            viewport.X / 2,
            viewport.Y / 2
        )

end

--------------------------------------------------
-- DRAWING CACHE
--------------------------------------------------

local ESPCache = {}
local TracerCache = {}

local function RemoveDrawing(object)

    if not object then
        return
    end

    pcall(function()
        object:Remove()
    end)

    pcall(function()
        object:Destroy()
    end)

end

local function ClearESP()

    for _, object in ipairs(
        ESPCache
    ) do

        RemoveDrawing(object)

    end

    table.clear(
        ESPCache
    )

end

local function ClearTracers()

    for _, object in ipairs(
        TracerCache
    ) do

        RemoveDrawing(object)

    end

    table.clear(
        TracerCache
    )

end

--------------------------------------------------
-- TEAM CHECK
--------------------------------------------------

local function IsEnemy(player)

    if not player then
        return false
    end

    if player == LocalPlayer then
        return false
    end

    if not TeamCheck then
        return true
    end

    return player.Team ~= LocalPlayer.Team

end

--------------------------------------------------
-- WALL CHECK
--------------------------------------------------

local function IsVisible(part)

    if not WallCheck then
        return true
    end

    if not part then
        return false
    end

    local character =
        LocalPlayer.Character

    if not character then
        return false
    end

    local origin =
        Camera.CFrame.Position

    local direction =
        part.Position - origin

    local params =
        RaycastParams.new()

    params.FilterType =
        Enum.RaycastFilterType.Exclude

    params.FilterDescendantsInstances = {
        character
    }

    params.IgnoreWater = true

    local result =
        workspace:Raycast(
            origin,
            direction,
            params
        )

    if not result then
        return true
    end

    return result.Instance:IsDescendantOf(
        part.Parent
    )

end

--------------------------------------------------
-- GET TARGET
--------------------------------------------------

local function GetNearestTarget()

    local viewport =
        Camera.ViewportSize

    local center =
        Vector2.new(
            viewport.X / 2,
            viewport.Y / 2
        )

    local closest = nil
    local closestDistance =
        FOVRadius

    for _, player in ipairs(
        Players:GetPlayers()
    ) do

        if IsEnemy(player)
            and player.Character
        then

            local character =
                player.Character

            local humanoid =
                character:FindFirstChildOfClass(
                    "Humanoid"
                )

            if humanoid
                and humanoid.Health > 0
            then

                local part =
                    character:FindFirstChild(
                        AimbotPart
                    )

                if not part then

                    part =
                        character:FindFirstChild(
                            "HumanoidRootPart"
                        )

                end

                if part then

                    local screen,
                        visible =
                        Camera:
                        WorldToViewportPoint(
                            part.Position
                        )

                    if visible then

                        local distance =
                            (
                                Vector2.new(
                                    screen.X,
                                    screen.Y
                                ) - center
                            ).Magnitude

                        if distance <= FOVRadius
                            and distance < closestDistance
                            and IsVisible(part)
                        then

                            closest =
                                part

                            closestDistance =
                                distance

                        end
                    end
                end
            end
        end
    end

    return closest

end

--------------------------------------------------
-- AIMBOT
--------------------------------------------------

local function AimbotLoop()

    if not AimbotEnabled then
        return
    end

    local target =
        GetNearestTarget()

    if not target then
        return
    end

    local current =
        Camera.CFrame

    local desired =
        CFrame.lookAt(
            current.Position,
            target.Position
        )

    if SmoothAimbot then

        Camera.CFrame =
            current:Lerp(
                desired,
                math.clamp(
                    Smoothness,
                    0,
                    1
                )
            )

    else

        Camera.CFrame =
            desired

    end

end

--------------------------------------------------
-- TRIGGERBOT
--------------------------------------------------

local function GetCrosshairTarget()

    local viewport =
        Camera.ViewportSize

    local ray =
        Camera:ViewportPointToRay(
            viewport.X / 2,
            viewport.Y / 2
        )

    local params =
        RaycastParams.new()

    params.FilterType =
        Enum.RaycastFilterType.Exclude

    params.FilterDescendantsInstances = {
        LocalPlayer.Character
    }

    params.IgnoreWater = true

    local result =
        workspace:Raycast(
            ray.Origin,
            ray.Direction * 1000,
            params
        )

    if not result then
        return nil
    end

    local model =
        result.Instance:
        FindFirstAncestorOfClass(
            "Model"
        )

    if not model then
        return nil
    end

    local player =
        Players:GetPlayerFromCharacter(
            model
        )

    if not player then
        return nil
    end

    if not IsEnemy(player) then
        return nil
    end

    local humanoid =
        model:FindFirstChildOfClass(
            "Humanoid"
        )

    if not humanoid
        or humanoid.Health <= 0
    then
        return nil
    end

    if not IsVisible(
        result.Instance
    ) then
        return nil
    end

    return player

end

local function TriggerbotLoop()

    if not TriggerbotEnabled then
        return
    end

    local now =
        os.clock()

    if now - TriggerbotLastShot <
        TriggerbotDelay
    then
        return
    end

    local target =
        GetCrosshairTarget()

    if not target then
        return
    end

    local character =
        LocalPlayer.Character

    if not character then
        return
    end

    local tool =
        character:FindFirstChildOfClass(
            "Tool"
        )

    if not tool then
        return
    end

    pcall(function()
        tool:Activate()
    end)

    TriggerbotLastShot =
        now

end

--------------------------------------------------
-- ESP
--------------------------------------------------

local function UpdateESP()

    if not DrawingAvailable then
        return
    end

    ClearESP()

    if not ESPEnabled then
        return
    end

    for _, player in ipairs(
        Players:GetPlayers()
    ) do

        if IsEnemy(player)
            and player.Character
        then

            local character =
                player.Character

            local root =
                character:FindFirstChild(
                    "HumanoidRootPart"
                )

            local head =
                character:FindFirstChild(
                    "Head"
                )

            local humanoid =
                character:FindFirstChildOfClass(
                    "Humanoid"
                )

            if root
                and head
                and humanoid
                and humanoid.Health > 0
            then

                local rootScreen,
                    rootVisible =
                    Camera:
                    WorldToViewportPoint(
                        root.Position
                    )

                local headScreen,
                    headVisible =
                    Camera:
                    WorldToViewportPoint(
                        head.Position +
                        Vector3.new(
                            0,
                            0.5,
                            0
                        )
                    )

                if rootVisible
                    and headVisible
                then

                    local height =
                        math.abs(
                            rootScreen.Y -
                            headScreen.Y
                        ) * 1.5

                    local width =
                        height / 2

                    if ESPBoxes then

                        local box =
                            DrawingLib.new(
                                "Square"
                            )

                        box.Visible = true
                        box.Filled = false
                        box.Thickness = 1

                        box.Color =
                            Color3.fromRGB(
                                255,
                                0,
                                0
                            )

                        box.Size =
                            Vector2.new(
                                width,
                                height
                            )

                        box.Position =
                            Vector2.new(
                                headScreen.X -
                                width / 2,
                                headScreen.Y
                            )

                        table.insert(
                            ESPCache,
                            box
                        )

                    end

                    if ESPNames then

                        local text =
                            DrawingLib.new(
                                "Text"
                            )

                        text.Visible = true

                        text.Text =
                            player.Name

                        text.Size = 13
                        text.Center = true
                        text.Outline = true

                        text.Color =
                            Color3.fromRGB(
                                255,
                                255,
                                255
                            )

                        text.Position =
                            Vector2.new(
                                headScreen.X,
                                headScreen.Y - 15
                            )

                        table.insert(
                            ESPCache,
                            text
                        )

                    end
                end
            end
        end
    end

end

--------------------------------------------------
-- TRACERS
--------------------------------------------------

local function UpdateTracers()

    if not DrawingAvailable then
        return
    end

    ClearTracers()

    if not TracersEnabled then
        return
    end

    local character =
        LocalPlayer.Character

    if not character then
        return
    end

    local root =
        character:FindFirstChild(
            "HumanoidRootPart"
        )

    if not root then
        return
    end

    local localScreen,
        localVisible =
        Camera:
        WorldToViewportPoint(
            root.Position
        )

    if not localVisible then
        return
    end

    for _, player in ipairs(
        Players:GetPlayers()
    ) do

        if IsEnemy(player)
            and player.Character
        then

            local targetRoot =
                player.Character:
                FindFirstChild(
                    "HumanoidRootPart"
                )

            local humanoid =
                player.Character:
                FindFirstChildOfClass(
                    "Humanoid"
                )

            if targetRoot
                and humanoid
                and humanoid.Health > 0
            then

                local targetScreen,
                    visible =
                    Camera:
                    WorldToViewportPoint(
                        targetRoot.Position
                    )

                if visible then

                    local line =
                        DrawingLib.new(
                            "Line"
                        )

                    line.Visible = true
                    line.Thickness = 1

                    line.Color =
                        Color3.fromRGB(
                            255,
                            255,
                            255
                        )

                    line.From =
                        Vector2.new(
                            localScreen.X,
                            localScreen.Y
                        )

                    line.To =
                        Vector2.new(
                            targetScreen.X,
                            targetScreen.Y
                        )

                    table.insert(
                        TracerCache,
                        line
                    )

                end
            end
        end
    end

end

--------------------------------------------------
-- FLIGHT
--------------------------------------------------

local function StopFlight()

    if FlightConnection then
        FlightConnection:Disconnect()
        FlightConnection = nil
    end

    if FlightVelocity then
        FlightVelocity:Destroy()
        FlightVelocity = nil
    end

    if FlightAttachment then
        FlightAttachment:Destroy()
        FlightAttachment = nil
    end

    local character =
        LocalPlayer.Character

    if character then

        local humanoid =
            character:FindFirstChildOfClass(
                "Humanoid"
            )

        if humanoid then
            humanoid.AutoRotate = true
        end

    end

end

local function StartFlight()

    StopFlight()

    local character =
        LocalPlayer.Character

    if not character then
        return
    end

    local root =
        character:FindFirstChild(
            "HumanoidRootPart"
        )

    local humanoid =
        character:FindFirstChildOfClass(
            "Humanoid"
        )

    if not root or not humanoid then
        return
    end

    humanoid.AutoRotate = false

    FlightAttachment =
        Instance.new("Attachment")

    FlightAttachment.Parent =
        root

    FlightVelocity =
        Instance.new("LinearVelocity")

    FlightVelocity.Attachment0 =
        FlightAttachment

    FlightVelocity.MaxForce =
        math.huge

    FlightVelocity.VectorVelocity =
        Vector3.zero

    FlightVelocity.Parent =
        root

    FlightConnection =
        RunService.RenderStepped:
        Connect(function()

            if not FlightEnabled then
                return
            end

            local current =
                LocalPlayer.Character

            if not current then
                return
            end

            local currentRoot =
                current:FindFirstChild(
                    "HumanoidRootPart"
                )

            local currentHumanoid =
                current:FindFirstChildOfClass(
                    "Humanoid"
                )

            if not currentRoot
                or not currentHumanoid
            then
                return
            end

            local direction =
                currentHumanoid.MoveDirection

            if direction.Magnitude > 0 then

                direction =
                    direction.Unit *
                    FlightSpeed

            else

                direction =
                    Vector3.zero

            end

            local vertical = 0

            if UserInputService:IsKeyDown(
                Enum.KeyCode.Space
            ) then

                vertical = 1

            elseif UserInputService:IsKeyDown(
                Enum.KeyCode.LeftControl
            ) then

                vertical = -1

            end

            direction +=
                Vector3.new(
                    0,
                    vertical *
                    FlightSpeed,
                    0
                )

            if FlightVelocity then

                FlightVelocity.VectorVelocity =
                    direction

            end

            currentRoot.AssemblyAngularVelocity =
                Vector3.zero

        end)

end

--------------------------------------------------
-- SPEED
--------------------------------------------------

local function UpdateSpeed()

    local character =
        LocalPlayer.Character

    if not character then
        return
    end

    local humanoid =
        character:FindFirstChildOfClass(
            "Humanoid"
        )

    if not humanoid then
        return
    end

    if SpeedEnabled then

        humanoid.WalkSpeed =
            SpeedValue

    else

        humanoid.WalkSpeed =
            16

    end

end

--------------------------------------------------
-- NOCLIP
--------------------------------------------------

local function RestoreNoclip()

    for part, original in pairs(
        NoclipOriginal
    ) do

        if part
            and part.Parent
        then

            part.CanCollide =
                original

        end

    end

    table.clear(
        NoclipOriginal
    )

end

local function StopNoclip()

    if NoclipConnection then

        NoclipConnection:Disconnect()
        NoclipConnection = nil

    end

    RestoreNoclip()

end

local function StartNoclip()

    StopNoclip()

    NoclipConnection =
        RunService.Stepped:
        Connect(function()

            if not NoclipEnabled then
                return
            end

            local character =
                LocalPlayer.Character

            if not character then
                return
            end

            for _, object in ipairs(
                character:GetDescendants()
            ) do

                if object:IsA(
                    "BasePart"
                ) then

                    if NoclipOriginal[
                        object
                    ] == nil
                    then

                        NoclipOriginal[
                            object
                        ] =
                            object.CanCollide

                    end

                    object.CanCollide =
                        false

                end

            end

        end)

end

--------------------------------------------------
-- +1 STAGE DETECTION
--------------------------------------------------

local function ExtractStageNumber(name)

    if not name then
        return nil
    end

    local lower =
        string.lower(name)

    local number =
        string.match(
            lower,
            "stage%s*(%d+)"
        )

    if number then
        return tonumber(number)
    end

    number =
        string.match(
            lower,
            "room%s*(%d+)"
        )

    if number then
        return tonumber(number)
    end

    return nil

end

--------------------------------------------------
-- FIND STAGE CONTAINER
--------------------------------------------------

local function FindStage(stageNumber)

    local exactNames = {

        "Stage " .. stageNumber,
        "Stage" .. stageNumber,

        "stage " .. stageNumber,
        "stage" .. stageNumber,

        "Room " .. stageNumber,
        "Room" .. stageNumber,

        "room " .. stageNumber,
        "room" .. stageNumber

    }

    for _, object in ipairs(
        workspace:GetDescendants()
    ) do

        if object:IsA("Model")
            or object:IsA("Folder")
        then

            for _, name in ipairs(
                exactNames
            ) do

                if object.Name == name then
                    return object
                end

            end

            local number =
                ExtractStageNumber(
                    object.Name
                )

            if number ==
                stageNumber
            then

                return object

            end

        end
    end

    return nil

end

--------------------------------------------------
-- FIND YELLOW PAD
--------------------------------------------------

local function IsYellowPart(part)

    if not part:IsA("BasePart") then
        return false
    end

    local color =
        part.Color

    return color.R >= 0.75
        and color.G >= 0.65
        and color.B <= 0.45

end

local function IsPlatformName(name)

    local lower =
        string.lower(name)

    return string.find(
        lower,
        "yellow"
    )
    or string.find(
        lower,
        "win"
    )
    or string.find(
        lower,
        "goal"
    )
    or string.find(
        lower,
        "finish"
    )
    or string.find(
        lower,
        "trophy"
    )
    or string.find(
        lower,
        "pad"
    )

end

local function FindYellowPad(stage)

    if not stage then
        return nil
    end

    -- First: known names
    for _, object in ipairs(
        stage:GetDescendants()
    ) do

        if object:IsA(
            "BasePart"
        )
        and IsPlatformName(
            object.Name
        )
        and IsYellowPart(
            object
        )
        then

            return object

        end

    end

    -- Second: any yellow part
    local candidates = {}

    for _, object in ipairs(
        stage:GetDescendants()
    ) do

        if object:IsA(
            "BasePart"
        )
        and IsYellowPart(
            object
        )
        then

            table.insert(
                candidates,
                object
            )

        end

    end

    if #candidates == 0 then
        return nil
    end

    -- Prefer larger yellow parts
    table.sort(
        candidates,
        function(a, b)

            local aSize =
                a.Size.X *
                a.Size.Y *
                a.Size.Z

            local bSize =
                b.Size.X *
                b.Size.Y *
                b.Size.Z

            return aSize > bSize

        end
    )

    return candidates[1]

end

--------------------------------------------------
-- FIND START
--------------------------------------------------

local function FindStageStart(stage)

    if not stage then
        return nil
    end

    local names = {

        "Start",
        "StartPoint",
        "Spawn",
        "SpawnPoint",
        "Entrance",
        "Entry",
        "Begin",
        "Beginning"

    }

    for _, wanted in ipairs(
        names
    ) do

        local object =
            stage:FindFirstChild(
                wanted,
                true
            )

        if object
            and object:IsA(
                "BasePart"
            )
        then

            return object

        end

    end

    return nil

end

--------------------------------------------------
-- MOVE USING PATHFINDING
--------------------------------------------------

local function WalkToPosition(position)

    local character =
        LocalPlayer.Character

    if not character then
        return false
    end

    local humanoid =
        character:FindFirstChildOfClass(
            "Humanoid"
        )

    local root =
        character:FindFirstChild(
            "HumanoidRootPart"
        )

    if not humanoid
        or not root
    then
        return false
    end

    local path =
        PathfindingService:CreatePath({

            AgentRadius = 2,

            AgentHeight = 5,

            AgentCanJump = true,

            AgentCanClimb = true,

            WaypointSpacing = 4

        })

    local success =
        pcall(function()

            path:ComputeAsync(
                root.Position,
                position
            )

        end)

    if not success then
        return false
    end

    if path.Status
        ~= Enum.PathStatus.Success
    then

        return false

    end

    local waypoints =
        path:GetWaypoints()

    for _, waypoint in ipairs(
        waypoints
    ) do

        if not AutoFarmEnabled then
            return false
        end

        if waypoint.Action
            == Enum.PathWaypointAction.Jump
        then

            humanoid.Jump =
                true

        end

        humanoid:MoveTo(
            waypoint.Position
        )

        local reached =
            humanoid.MoveToFinished:
            Wait()

        if not reached then
            return false
        end

    end

    return true

end

--------------------------------------------------
-- MOVE TO STAGE
--------------------------------------------------

local function GoToStage(stage)

    if not stage then
        return false
    end

    local start =
        FindStageStart(
            stage
        )

    if start then

        local targetPosition =
            start.Position +
            Vector3.new(
                0,
                3,
                0
            )

        return WalkToPosition(
            targetPosition
        )

    end

    return true

end

--------------------------------------------------
-- AUTOFARM
--------------------------------------------------

local function StartAutoFarm()

    if AutoFarmRunning then
        return
    end

    AutoFarmRunning =
        true

    task.spawn(function()

        local currentStage =
            SelectedStage

        while AutoFarmEnabled do

            local stage =
                FindStage(
                    currentStage
                )

            if not stage then

                Rayfield:Notify({

                    Title =
                        "Autofarm",

                    Content =
                        "Stage "
                        .. tostring(
                            currentStage
                        )
                        .. " could not be found.",

                    Duration = 3

                })

                break

            end

            Rayfield:Notify({

                Title =
                    "Autofarm",

                Content =
                    "Going to Stage "
                    .. tostring(
                        currentStage
                    ),

                Duration = 1

            })

            --------------------------------------------------
            -- Stage start
            --------------------------------------------------

            local startSuccess =
                GoToStage(
                    stage
                )

            if not startSuccess then

                task.wait(0.5)

                continue

            end

            --------------------------------------------------
            -- Yellow pad
            --------------------------------------------------

            local yellowPad =
                FindYellowPad(
                    stage
                )

            if not yellowPad then

                Rayfield:Notify({

                    Title =
                        "Autofarm",

                    Content =
                        "No yellow Win Pad found in Stage "
                        .. tostring(
                            currentStage
                        ),

                    Duration = 3

                })

                task.wait(1)

                continue

            end

            --------------------------------------------------
            -- Walk to yellow pad
            --------------------------------------------------

            local reached =
                WalkToPosition(
                    yellowPad.Position +
                    Vector3.new(
                        0,
                        3,
                        0
                    )
                )

            if reached then

                Rayfield:Notify({

                    Title =
                        "Autofarm",

                    Content =
                        "Completed Stage "
                        .. tostring(
                            currentStage
                        ),

                    Duration = 1

                })

                task.wait(
                    StageDelay
                )

                currentStage += 1

            else

                task.wait(0.5)

            end

        end

        AutoFarmRunning =
            false

    end)

end

local function StopAutoFarm()

    AutoFarmEnabled =
        false

end

--------------------------------------------------
-- MAIN UI
--------------------------------------------------

pcall(function()

    MainTab:CreateToggle({

        Name =
            "Aimbot",

        CurrentValue =
            false,

        Flag =
            "Aimbot",

        Callback =
            function(value)

                AimbotEnabled =
                    value

            end

    })

    MainTab:CreateDropdown({

        Name =
            "Aimbot Part",

        Options = {

            "Head",
            "HumanoidRootPart",
            "Torso",
            "LeftArm",
            "RightArm",
            "LeftLeg",
            "RightLeg"

        },

        CurrentOption = {
            "Head"
        },

        MultipleOptions =
            false,

        Flag =
            "AimbotPart",

        Callback =
            function(option)

                if type(option)
                    == "table"
                then

                    AimbotPart =
                        option[1]

                else

                    AimbotPart =
                        option

                end

            end

    })

    MainTab:CreateToggle({

        Name =
            "Smooth Aimbot",

        CurrentValue =
            false,

        Flag =
            "SmoothAimbot",

        Callback =
            function(value)

                SmoothAimbot =
                    value

            end

    })

    MainTab:CreateSlider({

        Name =
            "Smoothness",

        Range = {
            0,
            1
        },

        Increment =
            0.05,

        CurrentValue =
            0.5,

        Flag =
            "Smoothness",

        Callback =
            function(value)

                Smoothness =
                    value

            end

    })

    MainTab:CreateToggle({

        Name =
            "FOV Circle",

        CurrentValue =
            false,

        Flag =
            "FOVCircle",

        Callback =
            function(value)

                FOVCircleEnabled =
                    value

                UpdateFOVCircle()

            end

    })

    MainTab:CreateSlider({

        Name =
            "FOV Radius",

        Range = {
            50,
            500
        },

        Increment =
            10,

        Suffix =
            " px",

        CurrentValue =
            150,

        Flag =
            "FOVRadius",

        Callback =
            function(value)

                FOVRadius =
                    value

                UpdateFOVCircle()

            end

    })

    MainTab:CreateToggle({

        Name =
            "Wall Check",

        CurrentValue =
            false,

        Flag =
            "WallCheck",

        Callback =
            function(value)

                WallCheck =
                    value

            end

    })

    MainTab:CreateToggle({

        Name =
            "Team Check",

        CurrentValue =
            false,

        Flag =
            "TeamCheck",

        Callback =
            function(value)

                TeamCheck =
                    value

            end

    })

    MainTab:CreateToggle({

        Name =
            "Triggerbot",

        CurrentValue =
            false,

        Flag =
            "Triggerbot",

        Callback =
            function(value)

                TriggerbotEnabled =
                    value

            end

    })

    MainTab:CreateSlider({

        Name =
            "Triggerbot Delay",

        Range = {
            0.01,
            0.5
        },

        Increment =
            0.01,

        Suffix =
            " sec",

        CurrentValue =
            0.05,

        Flag =
            "TriggerbotDelay",

        Callback =
            function(value)

                TriggerbotDelay =
                    value

            end

    })

    MainTab:CreateToggle({

        Name =
            "ESP",

        CurrentValue =
            false,

        Flag =
            "ESP",

        Callback =
            function(value)

                ESPEnabled =
                    value

                if not value then
                    ClearESP()
                end

            end

    })

    MainTab:CreateToggle({

        Name =
            "ESP Boxes",

        CurrentValue =
            true,

        Flag =
            "ESPBoxes",

        Callback =
            function(value)

                ESPBoxes =
                    value

            end

    })

    MainTab:CreateToggle({

        Name =
            "ESP Names",

        CurrentValue =
            true,

        Flag =
            "ESPNames",

        Callback =
            function(value)

                ESPNames =
                    value

            end

    })

    MainTab:CreateToggle({

        Name =
            "Tracers",

        CurrentValue =
            false,

        Flag =
            "Tracers",

        Callback =
            function(value)

                TracersEnabled =
                    value

                if not value then
                    ClearTracers()
                end

            end

    })

end)

--------------------------------------------------
-- MOVEMENT UI
--------------------------------------------------

pcall(function()

    MovementTab:CreateToggle({

        Name =
            "Flight",

        CurrentValue =
            false,

        Flag =
            "Flight",

        Callback =
            function(value)

                FlightEnabled =
                    value

                if value then
                    StartFlight()
                else
                    StopFlight()
                end

            end

    })

    MovementTab:CreateSlider({

        Name =
            "Flight Speed",

        Range = {
            10,
            200
        },

        Increment =
            5,

        Suffix =
            " studs/s",

        CurrentValue =
            50,

        Flag =
            "FlightSpeed",

        Callback =
            function(value)

                FlightSpeed =
                    value

            end

    })

    MovementTab:CreateToggle({

        Name =
            "Speed",

        CurrentValue =
            false,

        Flag =
            "Speed",

        Callback =
            function(value)

                SpeedEnabled =
                    value

                UpdateSpeed()

            end

    })

    MovementTab:CreateSlider({

        Name =
            "Speed Value",

        Range = {
            16,
            200
        },

        Increment =
            1,

        Suffix =
            " studs/s",

        CurrentValue =
            30,

        Flag =
            "SpeedValue",

        Callback =
            function(value)

                SpeedValue =
                    value

                if SpeedEnabled then
                    UpdateSpeed()
                end

            end

    })

    MovementTab:CreateToggle({

        Name =
            "Noclip",

        CurrentValue =
            false,

        Flag =
            "Noclip",

        Callback =
            function(value)

                NoclipEnabled =
                    value

                if value then
                    StartNoclip()
                else
                    StopNoclip()
                end

            end

    })

end)

--------------------------------------------------
-- +1 UI
--------------------------------------------------

pcall(function()

    PlusOneTab:CreateToggle({

        Name =
            "Autofarm",

        CurrentValue =
            false,

        Flag =
            "Autofarm",

        Callback =
            function(value)

                AutoFarmEnabled =
                    value

                if value then

                    StartAutoFarm()

                else

                    StopAutoFarm()

                end

            end

    })

    PlusOneTab:CreateDropdown({

        Name =
            "Starting Stage",

        Options = {

            "Stage 1",
            "Stage 2",
            "Stage 3",
            "Stage 4",
            "Stage 5",

            "Stage 6",
            "Stage 7",
            "Stage 8",
            "Stage 9",
            "Stage 10",

            "Stage 11",
            "Stage 12",
            "Stage 13",
            "Stage 14",
            "Stage 15",

            "Stage 16",
            "Stage 17",
            "Stage 18",
            "Stage 19",
            "Stage 20"

        },

        CurrentOption = {
            "Stage 1"
        },

        MultipleOptions =
            false,

        Flag =
            "StartingStage",

        Callback =
            function(option)

                local selected =
                    option

                if type(option)
                    == "table"
                then

                    selected =
                        option[1]

                end

                local number =
                    tonumber(
                        string.match(
                            selected,
                            "%d+"
                        )
                    )

                if number then

                    SelectedStage =
                        number

                end

            end

    })

    PlusOneTab:CreateSlider({

        Name =
            "Stage Delay",

        Range = {
            0.1,
            5
        },

        Increment =
            0.1,

        Suffix =
            " sec",

        CurrentValue =
            1,

        Flag =
            "StageDelay",

        Callback =
            function(value)

                StageDelay =
                    value

            end

    })

end)

--------------------------------------------------
-- MAIN LOOP
--------------------------------------------------

RunService.RenderStepped:
Connect(function()

    pcall(
        AimbotLoop
    )

    pcall(
        TriggerbotLoop
    )

    pcall(
        UpdateFOVCircle
    )

    if ESPEnabled then
        pcall(
            UpdateESP
        )
    end

    if TracersEnabled then
        pcall(
            UpdateTracers
        )
    end

end)

--------------------------------------------------
-- RESPAWN
--------------------------------------------------

LocalPlayer.CharacterAdded:
Connect(function()

    task.wait(
        0.5
    )

    ClearESP()
    ClearTracers()

    if FlightEnabled then
        pcall(
            StartFlight
        )
    end

    if NoclipEnabled then
        pcall(
            StartNoclip
        )
    end

    if SpeedEnabled then
        pcall(
            UpdateSpeed
        )
    end

    pcall(
        UpdateFOVCircle
    )

end)

--------------------------------------------------
-- LOAD CONFIG
--------------------------------------------------

pcall(function()

    Rayfield:
        LoadConfiguration()

end)

--------------------------------------------------
-- READY
--------------------------------------------------

Rayfield:Notify({

    Title =
        "Loaded",

    Content =
        "Main + Movement + +1 ready.",

    Duration =
        4

})

print(
    "[Rayfield] Script loaded successfully."
)

Features & Information

# Aimbot & ESP A powerful Roblox testing menu built with Rayfield UI, featuring combat, visual, movement, and farming modules. ## Main **Aimbot** Automatically aims toward the nearest valid target inside the configured FOV. **Aimbot Part** Choose which body part the aimbot targets: Head, HumanoidRootPart, Torso, LeftArm, RightArm, LeftLeg, RightLeg. **Smooth Aimbot** Makes the camera move smoothly toward the target instead of instantly snapping. **Smoothness** Controls how quickly the aimbot moves toward the target. **FOV Circle** Displays a circle around the center of the screen for the configured aimbot range. **FOV Radius** Adjusts the size of the FOV circle. **Wall Check** Only targets players that are visible and not behind obstacles. **Team Check** Ignores players who are on the same team. **Triggerbot** Automatically activates the equipped Tool when an enemy is directly under the crosshair. **Triggerbot Delay** Controls the delay between triggerbot activations. **ESP** Displays additional information about other players. **ESP Boxes** Draws boxes around players. **ESP Names** Displays player names above characters. **Tracers** Draws lines from your character toward other players. ## Movement **Flight** Allows the player to freely move through the air. **Flight Speed** Controls the movement speed while flying. **Speed** Enables custom movement speed. **Speed Value** Controls the player's movement speed. **Noclip** Disables character collisions, allowing movement through solid objects. ## +1 **Autofarm** Automatically progresses through stages and searches for the yellow platform or goal. **Starting Stage** Selects which stage the autofarm should start from. **Stage Delay** Controls the delay between stages. ## UI **Rayfield Interface** Uses a Rayfield-based interface with separate Main, Movement, and +1 tabs. **Configuration Saving** Saves the configured settings. **Loading Notification** Displays a notification when the script has successfully loaded.
#free#keyless#aimbot#silentaim#hub

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts