Banan Universal AimBot Script Keyless
Flick Keyless
Banan Universal AimBot Script Keyless
👤 alexriderr 👁 19 views ❤️ 0 likes ⏱ Apr 8, 2026
This universal, open-source script is designed for aimbot use in Roblox fighting games. Created by Banan Hub, it works with any executor, including Xeno.
✨ Features
FOV Circle Aimbot Target Head Mode Toggle Key Bind Wall Check Team Check ESP FOV Size
📋 Script Code
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local camera = workspace.CurrentCamera
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")

-- === НАСТРОЙКИ ===
local SETTINGS = {
    AimKey = Enum.KeyCode.Z,
    Smoothness = 0.95,
    FOV = 200,
    ShowFOVCircle = true,
    TargetPart = "Head",
    TeamCheck = false,
    VisibleCheck = false,
    ESPEnabled = true,
    AimbotEnabled = true,
    MainColor = Color3.fromRGB(255, 128, 0),
    SkeletonColor = Color3.fromRGB(255, 200, 100),
    HealthColor = Color3.fromRGB(0, 255, 0),
    ToggleMode = true,
    ToggleState = false,
    FollowMouse = true,
    HideKey = Enum.KeyCode.RightAlt,
    MinFOV = 30,
    MaxFOV = 400
}

local TARGET_PARTS = {"Head", "Torso", "HumanoidRootPart", "Random"}
local currentPartIndex = 1

local KEY_LIST = {
    {"Z", Enum.KeyCode.Z},
    {"X", Enum.KeyCode.X},
    {"C", Enum.KeyCode.C},
    {"V", Enum.KeyCode.V},
    {"B", Enum.KeyCode.B},
    {"Q", Enum.KeyCode.Q},
    {"E", Enum.KeyCode.E},
    {"R", Enum.KeyCode.R},
    {"F", Enum.KeyCode.F},
    {"G", Enum.KeyCode.G},
    {"Left Shift", Enum.KeyCode.LeftShift},
    {"Left Ctrl", Enum.KeyCode.LeftControl},
    {"Left Alt", Enum.KeyCode.LeftAlt},
    {"Right Alt", Enum.KeyCode.RightAlt}
}
local currentKeyIndex = 1

local FOVCircle
local ScreenGui
local ESPobjects = {}
local aimActive = false
local currentTarget = nil
local statusText
local fovPosition = Vector2.new()
local scriptActive = true
local guiVisible = true
local partButton
local keyButton
local wallCheckButton
local teamCheckButton
local smoothnessSlider
local smoothnessValue
local fovSlider
local fovValue
local discordButton
local contentFrame
local isMinimized = false
local expandedSize = UDim2.new(0, 360, 0, 590)
local minimizedSize = UDim2.new(0, 360, 0, 45)
local MainFrame
local isDragging = false
local dragOffset = Vector2.new()
local hideKeyPressed = false

-- Функция для анимации кнопок
local function animateButton(button, hoverColor)
    local originalColor = button.BackgroundColor3
    local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    
    button.MouseEnter:Connect(function()
        local tween = TweenService:Create(button, tweenInfo, {BackgroundColor3 = hoverColor or Color3.fromRGB(70, 70, 90)})
        tween:Play()
    end)
    
    button.MouseLeave:Connect(function()
        local tween = TweenService:Create(button, tweenInfo, {BackgroundColor3 = originalColor})
        tween:Play()
    end)
    
    button.MouseButton1Down:Connect(function()
        local tween = TweenService:Create(button, tweenInfo, {BackgroundColor3 = Color3.fromRGB(30, 30, 40)})
        tween:Play()
    end)
    
    button.MouseButton1Up:Connect(function()
        local tween = TweenService:Create(button, tweenInfo, {BackgroundColor3 = hoverColor or Color3.fromRGB(70, 70, 90)})
        tween:Play()
    end)
end

local function getMousePosition()
    local mousePos = UserInputService:GetMouseLocation()
    local viewport = camera.ViewportSize
    
    if mousePos.X  viewport.X or mousePos.Y  viewport.Y then
        return Vector2.new(viewport.X / 2, viewport.Y / 2)
    end
    
    return mousePos
end

local function copyToClipboard(text)
    if setclipboard then
        pcall(setclipboard, text)
    end
end

local function updateButtonTexts()
    if fovToggleButton then
        fovToggleButton.Text = "FOV Circle: " .. (SETTINGS.ShowFOVCircle and "ON" or "OFF")
        fovToggleButton.TextColor3 = SETTINGS.ShowFOVCircle and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100)
    end
    if espToggleButton then
        espToggleButton.Text = "ESP: " .. (SETTINGS.ESPEnabled and "ON" or "OFF")
        espToggleButton.TextColor3 = SETTINGS.ESPEnabled and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100)
    end
    if aimbotToggleButton then
        aimbotToggleButton.Text = "Aimbot: " .. (SETTINGS.AimbotEnabled and "ON" or "OFF")
        aimbotToggleButton.TextColor3 = SETTINGS.AimbotEnabled and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100)
    end
    if modeToggleButton then
        modeToggleButton.Text = "Mode: " .. (SETTINGS.ToggleMode and "TOGGLE" or "HOLD")
        modeToggleButton.TextColor3 = SETTINGS.ToggleMode and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 200, 100)
    end
    if partButton then
        partButton.Text = "Target: " .. TARGET_PARTS[currentPartIndex]
    end
    if keyButton then
        keyButton.Text = "Key: " .. KEY_LIST[currentKeyIndex][1]
    end
    if wallCheckButton then
        wallCheckButton.Text = "Wall Check: " .. (SETTINGS.VisibleCheck and "ON" or "OFF")
        wallCheckButton.TextColor3 = SETTINGS.VisibleCheck and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100)
    end
    if teamCheckButton then
        teamCheckButton.Text = "Team Check: " .. (SETTINGS.TeamCheck and "ON" or "OFF")
        teamCheckButton.TextColor3 = SETTINGS.TeamCheck and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100)
    end
    if smoothnessValue then
        smoothnessValue.Text = "Smooth: " .. string.format("%.2f", SETTINGS.Smoothness)
    end
    if fovValue then
        fovValue.Text = "FOV Size: " .. SETTINGS.FOV
    end
end

local function toggleMinimize()
    isMinimized = not isMinimized
    local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    local goal = {Size = isMinimized and minimizedSize or expandedSize}
    local tween = TweenService:Create(MainFrame, tweenInfo, goal)
    tween:Play()
    
    if isMinimized then
        contentFrame.Visible = false
    else
        contentFrame.Visible = true
    end
end

local function toggleGUI()
    guiVisible = not guiVisible
    if ScreenGui then
        ScreenGui.Enabled = guiVisible
    end
    -- АБСОЛЮТНО НИЧЕГО НЕ ДЕЛАЕМ С КАМЕРОЙ
    -- Не сохраняем, не восстанавливаем, не трогаем
end

local function isVisible(targetPart)
    if not SETTINGS.VisibleCheck then return true end
    
    local origin = camera.CFrame.Position
    local direction = (targetPart.Position - origin).Unit * (targetPart.Position - origin).Magnitude
    
    local rayParams = RaycastParams.new()
    rayParams.FilterType = Enum.RaycastFilterType.Blacklist
    rayParams.FilterDescendantsInstances = {player.Character, workspace:FindFirstChild("Ignore")}
    
    local result = workspace:Raycast(origin, direction, rayParams)
    if result then
        local hitPart = result.Instance
        if hitPart:IsDescendantOf(targetPart.Parent) then
            return true
        end
        return false
    end
    return true
end

local function getTeamColor(plr)
    if plr.Team then
        return plr.Team.TeamColor.Color
    end
    return Color3.fromRGB(255, 255, 255)
end

-- === GUI ===
local function createGUI()
    if not scriptActive then return end
    
    ScreenGui = Instance.new("ScreenGui")
    ScreenGui.Parent = player:WaitForChild("PlayerGui")
    ScreenGui.Name = "BananAimBot"
    ScreenGui.ResetOnSpawn = false
    ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    ScreenGui.Enabled = true

    MainFrame = Instance.new("Frame")
    MainFrame.Parent = ScreenGui
    MainFrame.Size = expandedSize
    MainFrame.Position = UDim2.new(0.5, -180, 0.5, -295)
    MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
    MainFrame.BackgroundTransparency = 0.1
    MainFrame.BorderSizePixel = 0
    MainFrame.Active = true
    MainFrame.Draggable = false
    
    local UICorner = Instance.new("UICorner")
    UICorner.Parent = MainFrame
    UICorner.CornerRadius = UDim.new(0, 12)

    -- Заголовок для перетаскивания
    local TitleBar = Instance.new("Frame")
    TitleBar.Parent = MainFrame
    TitleBar.Size = UDim2.new(1, 0, 0, 40)
    TitleBar.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
    TitleBar.BorderSizePixel = 0
    TitleBar.Active = true
    TitleBar.ZIndex = 10
    
    local TitleCorner = Instance.new("UICorner")
    TitleCorner.Parent = TitleBar
    TitleCorner.CornerRadius = UDim.new(0, 12)

    local TitleText = Instance.new("TextLabel")
    TitleText.Parent = TitleBar
    TitleText.Size = UDim2.new(1, -110, 1, 0)
    TitleText.Position = UDim2.new(0, 15, 0, 0)
    TitleText.BackgroundTransparency = 1
    TitleText.Text = "Banan AimBot"
    TitleText.TextColor3 = SETTINGS.MainColor
    TitleText.Font = Enum.Font.GothamBold
    TitleText.TextSize = 22
    TitleText.TextXAlignment = Enum.TextXAlignment.Left
    TitleText.ZIndex = 11

    local MinimizeButton = Instance.new("TextButton")
    MinimizeButton.Parent = TitleBar
    MinimizeButton.Size = UDim2.new(0, 35, 0, 35)
    MinimizeButton.Position = UDim2.new(1, -80, 0, 2.5)
    MinimizeButton.BackgroundColor3 = Color3.fromRGB(70, 70, 80)
    MinimizeButton.BackgroundTransparency = 0.2
    MinimizeButton.BorderSizePixel = 0
    MinimizeButton.Text = "–"
    MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    MinimizeButton.TextSize = 24
    MinimizeButton.Font = Enum.Font.GothamBold
    MinimizeButton.ZIndex = 12
    MinimizeButton.AutoButtonColor = false
    
    local MinCorner = Instance.new("UICorner")
    MinCorner.Parent = MinimizeButton
    MinCorner.CornerRadius = UDim.new(0, 8)

    animateButton(MinimizeButton, Color3.fromRGB(90, 90, 100))
    MinimizeButton.MouseButton1Click:Connect(toggleMinimize)

    local CloseButton = Instance.new("TextButton")
    CloseButton.Parent = TitleBar
    CloseButton.Size = UDim2.new(0, 35, 0, 35)
    CloseButton.Position = UDim2.new(1, -40, 0, 2.5)
    CloseButton.BackgroundColor3 = Color3.fromRGB(200, 70, 70)
    CloseButton.BackgroundTransparency = 0.2
    CloseButton.BorderSizePixel = 0
    CloseButton.Text = "X"
    CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    CloseButton.TextSize = 20
    CloseButton.Font = Enum.Font.GothamBold
    CloseButton.ZIndex = 12
    CloseButton.AutoButtonColor = false
    
    local CloseCorner = Instance.new("UICorner")
    CloseCorner.Parent = CloseButton
    CloseCorner.CornerRadius = UDim.new(0, 8)

    animateButton(CloseButton, Color3.fromRGB(220, 90, 90))

    CloseButton.MouseButton1Click:Connect(function()
        scriptActive = false
        aimActive = false
        SETTINGS.ToggleState = false
        
        if FOVCircle then
            FOVCircle.Visible = false
            FOVCircle:Remove()
            FOVCircle = nil
        end
        
        for _, obj in pairs(ESPobjects) do
            if obj then
                for _, drawing in pairs(obj) do
                    if drawing and drawing.Remove then
                        pcall(function() drawing:Remove() end)
                    elseif type(drawing) == "table" then
                        for _, line in ipairs(drawing) do
                            if line and line.Remove then
                                pcall(function() line:Remove() end)
                            end
                        end
                    end
                end
            end
        end
        ESPobjects = {}
        
        if ScreenGui then
            ScreenGui:Destroy()
            ScreenGui = nil
        end
        
        script:Destroy()
    end)

    -- ПЕРЕТАСКИВАНИЕ
    TitleBar.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            isDragging = true
            local mousePos = UserInputService:GetMouseLocation()
            local guiPos = MainFrame.AbsolutePosition
            dragOffset = Vector2.new(mousePos.X - guiPos.X, mousePos.Y - guiPos.Y)
        end
    end)

    TitleBar.InputChanged:Connect(function(input)
        if isDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
            local mousePos = UserInputService:GetMouseLocation()
            MainFrame.Position = UDim2.new(0, mousePos.X - dragOffset.X, 0, mousePos.Y - dragOffset.Y)
        end
    end)

    TitleBar.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            isDragging = false
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if isDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
            local mousePos = UserInputService:GetMouseLocation()
            MainFrame.Position = UDim2.new(0, mousePos.X - dragOffset.X, 0, mousePos.Y - dragOffset.Y)
        end
    end)

    contentFrame = Instance.new("Frame")
    contentFrame.Parent = MainFrame
    contentFrame.Size = UDim2.new(1, -20, 1, -50)
    contentFrame.Position = UDim2.new(0, 10, 0, 45)
    contentFrame.BackgroundTransparency = 1
    contentFrame.ClipsDescendants = true

    -- Статус
    local StatusFrame = Instance.new("Frame")
    StatusFrame.Parent = contentFrame
    StatusFrame.Size = UDim2.new(1, 0, 0, 35)
    StatusFrame.Position = UDim2.new(0, 0, 0, 0)
    StatusFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    StatusFrame.BackgroundTransparency = 0.3
    
    local StatusCorner = Instance.new("UICorner")
    StatusCorner.Parent = StatusFrame
    StatusCorner.CornerRadius = UDim.new(0, 8)

    local StatusLabel = Instance.new("TextLabel")
    StatusLabel.Parent = StatusFrame
    StatusLabel.Size = UDim2.new(0.5, -5, 1, 0)
    StatusLabel.Position = UDim2.new(0, 10, 0, 0)
    StatusLabel.BackgroundTransparency = 1
    StatusLabel.Text = "Aimbot Status:"
    StatusLabel.TextColor3 = Color3.fromRGB(200, 200, 220)
    StatusLabel.Font = Enum.Font.Gotham
    StatusLabel.TextSize = 15
    StatusLabel.TextXAlignment = Enum.TextXAlignment.Left

    statusText = Instance.new("TextLabel")
    statusText.Parent = StatusFrame
    statusText.Size = UDim2.new(0.5, -5, 1, 0)
    statusText.Position = UDim2.new(0.5, 5, 0, 0)
    statusText.BackgroundTransparency = 1
    statusText.Text = "OFF"
    statusText.TextColor3 = Color3.fromRGB(255, 100, 100)
    statusText.Font = Enum.Font.GothamBold
    statusText.TextSize = 18
    statusText.TextXAlignment = Enum.TextXAlignment.Right

    -- Функция создания кнопки
    local function createButton(parent, text, posY, color)
        local frame = Instance.new("Frame")
        frame.Parent = parent
        frame.Size = UDim2.new(1, 0, 0, 30)
        frame.Position = UDim2.new(0, 0, 0, posY)
        frame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
        frame.BackgroundTransparency = 0.3
        
        local corner = Instance.new("UICorner")
        corner.Parent = frame
        corner.CornerRadius = UDim.new(0, 8)
        
        local button = Instance.new("TextButton")
        button.Parent = frame
        button.Size = UDim2.new(1, -20, 1, -6)
        button.Position = UDim2.new(0, 10, 0, 3)
        button.BackgroundColor3 = color or Color3.fromRGB(45, 45, 55)
        button.BackgroundTransparency = 0.2
        button.BorderSizePixel = 0
        button.Text = text
        button.TextColor3 = Color3.fromRGB(255, 255, 255)
        button.TextSize = 13
        button.Font = Enum.Font.GothamBold
        
        local btnCorner = Instance.new("UICorner")
        btnCorner.Parent = button
        btnCorner.CornerRadius = UDim.new(0, 6)
        
        return button, frame
    end

    fovToggleButton, _ = createButton(contentFrame, "FOV Circle: ON", 40, Color3.fromRGB(50, 50, 60))
    espToggleButton, _ = createButton(contentFrame, "ESP: ON", 75, Color3.fromRGB(50, 50, 60))
    aimbotToggleButton, _ = createButton(contentFrame, "Aimbot: ON", 110, Color3.fromRGB(50, 50, 60))
    modeToggleButton, _ = createButton(contentFrame, "Mode: TOGGLE", 145, Color3.fromRGB(50, 50, 60))
    partButton, _ = createButton(contentFrame, "Target: Head", 180, Color3.fromRGB(50, 50, 60))
    keyButton, _ = createButton(contentFrame, "Key: Z", 215, Color3.fromRGB(50, 50, 60))
    wallCheckButton, _ = createButton(contentFrame, "Wall Check: OFF", 250, Color3.fromRGB(50, 50, 60))
    teamCheckButton, _ = createButton(contentFrame, "Team Check: OFF", 285, Color3.fromRGB(50, 50, 60))

    -- Анимация для всех кнопок
    animateButton(fovToggleButton)
    animateButton(espToggleButton)
    animateButton(aimbotToggleButton)
    animateButton(modeToggleButton)
    animateButton(partButton)
    animateButton(keyButton)
    animateButton(wallCheckButton)
    animateButton(teamCheckButton)

    -- FOV слайдер
    local FOVFrame = Instance.new("Frame")
    FOVFrame.Parent = contentFrame
    FOVFrame.Size = UDim2.new(1, 0, 0, 45)
    FOVFrame.Position = UDim2.new(0, 0, 0, 320)
    FOVFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    FOVFrame.BackgroundTransparency = 0.3
    
    local FOVCorner = Instance.new("UICorner")
    FOVCorner.Parent = FOVFrame
    FOVCorner.CornerRadius = UDim.new(0, 8)

    fovValue = Instance.new("TextLabel")
    fovValue.Parent = FOVFrame
    fovValue.Size = UDim2.new(1, -20, 0, 18)
    fovValue.Position = UDim2.new(0, 10, 0, 3)
    fovValue.BackgroundTransparency = 1
    fovValue.Text = "FOV Size: 200"
    fovValue.TextColor3 = Color3.fromRGB(200, 200, 220)
    fovValue.Font = Enum.Font.Gotham
    fovValue.TextSize = 13
    fovValue.TextXAlignment = Enum.TextXAlignment.Left

    local FOVSlider = Instance.new("Frame")
    FOVSlider.Parent = FOVFrame
    FOVSlider.Size = UDim2.new(1, -20, 0, 18)
    FOVSlider.Position = UDim2.new(0, 10, 0, 22)
    FOVSlider.BackgroundColor3 = Color3.fromRGB(60, 60, 70)
    
    local FOVSliderCorner = Instance.new("UICorner")
    FOVSliderCorner.Parent = FOVSlider
    FOVSliderCorner.CornerRadius = UDim.new(0, 4)

    local FOVFill = Instance.new("Frame")
    FOVFill.Parent = FOVSlider
    FOVFill.Size = UDim2.new((SETTINGS.FOV - SETTINGS.MinFOV) / (SETTINGS.MaxFOV - SETTINGS.MinFOV), 0, 1, 0)
    FOVFill.BackgroundColor3 = SETTINGS.MainColor
    
    local FOVFillCorner = Instance.new("UICorner")
    FOVFillCorner.Parent = FOVFill
    FOVFillCorner.CornerRadius = UDim.new(0, 4)

    local FOVButton = Instance.new("TextButton")
    FOVButton.Parent = FOVSlider
    FOVButton.Size = UDim2.new(1, 0, 1, 0)
    FOVButton.BackgroundTransparency = 1
    FOVButton.Text = ""

    FOVButton.MouseButton1Down:Connect(function()
        local connection
        connection = RunService.RenderStepped:Connect(function()
            local mousePos = UserInputService:GetMouseLocation()
            local sliderPos = FOVSlider.AbsolutePosition
            local sliderSize = FOVSlider.AbsoluteSize.X
            
            local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize)
            local percent = relativeX / sliderSize
            percent = math.clamp(percent, 0, 1)
            
            local newFOV = math.floor(SETTINGS.MinFOV + (percent * (SETTINGS.MaxFOV - SETTINGS.MinFOV)))
            SETTINGS.FOV = newFOV
            FOVFill.Size = UDim2.new(percent, 0, 1, 0)
            fovValue.Text = "FOV Size: " .. newFOV
        end)
        
        local ended
        ended = UserInputService.InputEnded:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.MouseButton1 then
                connection:Disconnect()
                ended:Disconnect()
            end
        end)
    end)

    -- Smooth слайдер
    local SmoothFrame = Instance.new("Frame")
    SmoothFrame.Parent = contentFrame
    SmoothFrame.Size = UDim2.new(1, 0, 0, 45)
    SmoothFrame.Position = UDim2.new(0, 0, 0, 370)
    SmoothFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    SmoothFrame.BackgroundTransparency = 0.3
    
    local SmoothCorner = Instance.new("UICorner")
    SmoothCorner.Parent = SmoothFrame
    SmoothCorner.CornerRadius = UDim.new(0, 8)

    smoothnessValue = Instance.new("TextLabel")
    smoothnessValue.Parent = SmoothFrame
    smoothnessValue.Size = UDim2.new(1, -20, 0, 18)
    smoothnessValue.Position = UDim2.new(0, 10, 0, 3)
    smoothnessValue.BackgroundTransparency = 1
    smoothnessValue.Text = "Smooth: 0.95"
    smoothnessValue.TextColor3 = Color3.fromRGB(200, 200, 220)
    smoothnessValue.Font = Enum.Font.Gotham
    smoothnessValue.TextSize = 13
    smoothnessValue.TextXAlignment = Enum.TextXAlignment.Left

    local SmoothSlider = Instance.new("Frame")
    SmoothSlider.Parent = SmoothFrame
    SmoothSlider.Size = UDim2.new(1, -20, 0, 18)
    SmoothSlider.Position = UDim2.new(0, 10, 0, 22)
    SmoothSlider.BackgroundColor3 = Color3.fromRGB(60, 60, 70)
    
    local SmoothSliderCorner = Instance.new("UICorner")
    SmoothSliderCorner.Parent = SmoothSlider
    SmoothSliderCorner.CornerRadius = UDim.new(0, 4)

    local SmoothFill = Instance.new("Frame")
    SmoothFill.Parent = SmoothSlider
    SmoothFill.Size = UDim2.new(SETTINGS.Smoothness, 0, 1, 0)
    SmoothFill.BackgroundColor3 = SETTINGS.MainColor
    
    local SmoothFillCorner = Instance.new("UICorner")
    SmoothFillCorner.Parent = SmoothFill
    SmoothFillCorner.CornerRadius = UDim.new(0, 4)

    local SmoothButton = Instance.new("TextButton")
    SmoothButton.Parent = SmoothSlider
    SmoothButton.Size = UDim2.new(1, 0, 1, 0)
    SmoothButton.BackgroundTransparency = 1
    SmoothButton.Text = ""

    SmoothButton.MouseButton1Down:Connect(function()
        local connection
        connection = RunService.RenderStepped:Connect(function()
            local mousePos = UserInputService:GetMouseLocation()
            local sliderPos = SmoothSlider.AbsolutePosition
            local sliderSize = SmoothSlider.AbsoluteSize.X
            
            local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize)
            local percent = relativeX / sliderSize
            percent = math.floor(percent * 100) / 100
            percent = math.clamp(percent, 0.01, 1.0)
            
            SETTINGS.Smoothness = percent
            SmoothFill.Size = UDim2.new(percent, 0, 1, 0)
            smoothnessValue.Text = "Smooth: " .. string.format("%.2f", percent)
        end)
        
        local ended
        ended = UserInputService.InputEnded:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.MouseButton1 then
                connection:Disconnect()
                ended:Disconnect()
            end
        end)
    end)

    -- Discord кнопка
    discordButton, _ = createButton(contentFrame, "Discord", 420, Color3.fromRGB(88, 101, 242))
    animateButton(discordButton, Color3.fromRGB(108, 121, 252))
    
    discordButton.MouseButton1Click:Connect(function()
        copyToClipboard("https://discordapp.com/users/1248916149400371221")
        local oldText = discordButton.Text
        discordButton.Text = "Copied!"
        discordButton.TextColor3 = Color3.fromRGB(100, 255, 100)
        task.wait(1)
        discordButton.Text = oldText
        discordButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    end)

    -- Информация
    local InfoFrame = Instance.new("Frame")
    InfoFrame.Parent = contentFrame
    InfoFrame.Size = UDim2.new(1, 0, 0, 80)
    InfoFrame.Position = UDim2.new(0, 0, 0, 465)
    InfoFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    InfoFrame.BackgroundTransparency = 0.3
    
    local InfoCorner = Instance.new("UICorner")
    InfoCorner.Parent = InfoFrame
    InfoCorner.CornerRadius = UDim.new(0, 8)

    local InfoLabel = Instance.new("TextLabel")
    InfoLabel.Parent = InfoFrame
    InfoLabel.Size = UDim2.new(1, -20, 1, -10)
    InfoLabel.Position = UDim2.new(0, 10, 0, 5)
    InfoLabel.BackgroundTransparency = 1
    InfoLabel.Text = "Banan AimBot - AimBot + ESP\nCreator: Russian dev\nRight Alt - hide/show GUI\nGood Luck!"
    InfoLabel.TextColor3 = Color3.fromRGB(180, 180, 200)
    InfoLabel.Font = Enum.Font.Gotham
    InfoLabel.TextSize = 13
    InfoLabel.TextXAlignment = Enum.TextXAlignment.Left
    InfoLabel.TextYAlignment = Enum.TextYAlignment.Top

    -- Обработчики кнопок
    fovToggleButton.MouseButton1Click:Connect(function()
        SETTINGS.ShowFOVCircle = not SETTINGS.ShowFOVCircle
        updateButtonTexts()
    end)

    espToggleButton.MouseButton1Click:Connect(function()
        SETTINGS.ESPEnabled = not SETTINGS.ESPEnabled
        updateButtonTexts()
    end)

    aimbotToggleButton.MouseButton1Click:Connect(function()
        SETTINGS.AimbotEnabled = not SETTINGS.AimbotEnabled
        if not SETTINGS.AimbotEnabled then
            aimActive = false
            SETTINGS.ToggleState = false
            if statusText then
                statusText.Text = "OFF"
                statusText.TextColor3 = Color3.fromRGB(255, 100, 100)
            end
        end
        updateButtonTexts()
    end)

    modeToggleButton.MouseButton1Click:Connect(function()
        SETTINGS.ToggleMode = not SETTINGS.ToggleMode
        updateButtonTexts()
    end)

    partButton.MouseButton1Click:Connect(function()
        currentPartIndex = currentPartIndex % #TARGET_PARTS + 1
        SETTINGS.TargetPart = TARGET_PARTS[currentPartIndex]
        updateButtonTexts()
    end)

    keyButton.MouseButton1Click:Connect(function()
        currentKeyIndex = currentKeyIndex % #KEY_LIST + 1
        SETTINGS.AimKey = KEY_LIST[currentKeyIndex][2]
        updateButtonTexts()
    end)

    wallCheckButton.MouseButton1Click:Connect(function()
        SETTINGS.VisibleCheck = not SETTINGS.VisibleCheck
        updateButtonTexts()
    end)

    teamCheckButton.MouseButton1Click:Connect(function()
        SETTINGS.TeamCheck = not SETTINGS.TeamCheck
        updateButtonTexts()
    end)

    updateButtonTexts()
end

local function createFOVCircle()
    if not scriptActive then return end
    if FOVCircle then
        FOVCircle:Remove()
    end
    FOVCircle = Drawing.new("Circle")
    FOVCircle.Visible = SETTINGS.ShowFOVCircle
    FOVCircle.Radius = SETTINGS.FOV
    FOVCircle.Thickness = 2
    FOVCircle.NumSides = 64
    FOVCircle.Color = SETTINGS.MainColor
    FOVCircle.Filled = false
    FOVCircle.Transparency = 1
    FOVCircle.Position = getMousePosition()
end

-- === ESP ===
local function createESPForPlayer(plr)
    if not scriptActive or plr == player then return end
    if ESPobjects[plr] then return end

    local espTable = {}
    
    local box = Drawing.new("Square")
    box.Visible = false
    box.Thickness = 2
    box.Color = SETTINGS.MainColor
    box.Filled = false
    box.Transparency = 1
    
    local healthBar = Drawing.new("Square")
    healthBar.Visible = false
    healthBar.Thickness = 1
    healthBar.Color = SETTINGS.HealthColor
    healthBar.Filled = true
    healthBar.Transparency = 0.3
    
    local healthBg = Drawing.new("Square")
    healthBg.Visible = false
    healthBg.Thickness = 1
    healthBg.Color = Color3.fromRGB(30, 30, 30)
    healthBg.Filled = true
    healthBg.Transparency = 0.3
    
    local nameText = Drawing.new("Text")
    nameText.Visible = false
    nameText.Center = true
    nameText.Outline = true
    nameText.Size = 15
    nameText.Color = Color3.fromRGB(255, 255, 255)
    nameText.Font = 2
    nameText.OutlineColor = SETTINGS.MainColor
    
    local teamCircle = Drawing.new("Circle")
    teamCircle.Visible = false
    teamCircle.Radius = 6
    teamCircle.Thickness = 1
    teamCircle.Color = Color3.fromRGB(255, 255, 255)
    teamCircle.Filled = true
    teamCircle.Transparency = 0.8
    teamCircle.NumSides = 16
    
    local healthText = Drawing.new("Text")
    healthText.Visible = false
    healthText.Center = true
    healthText.Outline = true
    healthText.Size = 12
    healthText.Color = Color3.fromRGB(255, 255, 255)
    healthText.Font = 2
    healthText.OutlineColor = SETTINGS.MainColor
    
    local distanceText = Drawing.new("Text")
    distanceText.Visible = false
    distanceText.Center = true
    distanceText.Outline = true
    distanceText.Size = 14
    distanceText.Color = Color3.fromRGB(255, 255, 255)
    distanceText.Font = 2
    distanceText.OutlineColor = SETTINGS.MainColor
    
    local skeletonLines = {}
    for i = 1, 15 do
        local line = Drawing.new("Line")
        line.Visible = false
        line.Thickness = 1.5
        line.Color = SETTINGS.SkeletonColor
        line.Transparency = 0.6
        table.insert(skeletonLines, line)
    end
    
    espTable["box"] = box
    espTable["healthBar"] = healthBar
    espTable["healthBg"] = healthBg
    espTable["nameText"] = nameText
    espTable["teamCircle"] = teamCircle
    espTable["healthText"] = healthText
    espTable["distanceText"] = distanceText
    espTable["skeleton"] = skeletonLines
    
    ESPobjects[plr] = espTable
end

local function updateSkeleton(plr, esp, boxX, boxY, boxWidth, boxHeight)
    local skeleton = esp["skeleton"]
    if not skeleton then return end
    
    for _, line in ipairs(skeleton) do
        line.Visible = false
    end
    
    local char = plr.Character
    if not char then return end
    
    local head = char:FindFirstChild("Head")
    local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
    local root = char:FindFirstChild("HumanoidRootPart")
    local leftArm = char:FindFirstChild("Left Arm") or char:FindFirstChild("LeftHand")
    local rightArm = char:FindFirstChild("Right Arm") or char:FindFirstChild("RightHand")
    local leftLeg = char:FindFirstChild("Left Leg") or char:FindFirstChild("LeftFoot")
    local rightLeg = char:FindFirstChild("Right Leg") or char:FindFirstChild("RightFoot")
    
    local parts = {head, torso, root, leftArm, rightArm, leftLeg, rightLeg}
    local positions = {}
    
    for i, part in ipairs(parts) do
        if part then
            local pos, onScreen = camera:WorldToViewportPoint(part.Position)
            if onScreen then
                local clampedX = math.clamp(pos.X, boxX, boxX + boxWidth)
                local clampedY = math.clamp(pos.Y, boxY, boxY + boxHeight)
                positions[i] = Vector2.new(clampedX, clampedY)
            end
        end
    end
    
    local lineIndex = 1
    
    if positions[1] and positions[2] then
        skeleton[lineIndex].From = positions[1]
        skeleton[lineIndex].To = positions[2]
        skeleton[lineIndex].Visible = true
        lineIndex = lineIndex + 1
    end
    
    if positions[2] and positions[3] then
        skeleton[lineIndex].From = positions[2]
        skeleton[lineIndex].To = positions[3]
        skeleton[lineIndex].Visible = true
        lineIndex = lineIndex + 1
    end
    
    if positions[2] and positions[4] then
        skeleton[lineIndex].From = positions[2]
        skeleton[lineIndex].To = positions[4]
        skeleton[lineIndex].Visible = true
        lineIndex = lineIndex + 1
    end
    
    if positions[2] and positions[5] then
        skeleton[lineIndex].From = positions[2]
        skeleton[lineIndex].To = positions[5]
        skeleton[lineIndex].Visible = true
        lineIndex = lineIndex + 1
    end
    
    if positions[3] and positions[6] then
        skeleton[lineIndex].From = positions[3]
        skeleton[lineIndex].To = positions[6]
        skeleton[lineIndex].Visible = true
        lineIndex = lineIndex + 1
    end
    
    if positions[3] and positions[7] then
        skeleton[lineIndex].From = positions[3]
        skeleton[lineIndex].To = positions[7]
        skeleton[lineIndex].Visible = true
        lineIndex = lineIndex + 1
    end
end

local function updateESP()
    if not scriptActive then return end
    
    for plr, esp in pairs(ESPobjects) do
        if plr and plr.Character and plr.Character:FindFirstChild("Humanoid") and plr.Character.Humanoid.Health > 0 then
            local head = plr.Character:FindFirstChild("Head")
            local humanoid = plr.Character.Humanoid
            local rootPart = plr.Character:FindFirstChild("HumanoidRootPart")
            
            if head and rootPart and humanoid and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
                local headPos, onScreen = camera:WorldToViewportPoint(head.Position)
                local rootPos, _ = camera:WorldToViewportPoint(rootPart.Position)
                
                if onScreen then
                    local playerHeight = math.abs(headPos.Y - rootPos.Y)
                    
                    local height = playerHeight * 1.6
                    local width = height * 0.5
                    
                    local boxY = rootPos.Y - height / 2
                    local boxX = rootPos.X - width / 2
                    
                    -- Бокс
                    if SETTINGS.ESPEnabled then
                        esp.box.Position = Vector2.new(boxX, boxY)
                        esp.box.Size = Vector2.new(width, height)
                        esp.box.Visible = true
                        
                        -- Здоровье
                        local healthPercent = humanoid.Health / humanoid.MaxHealth
                        local healthBarHeight = height * healthPercent
                        local healthBarY = boxY + (height - healthBarHeight)
                        
                        esp.healthBg.Position = Vector2.new(boxX - 8, boxY)
                        esp.healthBg.Size = Vector2.new(4, height)
                        esp.healthBg.Visible = true
                        
                        esp.healthBar.Position = Vector2.new(boxX - 8, healthBarY)
                        esp.healthBar.Size = Vector2.new(4, healthBarHeight)
                        esp.healthBar.Visible = true
                        
                        -- Ник
                        esp.nameText.Position = Vector2.new(boxX + width / 2, boxY - 20)
                        esp.nameText.Text = plr.Name
                        esp.nameText.Visible = true
                        
                        -- Команда
                        if SETTINGS.TeamCheck and plr.Team then
                            esp.teamCircle.Position = Vector2.new(boxX + width / 2 + 45, boxY - 20)
                            esp.teamCircle.Color = getTeamColor(plr)
                            esp.teamCircle.Visible = true
                        else
                            esp.teamCircle.Visible = false
                        end
                        
                        -- Текст здоровья
                        esp.healthText.Position = Vector2.new(boxX - 35, boxY + height / 2 - 7)
                        esp.healthText.Text = math.floor(humanoid.Health) .. "/" .. math.floor(humanoid.MaxHealth)
                        esp.healthText.Visible = true
                        
                        -- Дистанция
                        local distance = math.floor((rootPart.Position - player.Character.HumanoidRootPart.Position).Magnitude)
                        esp.distanceText.Position = Vector2.new(boxX + width / 2 + 5, boxY + height + 5)
                        esp.distanceText.Text = distance .. " studs"
                        esp.distanceText.Visible = true
                        
                        -- Скелет
                        updateSkeleton(plr, esp, boxX, boxY, width, height)
                    else
                        esp.box.Visible = false
                        esp.healthBar.Visible = false
                        esp.healthBg.Visible = false
                        esp.nameText.Visible = false
                        esp.teamCircle.Visible = false
                        esp.healthText.Visible = false
                        esp.distanceText.Visible = false
                        for _, line in ipairs(esp.skeleton) do
                            line.Visible = false
                        end
                    end
                else
                    for _, drawing in pairs(esp) do
                        if type(drawing) == "table" and drawing.Visible ~= nil then
                            drawing.Visible = false
                        elseif type(drawing) == "table" then
                            for _, line in ipairs(drawing) do
                                if line then
                                    line.Visible = false
                                end
                            end
                        end
                    end
                end
            else
                for _, drawing in pairs(esp) do
                    if type(drawing) == "table" and drawing.Visible ~= nil then
                        drawing.Visible = false
                    elseif type(drawing) == "table" then
                        for _, line in ipairs(drawing) do
                            if line then
                                line.Visible = false
                            end
                        end
                    end
                end
            end
        else
            for _, drawing in pairs(esp) do
                if type(drawing) == "table" and drawing.Visible ~= nil then
                    drawing.Visible = false
                elseif type(drawing) == "table" then
                    for _, line in ipairs(drawing) do
                        if line then
                            line.Visible = false
                        end
                    end
                end
            end
        end
    end
end

local function getTargetPart(plr)
    if SETTINGS.TargetPart == "Random" then
        local parts = {"Head", "Torso", "HumanoidRootPart"}
        local randomPart = parts[math.random(1, 3)]
        return plr.Character:FindFirstChild(randomPart)
    else
        return plr.Character:FindFirstChild(SETTINGS.TargetPart)
    end
end

local function getClosestTarget()
    if not scriptActive or not SETTINGS.AimbotEnabled then return nil end
    
    local closestTarget = nil
    local shortestDistance = SETTINGS.FOV
    local center = fovPosition
    
    for _, plr in ipairs(Players:GetPlayers()) do
        if plr ~= player and plr.Character and plr.Character:FindFirstChild("Humanoid") then
            local humanoid = plr.Character.Humanoid
            if humanoid and humanoid.Health > 0 then
                
                if SETTINGS.TeamCheck and plr.Team == player.Team then
                    continue
                end
                
                local targetPart = getTargetPart(plr)
                if not targetPart then
                    targetPart = plr.Character:FindFirstChild("Head") or plr.Character:FindFirstChild("HumanoidRootPart")
                end
                
                if targetPart then
                    if not isVisible(targetPart) then
                        continue
                    end
                    
                    local screenPoint, onScreen = camera:WorldToViewportPoint(targetPart.Position)
                    
                    if onScreen then
                        local distance = (Vector2.new(screenPoint.X, screenPoint.Y) - center).Magnitude
                        
                        if distance < shortestDistance then
                            shortestDistance = distance
                            closestTarget = targetPart
                        end
                    end
                end
            end
        end
    end
    
    return closestTarget
end

-- === ОБРАБОТКА ВВОДА (КАМЕРА БОЛЬШЕ НЕ ТРОГАЕТСЯ) ===
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not scriptActive or gameProcessed then return end
    
    if input.KeyCode == SETTINGS.AimKey and SETTINGS.AimbotEnabled then
        if SETTINGS.ToggleMode then
            SETTINGS.ToggleState = not SETTINGS.ToggleState
            aimActive = SETTINGS.ToggleState
            if statusText then
                statusText.Text = aimActive and "ON" or "OFF"
                statusText.TextColor3 = aimActive and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 100, 100)
            end
        else
            aimActive = true
            if statusText then
                statusText.Text = "ON"
                statusText.TextColor3 = Color3.fromRGB(100, 255, 100)
            end
        end
    end
    
    if input.KeyCode == SETTINGS.HideKey then
        toggleGUI()
    end
end)

UserInputService.InputEnded:Connect(function(input, gameProcessed)
    if not scriptActive or gameProcessed then return end
    
    if input.KeyCode == SETTINGS.AimKey and not SETTINGS.ToggleMode and SETTINGS.AimbotEnabled then
        aimActive = false
        if statusText then
            statusText.Text = "OFF"
            statusText.TextColor3 = Color3.fromRGB(255, 100, 100)
        end
    end
end)

-- === ИНИЦИАЛИЗАЦИЯ ===
local success, err = pcall(function()
    createGUI()
end)
if not success then
    warn("Failed to create GUI:", err)
end

createFOVCircle()

for _, plr in ipairs(Players:GetPlayers()) do
    createESPForPlayer(plr)
end

Players.PlayerAdded:Connect(function(plr)
    createESPForPlayer(plr)
end)

Players.PlayerRemoving:Connect(function(plr)
    if ESPobjects[plr] then
        for _, drawing in pairs(ESPobjects[plr]) do
            if drawing and drawing.Remove then
                pcall(function() drawing:Remove() end)
            elseif type(drawing) == "table" then
                for _, line in ipairs(drawing) do
                    if line and line.Remove then
                        pcall(function() line:Remove() end)
                    end
                end
            end
        end
        ESPobjects[plr] = nil
    end
end)

-- === ГЛАВНЫЙ ЦИКЛ ===
RunService.RenderStepped:Connect(function()
    if not scriptActive then return end
    
    fovPosition = getMousePosition()
    
    if FOVCircle and SETTINGS.ShowFOVCircle then
        FOVCircle.Position = fovPosition
        FOVCircle.Radius = SETTINGS.FOV
        
        if aimActive and SETTINGS.AimbotEnabled then
            FOVCircle.Color = SETTINGS.MainColor
            FOVCircle.Transparency = 1
        else
            FOVCircle.Color = Color3.fromRGB(230, 115, 0)
            FOVCircle.Transparency = 0.8
        end
        FOVCircle.Visible = true
    elseif FOVCircle then
        FOVCircle.Visible = false
    end

    if aimActive and SETTINGS.AimbotEnabled then
        local target = getClosestTarget()
        if target then
            local targetPos = target.Position
            local cameraPos = camera.CFrame.Position
            camera.CFrame = camera.CFrame:Lerp(CFrame.lookAt(cameraPos, targetPos), SETTINGS.Smoothness)
            currentTarget = target
        end
    end

    updateESP()
end)

-- === ВЫХОД ПО ESC ===
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if input.KeyCode == Enum.KeyCode.Escape and not gameProcessed and scriptActive then
        scriptActive = false
        aimActive = false
        SETTINGS.ToggleState = false
        
        if FOVCircle then
            FOVCircle.Visible = false
            FOVCircle:Remove()
            FOVCircle = nil
        end
        
        for _, obj in pairs(ESPobjects) do
            if obj then
                for _, drawing in pairs(obj) do
                    if drawing and drawing.Remove then
                        pcall(function() drawing:Remove() end)
                    elseif type(drawing) == "table" then
                        for _, line in ipairs(drawing) do
                            if line and line.Remove then
                                pcall(function() line:Remove() end)
                            end
                        end
                    end
                end
            end
        end
        ESPobjects = {}
        
        if ScreenGui then
            ScreenGui:Destroy()
            ScreenGui = nil
        end
        
        script:Destroy()
    end
end)

print("Banan")
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game Flick
TypeKeyless
Authoralexriderr
Views19
Likes0
PublishedApr 8, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
Fly for Brainrots Script keyless
Fly for Brainrots Script keyless
Fly for Brainrots • 👁 1
Keyless
Polo Sniper Arena Script Keyless – Auto Fire
Polo Sniper Arena Script Keyless – Auto Fire
Sniper Arena • 👁 3
Keyless
Grace Script Keyless- Auto Farm
Grace Script Keyless- Auto Farm
Grace [SOUL OVER BODY] • 👁 5
Keyless
Rivals Nexus Hub Script Keyless – Aimbot
Rivals Nexus Hub Script Keyless – Aimbot
RIVALS • 👁 6
Keyless
Rost Alpha Beta Script Keyless – Aimbot
Rost Alpha Beta Script Keyless – Aimbot
rost alpha • 👁 6
Keyless