brathuo menu v9
Key RequiredUniversal

brathuo menu v9

Universal Scriptbrathuobrathuo 447 views 121 executesUpdated Feb 4, 2026
0.0/ 5(1 votes)
010% Positive
Lua Script•1060 lines (35672 chars)
-- brathuo menu v9 - by brathuo
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")
local MarketplaceService = game:GetService("MarketplaceService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()

-- Initialize
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

-- Get game name safely
local gameName = "Unknown Game"
local success, result = pcall(function()
    return MarketplaceService:GetProductInfo(game.PlaceId)
end)
if success then
    gameName = result.Name
else
    gameName = "Game ID: " .. game.PlaceId
end

-- States
local states = {
    immortality = {active = false, connections = {}},
    noclip = {active = false, connection = nil},
    infiniteJump = {active = false, connection = nil},
    flight = {active = false, connection = nil, bodyVelocity = nil, speed = 50},
    fullbright = {active = false, original = {}},
    esp = {active = false, connections = {}, folders = {}, loops = {}},
    aimbot = {active = false, connection = nil},
    triggerbot = {active = false, connection = nil, delay = 100},
    antiAFK = {active = false, connection = nil},
    nameESP = {active = false},
    healthESP = {active = false},
    boxESP = {active = false},
    itemESP = {active = false},
    noFog = {active = false, original = nil},
    showFOV = {active = true}
}

-- Aimbot settings
local aimbotSettings = {
    targetPart = "Head",
    maxDistance = 1000,
    smoothness = 0.2,
    wallCheck = true,
    requireMouseButton = false,
    fovSize = 100
}

-- Create GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "BrathuoMenu"
screenGui.Parent = game.CoreGui
screenGui.ResetOnSpawn = false

-- FOV Circle
local fovCircle = Instance.new("Frame")
fovCircle.Name = "FOVCircle"
fovCircle.Size = UDim2.new(0, aimbotSettings.fovSize * 2, 0, aimbotSettings.fovSize * 2)
fovCircle.Position = UDim2.new(0.5, -aimbotSettings.fovSize, 0.5, -aimbotSettings.fovSize)
fovCircle.BackgroundTransparency = 1
fovCircle.BorderSizePixel = 2
fovCircle.BorderColor3 = Color3.new(1, 0, 0)
fovCircle.Visible = states.showFOV.active
fovCircle.ZIndex = 100
fovCircle.Parent = screenGui

local circleCorner = Instance.new("UICorner")
circleCorner.CornerRadius = UDim.new(1, 0)
circleCorner.Parent = fovCircle

-- Main frame
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 500, 0, 550)
mainFrame.Position = UDim2.new(0.5, -250, 0.5, -275)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 40)
mainFrame.BackgroundTransparency = 0.1
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Visible = true
mainFrame.Parent = screenGui

-- Title
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 40)
title.Position = UDim2.new(0, 0, 0, 10)
title.BackgroundTransparency = 1
title.Text = "BRATHUO MENU v9"
title.TextColor3 = Color3.new(0, 1, 1)
title.Font = Enum.Font.GothamBold
title.TextSize = 24
title.TextStrokeColor3 = Color3.new(0, 0.3, 0.5)
title.TextStrokeTransparency = 0.6
title.ZIndex = 10
title.Parent = mainFrame

-- Game name display
local gameNameLabel = Instance.new("TextLabel")
gameNameLabel.Size = UDim2.new(1, 0, 0, 20)
gameNameLabel.Position = UDim2.new(0, 0, 0, 45)
gameNameLabel.BackgroundTransparency = 1
gameNameLabel.Text = gameName
gameNameLabel.TextColor3 = Color3.new(0.8, 0.9, 1)
gameNameLabel.Font = Enum.Font.Gotham
gameNameLabel.TextSize = 12
gameNameLabel.ZIndex = 10
gameNameLabel.Parent = mainFrame

-- Tabs
local tabs = {"Player", "Combat", "Movement", "Visuals", "ESP", "Misc"}
local tabFrames = {}

local tabButtonsFrame = Instance.new("Frame")
tabButtonsFrame.Size = UDim2.new(1, -20, 0, 35)
tabButtonsFrame.Position = UDim2.new(0, 10, 0, 75)
tabButtonsFrame.BackgroundTransparency = 1
tabButtonsFrame.Parent = mainFrame

local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, -20, 1, -125)
contentFrame.Position = UDim2.new(0, 10, 0, 120)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame

-- Create tabs
for i, tabName in ipairs(tabs) do
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(0.16, 0, 1, 0)
    button.Position = UDim2.new(0.166 * (i-1), 0, 0, 0)
    button.BackgroundColor3 = i == 1 and Color3.fromRGB(60, 60, 120) or Color3.fromRGB(40, 40, 80)
    button.BorderSizePixel = 0
    button.Text = tabName
    button.TextColor3 = Color3.new(1, 1, 1)
    button.Font = Enum.Font.GothamMedium
    button.TextSize = 12
    button.Parent = tabButtonsFrame
    
    local tabFrame = Instance.new("ScrollingFrame")
    tabFrame.Size = UDim2.new(1, 0, 1, 0)
    tabFrame.Position = UDim2.new(0, 0, 0, 0)
    tabFrame.BackgroundTransparency = 1
    tabFrame.Visible = (i == 1)
    tabFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
    tabFrame.ScrollBarThickness = 4
    tabFrame.ScrollBarImageColor3 = Color3.new(0.2, 0.5, 1)
    tabFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
    tabFrame.Parent = contentFrame
    
    local layout = Instance.new("UIListLayout")
    layout.Padding = UDim.new(0, 8)
    layout.SortOrder = Enum.SortOrder.LayoutOrder
    layout.Parent = tabFrame
    
    local padding = Instance.new("UIPadding")
    padding.PaddingTop = UDim.new(0, 5)
    padding.PaddingLeft = UDim.new(0, 5)
    padding.PaddingRight = UDim.new(0, 5)
    padding.Parent = tabFrame
    
    tabFrames[tabName] = tabFrame
    
    button.MouseButton1Click:Connect(function()
        for _, frame in pairs(tabFrames) do
            frame.Visible = false
        end
        tabFrame.Visible = true
        for _, btn in pairs(tabButtonsFrame:GetChildren()) do
            if btn:IsA("TextButton") then
                btn.BackgroundColor3 = Color3.fromRGB(40, 40, 80)
            end
        end
        button.BackgroundColor3 = Color3.fromRGB(60, 60, 120)
    end)
end

-- Helper functions
local function createToggle(parent, text, stateKey, callback)
    local toggleFrame = Instance.new("Frame")
    toggleFrame.Size = UDim2.new(1, 0, 0, 35)
    toggleFrame.BackgroundTransparency = 1
    toggleFrame.LayoutOrder = #parent:GetChildren()
    toggleFrame.Parent = parent
    
    local toggleButton = Instance.new("TextButton")
    toggleButton.Size = UDim2.new(1, -10, 1, 0)
    toggleButton.Position = UDim2.new(0, 5, 0, 0)
    toggleButton.BackgroundColor3 = Color3.fromRGB(50, 50, 90)
    toggleButton.BorderSizePixel = 2
    toggleButton.BorderColor3 = Color3.new(0.3, 0.3, 0.4)
    toggleButton.Text = ""
    toggleButton.Parent = toggleFrame
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0.7, 0, 1, 0)
    label.Position = UDim2.new(0, 10, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = text
    label.TextColor3 = Color3.new(1, 1, 1)
    label.Font = Enum.Font.GothamMedium
    label.TextSize = 14
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = toggleButton
    
    local status = Instance.new("Frame")
    status.Size = UDim2.new(0, 20, 0, 20)
    status.Position = UDim2.new(1, -30, 0.5, -10)
    status.BackgroundColor3 = states[stateKey].active and Color3.fromRGB(0, 255, 100) or Color3.fromRGB(255, 50, 50)
    status.BorderSizePixel = 2
    status.BorderColor3 = Color3.new(0.2, 0.2, 0.3)
    status.Parent = toggleButton
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(1, 0)
    corner.Parent = status
    
    toggleButton.MouseButton1Click:Connect(function()
        states[stateKey].active = not states[stateKey].active
        
        if states[stateKey].active then
            status.BackgroundColor3 = Color3.fromRGB(0, 255, 100)
        else
            status.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
        end
        
        callback(states[stateKey].active)
    end)
    
    return toggleFrame
end

local function createSlider(parent, text, minVal, maxVal, defaultVal, callback)
    local sliderFrame = Instance.new("Frame")
    sliderFrame.Size = UDim2.new(1, 0, 0, 60)
    sliderFrame.BackgroundTransparency = 1
    sliderFrame.LayoutOrder = #parent:GetChildren()
    sliderFrame.Parent = parent
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -10, 0, 20)
    label.Position = UDim2.new(0, 5, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = text .. ": " .. defaultVal
    label.TextColor3 = Color3.new(1, 1, 1)
    label.Font = Enum.Font.GothamMedium
    label.TextSize = 14
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = sliderFrame
    
    local sliderContainer = Instance.new("Frame")
    sliderContainer.Size = UDim2.new(1, -10, 0, 20)
    sliderContainer.Position = UDim2.new(0, 5, 0, 25)
    sliderContainer.BackgroundColor3 = Color3.fromRGB(40, 40, 70)
    sliderContainer.BorderSizePixel = 0
    sliderContainer.Parent = sliderFrame
    
    local sliderFill = Instance.new("Frame")
    sliderFill.Size = UDim2.new((defaultVal - minVal) / (maxVal - minVal), 0, 1, 0)
    sliderFill.Position = UDim2.new(0, 0, 0, 0)
    sliderFill.BackgroundColor3 = Color3.new(0, 0.6, 1)
    sliderFill.BorderSizePixel = 0
    sliderFill.Parent = sliderContainer
    
    local sliderButton = Instance.new("TextButton")
    sliderButton.Size = UDim2.new(0, 20, 1, 0)
    sliderButton.Position = UDim2.new(sliderFill.Size.X.Scale, -10, 0, 0)
    sliderButton.BackgroundColor3 = Color3.new(1, 1, 1)
    sliderButton.BorderSizePixel = 0
    sliderButton.Text = ""
    sliderButton.ZIndex = 2
    sliderButton.Parent = sliderContainer
    
    local dragging = false
    
    local function updateSlider(input)
        local xPos = math.clamp((input.Position.X - sliderContainer.AbsolutePosition.X) / sliderContainer.AbsoluteSize.X, 0, 1)
        local value = math.floor(minVal + (maxVal - minVal) * xPos)
        
        sliderFill.Size = UDim2.new(xPos, 0, 1, 0)
        sliderButton.Position = UDim2.new(xPos, -10, 0, 0)
        label.Text = text .. ": " .. value
        
        callback(value)
    end
    
    sliderButton.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
        end
    end)
    
    sliderButton.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = false
        end
    end)
    
    UserInputService.InputChanged:Connect(function(input)
        if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
            updateSlider(input)
        end
    end)
    
    return sliderFrame
end

-- FIXED: Update FOV Circle
local function updateFOVCircle()
    fovCircle.Size = UDim2.new(0, aimbotSettings.fovSize * 2, 0, aimbotSettings.fovSize * 2)
    fovCircle.Position = UDim2.new(0.5, -aimbotSettings.fovSize, 0.5, -aimbotSettings.fovSize)
    fovCircle.Visible = states.showFOV.active
end

-- FIXED: Immortality
local function setupImmortality()
    if not character or not humanoid then return end
    
    for _, conn in pairs(states.immortality.connections) do
        conn:Disconnect()
    end
    states.immortality.connections = {}
    
    local healthConn = humanoid.HealthChanged:Connect(function()
        if states.immortality.active and humanoid.Health < humanoid.MaxHealth then
            humanoid.Health = humanoid.MaxHealth
        end
    end)
    table.insert(states.immortality.connections, healthConn)
    
    if not character:FindFirstChild("BrathuoForceField") then
        local ff = Instance.new("ForceField")
        ff.Name = "BrathuoForceField"
        ff.Visible = false
        ff.Parent = character
    end
    
    local godLoop = RunService.Heartbeat:Connect(function()
        if not states.immortality.active or not character or not humanoid then return end
        
        pcall(function()
            humanoid.Health = humanoid.MaxHealth
            
            for _, part in pairs(character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = false
                    part.Material = EnumMaterial.ForceField
                end
            end
            
            if humanoid:GetState() == Enum.HumanoidStateType.Dead then
                humanoid:ChangeState(Enum.HumanoidStateType.Running)
            end
        end)
    end)
    table.insert(states.immortality.connections, godLoop)
end

-- FIXED: Noclip
local function setupNoclip()
    if states.noclip.connection then
        states.noclip.connection:Disconnect()
    end
    
    states.noclip.connection = RunService.Stepped:Connect(function()
        if not states.noclip.active or not character then return end
        
        for _, part in pairs(character:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = false
            end
        end
    end)
end

-- FIXED: Flight
local function setupFlight()
    if states.flight.bodyVelocity then
        states.flight.bodyVelocity:Destroy()
        states.flight.bodyVelocity = nil
    end
    
    if states.flight.connection then
        states.flight.connection:Disconnect()
    end
    
    local root = character:FindFirstChild("HumanoidRootPart")
    if not root then return end
    
    states.flight.bodyVelocity = Instance.new("BodyVelocity")
    states.flight.bodyVelocity.Name = "BrathuoFlight"
    states.flight.bodyVelocity.MaxForce = Vector3.new(40000, 40000, 40000)
    states.flight.bodyVelocity.Velocity = Vector3.new(0, 0, 0)
    states.flight.bodyVelocity.Parent = root
    
    states.flight.connection = RunService.Heartbeat:Connect(function()
        if not states.flight.active or not states.flight.bodyVelocity or not root then return end
        
        local direction = Vector3.new(0, 0, 0)
        local camera = Workspace.CurrentCamera
        
        if UserInputService:IsKeyDown(Enum.KeyCode.W) then
            direction = direction + camera.CFrame.LookVector
        end
        if UserInputService:IsKeyDown(Enum.KeyCode.S) then
            direction = direction - camera.CFrame.LookVector
        end
        if UserInputService:IsKeyDown(Enum.KeyCode.A) then
            direction = direction - camera.CFrame.RightVector
        end
        if UserInputService:IsKeyDown(Enum.KeyCode.D) then
            direction = direction + camera.CFrame.RightVector
        end
        if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
            direction = direction + Vector3.new(0, 1, 0)
        end
        if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
            direction = direction - Vector3.new(0, 1, 0)
        end
        
        if direction.Magnitude > 0 then
            states.flight.bodyVelocity.Velocity = direction.Unit * states.flight.speed
        else
            states.flight.bodyVelocity.Velocity = Vector3.new(0, 0, 0)
        end
    end)
end

-- FIXED: ESP System
local function createESP(playerInstance)
    if playerInstance == player then return end
    
    local espFolder = Instance.new("Folder")
    espFolder.Name = playerInstance.Name .. "_ESP"
    espFolder.Parent = screenGui
    states.esp.folders[playerInstance] = espFolder
    
    -- Box ESP
    if states.boxESP.active then
        local box = Instance.new("BoxHandleAdornment")
        box.Name = "Box"
        box.Adornee = playerInstance.Character and playerInstance.Character:FindFirstChild("HumanoidRootPart")
        box.AlwaysOnTop = true
        box.ZIndex = 10
        box.Size = Vector3.new(4, 6, 1)
        box.Color3 = Color3.new(1, 0, 0)
        box.Transparency = 0.3
        box.Visible = states.esp.active and states.boxESP.active
        box.Parent = espFolder
    end
    
    -- Name ESP (same size as health bar)
    if states.nameESP.active then
        local nameLabel = Instance.new("TextLabel")
        nameLabel.Name = "Name"
        nameLabel.Text = playerInstance.Name
        nameLabel.TextColor3 = Color3.new(1, 1, 1)
        nameLabel.BackgroundTransparency = 1
        nameLabel.TextSize = 14
        nameLabel.Font = Enum.Font.GothamBold
        nameLabel.Size = UDim2.new(0, 100, 0, 20) -- Same size as health bar
        nameLabel.Visible = states.esp.active and states.nameESP.active
        nameLabel.Parent = espFolder
    end
    
    -- FIXED: Smaller Health ESP (same size as name)
    if states.healthESP.active then
        local healthBar = Instance.new("Frame")
        healthBar.Name = "HealthBar"
        healthBar.BackgroundColor3 = Color3.new(1, 0, 0)
        healthBar.BorderSizePixel = 1
        healthBar.BorderColor3 = Color3.new(0, 0, 0)
        healthBar.Size = UDim2.new(0, 100, 0, 4) -- SMALLER: 100px wide, 4px tall
        healthBar.Visible = states.esp.active and states.healthESP.active
        healthBar.Parent = espFolder
        
        local healthText = Instance.new("TextLabel")
        healthText.Name = "HealthText"
        healthText.Text = "100"
        healthText.TextColor3 = Color3.new(0, 1, 0)
        healthText.BackgroundTransparency = 1
        healthText.TextSize = 12
        healthText.Font = Enum.Font.GothamBold
        healthText.Size = UDim2.new(0, 100, 0, 15) -- Same width as health bar
        healthText.Visible = states.esp.active and states.healthESP.active
        healthText.Parent = espFolder
    end
end

local function updateESP()
    for playerInstance, folder in pairs(states.esp.folders) do
        if playerInstance.Character and playerInstance.Character:FindFirstChild("HumanoidRootPart") then
            local root = playerInstance.Character.HumanoidRootPart
            local humanoid = playerInstance.Character:FindFirstChildOfClass("Humanoid")
            local screenPos, onScreen = Workspace.CurrentCamera:WorldToViewportPoint(root.Position)
            
            if onScreen then
                -- Update box
                local box = folder:FindFirstChild("Box")
                if box then
                    box.Adornee = root
                    box.Visible = states.esp.active and states.boxESP.active
                end
                
                -- Update name (position above head)
                local nameLabel = folder:FindFirstChild("Name")
                if nameLabel then
                    nameLabel.Position = UDim2.new(0, screenPos.X - 50, 0, screenPos.Y - 60)
                    nameLabel.Visible = states.esp.active and states.nameESP.active
                end
                
                -- Update health (position below name)
                local healthBar = folder:FindFirstChild("HealthBar")
                local healthText = folder:FindFirstChild("HealthText")
                if healthBar and healthText and humanoid then
                    local healthPercent = humanoid.Health / humanoid.MaxHealth
                    healthBar.Size = UDim2.new(healthPercent, 0, 0, 4) -- Scales with health
                    healthBar.BackgroundColor3 = Color3.new(1 - healthPercent, healthPercent, 0)
                    healthBar.Position = UDim2.new(0, screenPos.X - 50, 0, screenPos.Y - 35)
                    healthBar.Visible = states.esp.active and states.healthESP.active
                    
                    healthText.Text = math.floor(humanoid.Health)
                    healthText.TextColor3 = healthBar.BackgroundColor3
                    healthText.Position = UDim2.new(0, screenPos.X - 50, 0, screenPos.Y - 30)
                    healthText.Visible = states.esp.active and states.healthESP.active
                end
            else
                -- Hide if off screen
                for _, child in pairs(folder:GetChildren()) do
                    if child:IsA("BoxHandleAdornment") or child:IsA("TextLabel") or child:IsA("Frame") then
                        child.Visible = false
                    end
                end
            end
        end
    end
end

local function setupESP()
    -- Clear existing
    for _, folder in pairs(states.esp.folders) do
        folder:Destroy()
    end
    states.esp.folders = {}
    
    for _, conn in pairs(states.esp.connections) do
        conn:Disconnect()
    end
    states.esp.connections = {}
    
    for _, loop in pairs(states.esp.loops) do
        loop:Disconnect()
    end
    states.esp.loops = {}
    
    -- Create ESP for all players
    for _, p in pairs(Players:GetPlayers()) do
        if p ~= player then
            createESP(p)
        end
    end
    
    -- Player added connection
    local playerAddedConn = Players.PlayerAdded:Connect(function(p)
        p.CharacterAdded:Connect(function()
            wait(1)
            createESP(p)
        end)
    end)
    table.insert(states.esp.connections, playerAddedConn)
    
    -- Update loop
    local updateLoop = RunService.RenderStepped:Connect(function()
        if states.esp.active then
            updateESP()
        end
    end)
    table.insert(states.esp.loops, updateLoop)
end

-- Character handling
player.CharacterAdded:Connect(function(newChar)
    character = newChar
    humanoid = character:WaitForChild("Humanoid")
    
    if states.immortality.active then
        setupImmortality()
    end
    if states.flight.active then
        setupFlight()
    end
    if states.noclip.active then
        setupNoclip()
    end
    if states.esp.active then
        setupESP()
    end
end)

-- Player Tab
local playerTab = tabFrames["Player"]

createToggle(playerTab, "Immortality", "immortality", function(active)
    if active then
        setupImmortality()
    else
        for _, conn in pairs(states.immortality.connections) do
            conn:Disconnect()
        end
        states.immortality.connections = {}
        if character then
            local ff = character:FindFirstChild("BrathuoForceField")
            if ff then ff:Destroy() end
        end
    end
end)

createToggle(playerTab, "Noclip", "noclip", function(active)
    if active then
        setupNoclip()
    else
        if states.noclip.connection then
            states.noclip.connection:Disconnect()
            states.noclip.connection = nil
        end
        if character then
            for _, part in pairs(character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = true
                end
            end
        end
    end
end)

createToggle(playerTab, "Infinite Jump", "infiniteJump", function(active)
    if active then
        states.infiniteJump.connection = UserInputService.JumpRequest:Connect(function()
            if humanoid then
                humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
            end
        end)
    else
        if states.infiniteJump.connection then
            states.infiniteJump.connection:Disconnect()
            states.infiniteJump.connection = nil
        end
    end
end)

-- Combat Tab
local combatTab = tabFrames["Combat"]

createToggle(combatTab, "Aimbot", "aimbot", function(active)
    if active then
        states.aimbot.connection = RunService.Heartbeat:Connect(function()
            if not states.aimbot.active then return end
            
            local closest = nil
            local closestDist = math.huge
            
            for _, p in pairs(Players:GetPlayers()) do
                if p ~= player and p.Character then
                    local targetPart = p.Character:FindFirstChild(aimbotSettings.targetPart)
                    if targetPart then
                        local dist = (targetPart.Position - character.HumanoidRootPart.Position).Magnitude
                        if dist < closestDist and dist <= aimbotSettings.maxDistance then
                            closestDist = dist
                            closest = targetPart
                        end
                    end
                end
            end
            
            if closest then
                local camera = Workspace.CurrentCamera
                camera.CFrame = camera.CFrame:Lerp(
                    CFrame.new(camera.CFrame.Position, closest.Position),
                    aimbotSettings.smoothness
                )
            end
        end)
    else
        if states.aimbot.connection then
            states.aimbot.connection:Disconnect()
            states.aimbot.connection = nil
        end
    end
end)

-- Target selection
local targetFrame = Instance.new("Frame")
targetFrame.Size = UDim2.new(1, 0, 0, 35)
targetFrame.BackgroundTransparency = 1
targetFrame.LayoutOrder = #combatTab:GetChildren()
targetFrame.Parent = combatTab

local targetLabel = Instance.new("TextLabel")
targetLabel.Size = UDim2.new(0.4, 0, 1, 0)
targetLabel.Position = UDim2.new(0, 10, 0, 0)
targetLabel.BackgroundTransparency = 1
targetLabel.Text = "Target:"
targetLabel.TextColor3 = Color3.new(1, 1, 1)
targetLabel.Font = Enum.Font.GothamMedium
targetLabel.TextSize = 14
targetLabel.TextXAlignment = Enum.TextXAlignment.Left
targetLabel.Parent = targetFrame

local headButton = Instance.new("TextButton")
headButton.Size = UDim2.new(0.25, 0, 0.7, 0)
headButton.Position = UDim2.new(0.4, 0, 0.15, 0)
headButton.BackgroundColor3 = aimbotSettings.targetPart == "Head" and Color3.fromRGB(0, 150, 255) or Color3.fromRGB(60, 60, 90)
headButton.Text = "Head"
headButton.TextColor3 = Color3.new(1, 1, 1)
headButton.Font = Enum.Font.GothamMedium
headButton.TextSize = 12
headButton.Parent = targetFrame

local bodyButton = Instance.new("TextButton")
bodyButton.Size = UDim2.new(0.25, 0, 0.7, 0)
bodyButton.Position = UDim2.new(0.7, 0, 0.15, 0)
bodyButton.BackgroundColor3 = aimbotSettings.targetPart == "HumanoidRootPart" and Color3.fromRGB(0, 150, 255) or Color3.fromRGB(60, 60, 90)
bodyButton.Text = "Body"
bodyButton.TextColor3 = Color3.new(1, 1, 1)
bodyButton.Font = Enum.Font.GothamMedium
bodyButton.TextSize = 12
bodyButton.Parent = targetFrame

headButton.MouseButton1Click:Connect(function()
    aimbotSettings.targetPart = "Head"
    headButton.BackgroundColor3 = Color3.fromRGB(0, 150, 255)
    bodyButton.BackgroundColor3 = Color3.fromRGB(60, 60, 90)
end)

bodyButton.MouseButton1Click:Connect(function()
    aimbotSettings.targetPart = "HumanoidRootPart"
    bodyButton.BackgroundColor3 = Color3.fromRGB(0, 150, 255)
    headButton.BackgroundColor3 = Color3.fromRGB(60, 60, 90)
end)

createToggle(combatTab, "Show FOV Circle", "showFOV", function(active)
    states.showFOV.active = active
    updateFOVCircle()
end)

createSlider(combatTab, "FOV Circle Size", 10, 500, 100, function(value)
    aimbotSettings.fovSize = value
    updateFOVCircle()
end)

createSlider(combatTab, "Max Distance", 10, 5000, 1000, function(value)
    aimbotSettings.maxDistance = value
end)

createSlider(combatTab, "Smoothness", 1, 100, 20, function(value)
    aimbotSettings.smoothness = value / 100
end)

createToggle(combatTab, "Trigger Bot", "triggerbot", function(active)
    if active then
        states.triggerbot.connection = RunService.Heartbeat:Connect(function()
            if not states.triggerbot.active then return end
            
            local target = mouse.Target
            if target then
                local model = target:FindFirstAncestorOfClass("Model")
                if model then
                    local humanoid = model:FindFirstChildOfClass("Humanoid")
                    if humanoid and humanoid.Health > 0 then
                        wait(states.triggerbot.delay / 1000)
                        mouse1click()
                    end
                end
            end
        end)
    else
        if states.triggerbot.connection then
            states.triggerbot.connection:Disconnect()
            states.triggerbot.connection = nil
        end
    end
end)

createSlider(combatTab, "Trigger Delay", 1, 500, 100, function(value)
    states.triggerbot.delay = value
end)

-- Movement Tab
local movementTab = tabFrames["Movement"]

createToggle(movementTab, "Flight", "flight", function(active)
    if active then
        setupFlight()
    else
        if states.flight.connection then
            states.flight.connection:Disconnect()
            states.flight.connection = nil
        end
        if states.flight.bodyVelocity then
            states.flight.bodyVelocity:Destroy()
            states.flight.bodyVelocity = nil
        end
    end
end)

createSlider(movementTab, "Fly Speed", 1, 200, 50, function(value)
    states.flight.speed = value
end)

createSlider(movementTab, "Walk Speed", 16, 200, 16, function(value)
    if humanoid then
        humanoid.WalkSpeed = value
    end
end)

createSlider(movementTab, "Jump Power", 50, 500, 50, function(value)
    if humanoid then
        humanoid.JumpPower = value
    end
end)

createSlider(movementTab, "Speed Multiplier", 0.1, 5, 1, function(value)
    if humanoid then
        humanoid.WalkSpeed = 16 * value
    end
end)

-- Visuals Tab
local visualsTab = tabFrames["Visuals"]

createToggle(visualsTab, "FullBright", "fullbright", function(active)
    if active then
        states.fullbright.original.ambient = Lighting.Ambient
        states.fullbright.original.brightness = Lighting.Brightness
        Lighting.Ambient = Color3.new(1, 1, 1)
        Lighting.Brightness = 2
    else
        if states.fullbright.original.ambient then
            Lighting.Ambient = states.fullbright.original.ambient
            Lighting.Brightness = states.fullbright.original.brightness
        else
            Lighting.Ambient = Color3.new(0.5, 0.5, 0.5)
            Lighting.Brightness = 1
        end
    end
end)

createToggle(visualsTab, "No Fog", "noFog", function(active)
    if active then
        states.noFog.original = Lighting.FogEnd
        Lighting.FogEnd = 1000000
    else
        if states.noFog.original then
            Lighting.FogEnd = states.noFog.original
        else
            Lighting.FogEnd = 10000
        end
    end
end)

-- ESP Tab (FIXED: ESP Master now works)
local espTab = tabFrames["ESP"]

createToggle(espTab, "ESP Master", "esp", function(active)
    if active then
        setupESP()
    else
        for _, folder in pairs(states.esp.folders) do
            folder:Destroy()
        end
        states.esp.folders = {}
        
        for _, conn in pairs(states.esp.connections) do
            conn:Disconnect()
        end
        states.esp.connections = {}
        
        for _, loop in pairs(states.esp.loops) do
            loop:Disconnect()
        end
        states.esp.loops = {}
    end
end)

createToggle(espTab, "Name ESP", "nameESP", function(active)
    states.nameESP.active = active
    if states.esp.active then
        setupESP()
    end
end)

createToggle(espTab, "Box ESP", "boxESP", function(active)
    states.boxESP.active = active
    if states.esp.active then
        setupESP()
    end
end)

createToggle(espTab, "Health ESP", "healthESP", function(active)
    states.healthESP.active = active
    if states.esp.active then
        setupESP()
    end
end)

createToggle(espTab, "Item ESP", "itemESP", function(active)
    states.itemESP.active = active
end)

-- Misc Tab
local miscTab = tabFrames["Misc"]

createToggle(miscTab, "Anti-AFK", "antiAFK", function(active)
    if active then
        local vu = game:GetService("VirtualUser")
        states.antiAFK.connection = Players.LocalPlayer.Idled:Connect(function()
            vu:Button2Down(Vector2.new(0,0), Workspace.CurrentCamera.CFrame)
            wait(1)
            vu:Button2Up(Vector2.new(0,0), Workspace.CurrentCamera.CFrame)
        end)
    else
        if states.antiAFK.connection then
            states.antiAFK.connection:Disconnect()
            states.antiAFK.connection = nil
        end
    end
end)

-- Buttons for Misc
local function createMiscButton(text, color, callback)
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(1, -10, 0, 35)
    button.Position = UDim2.new(0, 5, 0, 0)
    button.BackgroundColor3 = color
    button.BorderSizePixel = 0
    button.Text = text
    button.TextColor3 = Color3.new(1, 1, 1)
    button.Font = Enum.Font.GothamMedium
    button.TextSize = 14
    button.LayoutOrder = #miscTab:GetChildren()
    button.Parent = miscTab
    
    button.MouseButton1Click:Connect(callback)
    return button
end

createMiscButton("FPS Boost", Color3.fromRGB(60, 60, 100), function()
    settings().Rendering.QualityLevel = 1
    Lighting.GlobalShadows = false
    warn("FPS Boost applied")
end)

createMiscButton("Rejoin Server", Color3.fromRGB(80, 120, 200), function()
    game:GetService("TeleportService"):Teleport(game.PlaceId, player)
end)

createMiscButton("Copy Game ID", Color3.fromRGB(80, 200, 120), function()
    setclipboard(tostring(game.PlaceId))
    warn("Game ID copied to clipboard: " .. game.PlaceId)
end)

-- Game Info
local gameInfoFrame = Instance.new("Frame")
gameInfoFrame.Size = UDim2.new(1, -10, 0, 80)
gameInfoFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 80)
gameInfoFrame.BorderSizePixel = 0
gameInfoFrame.LayoutOrder = #miscTab:GetChildren()
gameInfoFrame.Parent = miscTab

local gameInfoLabel = Instance.new("TextLabel")
gameInfoLabel.Size = UDim2.new(1, -10, 1, -10)
gameInfoLabel.Position = UDim2.new(0, 5, 0, 5)
gameInfoLabel.BackgroundTransparency = 1
gameInfoLabel.Text = "Game: " .. gameName .. "\nPlayers: " .. #Players:GetPlayers() .. "/" .. game.Players.MaxPlayers
gameInfoLabel.TextColor3 = Color3.new(1, 1, 1)
gameInfoLabel.Font = Enum.Font.Gotham
gameInfoLabel.TextSize = 12
gameInfoLabel.TextWrapped = true
gameInfoLabel.TextXAlignment = Enum.TextXAlignment.Left
gameInfoLabel.Parent = gameInfoFrame

-- Unload Button
createMiscButton("UNLOAD MENU", Color3.fromRGB(255, 50, 50), function()
    -- Disconnect all
    for stateName, stateData in pairs(states) do
        if stateData.connection then
            pcall(function() stateData.connection:Disconnect() end)
        end
        if stateData.connections then
            for _, conn in pairs(stateData.connections) do
                pcall(function() conn:Disconnect() end)
            end
        end
        if stateData.loops then
            for _, loop in pairs(stateData.loops) do
                pcall(function() loop:Disconnect() end)
            end
        end
    end
    
    -- Cleanup
    if states.flight.bodyVelocity then
        states.flight.bodyVelocity:Destroy()
    end
    
    if character then
        local ff = character:FindFirstChild("BrathuoForceField")
        if ff then ff:Destroy() end
    end
    
    if fovCircle then
        fovCircle:Destroy()
    end
    
    if states.fullbright.original.ambient then
        Lighting.Ambient = states.fullbright.original.ambient
        Lighting.Brightness = states.fullbright.original.brightness
    end
    
    if states.noFog.original then
        Lighting.FogEnd = states.noFog.original
    end
    
    -- Restore collision
    if character then
        for _, part in pairs(character:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = true
            end
        end
    end
    
    -- Reset speed
    if humanoid then
        humanoid.WalkSpeed = 16
        humanoid.JumpPower = 50
    end
    
    screenGui:Destroy()
    warn("brathuo menu v9 unloaded")
end)

-- Toggle menu with Insert
UserInputService.InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.Insert then
        mainFrame.Visible = not mainFrame.Visible
    end
end)

-- Initialization
warn("brathuo menu v9 loaded")
warn("Game: " .. gameName)
warn("Health ESP fixed - smaller bar")
warn("ESP Master working")
warn("FOV Circle adjustable")
warn("Press Insert to toggle menu")

Features & Information

this AI good script by deepseek and brathuo, test him, no key 2026 undetected
#universal#menu#no key#undetected#admin

Community Comments (2)

brathuobrathuoFeb 4, 2026

what about this script? W or L?

brathuobrathuoFeb 4, 2026

insert or Pb to close/open menu

More Scripts for Universal Scripts