Script with basic functions
Key RequiredUniversal

Script with basic functions

Universal ScriptBrigadirBrigadir 477 views 551 executesUpdated Jan 19, 2026
Unrated
00
Lua Script•1071 lines (36939 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:WaitForChild("HumanoidRootPart")
local mouse = player:GetMouse()

-- Состояния и настройки
local infiniteJumpEnabled, flyEnabled, noclipEnabled, speedEnabled = false, false, false, false
local ctrlDeleteEnabled, altTeleportEnabled = false, false
local espEnabled = false
local sizeEnabled = false
local espColorHue = 60

local espObjects = {}
local espConnection
local clearESP
local ensureESPForPlayer
local updateESP
local espRadius = 700 -- радиус действия ESP (в студиях)
local flySpeed, walkSpeed = 50, 50
local sizeScale = 1
local guiHue = 0
local guiMinimized = false
local minWidth, minHeight = 250, 150
local resizing, resizeStart, startSize = false, nil, nil
local resizeButton, minimizeButton

local originalScales = {}
local originalHipHeight = humanoid and humanoid.HipHeight or 2
local originalRootSize = rootPart and rootPart.Size or Vector3.new(2, 2, 1)

-- Создаем GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "CheatGUI"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = player:WaitForChild("PlayerGui")

-- Основной фрейм
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 300, 0, 570)
mainFrame.Position = UDim2.new(0, 10, 0, 10)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

local expandedWidth, expandedHeight = mainFrame.Size.X.Offset, mainFrame.Size.Y.Offset

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = mainFrame

-- Заголовок
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, 0, 0, 50)
title.Position = UDim2.new(0, 0, 0, 0)
title.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
title.BorderSizePixel = 0
title.Text = "🍌🍌🍌"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextSize = 24
title.Font = Enum.Font.GothamBold
title.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 10)
titleCorner.Parent = title

-- RGB слайдер в заголовке
local rgbSliderInTitle = Instance.new("Frame")
rgbSliderInTitle.Name = "RGBSliderInTitle"
rgbSliderInTitle.Size = UDim2.new(0, 70, 0, 16)
rgbSliderInTitle.Position = UDim2.new(0, 25, 0, 18)
rgbSliderInTitle.BackgroundTransparency = 1
rgbSliderInTitle.Parent = title

local rgbSliderBar = Instance.new("Frame")
rgbSliderBar.Name = "RGBSliderBar"
rgbSliderBar.Size = UDim2.new(1, 0, 0, 6)
rgbSliderBar.Position = UDim2.new(0, 0, 0, 5)
rgbSliderBar.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
rgbSliderBar.BorderSizePixel = 2
rgbSliderBar.BorderColor3 = Color3.fromRGB(255, 255, 255)
rgbSliderBar.Parent = rgbSliderInTitle

Instance.new("UICorner", rgbSliderBar).CornerRadius = UDim.new(0, 3)

local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
    ColorSequenceKeypoint.new(0.14, Color3.fromRGB(255, 127, 0)),
    ColorSequenceKeypoint.new(0.17, Color3.fromRGB(255, 255, 0)),
    ColorSequenceKeypoint.new(0.33, Color3.fromRGB(0, 255, 0)),
    ColorSequenceKeypoint.new(0.5, Color3.fromRGB(0, 255, 255)),
    ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 0, 255)),
    ColorSequenceKeypoint.new(0.83, Color3.fromRGB(255, 0, 255)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0))
})
gradient.Transparency = NumberSequence.new(0)
gradient.Parent = rgbSliderBar

local rgbSliderButton = Instance.new("TextButton")
rgbSliderButton.Name = "RGBSliderButton"
rgbSliderButton.Size = UDim2.new(0, 12, 0, 12)
rgbSliderButton.Position = UDim2.new(guiHue / 360, -6, 0.5, -6)
rgbSliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
rgbSliderButton.BorderSizePixel = 3
rgbSliderButton.BorderColor3 = Color3.fromRGB(0, 0, 0)
rgbSliderButton.Text = ""
rgbSliderButton.Parent = rgbSliderBar

Instance.new("UICorner", rgbSliderButton).CornerRadius = UDim.new(0, 6)
local rgbSliderGlow = Instance.new("UIStroke")
rgbSliderGlow.Color = Color3.fromRGB(255, 255, 255)
rgbSliderGlow.Thickness = 2
rgbSliderGlow.Transparency = 0.3
rgbSliderGlow.Parent = rgbSliderButton

-- Функция HSV to RGB
local function HSVtoRGB(h, s, v)
    h = h % 360
    local c = v * s
    local x = c * (1 - math.abs((h / 60) % 2 - 1))
    local m = v - c
    local r, g, b = 0, 0, 0
    
    if h < 60 then r, g, b = c, x, 0
    elseif h < 120 then r, g, b = x, c, 0
    elseif h < 180 then r, g, b = 0, c, x
    elseif h < 240 then r, g, b = 0, x, c
    elseif h < 300 then r, g, b = x, 0, c
    else r, g, b = c, 0, x
    end
    
    return Color3.new(r + m, g + m, b + m)
end

-- Функция для безопасного получения character/humanoid/rootPart
local function getCharacterParts()
    if not character or not character.Parent then
        character = player.Character
        if not character then return nil, nil, nil end
    end
    if not humanoid or not humanoid.Parent then
        humanoid = character:FindFirstChild("Humanoid")
        if not humanoid then return character, nil, nil end
    end
    if not rootPart or not rootPart.Parent then
        rootPart = character:FindFirstChild("HumanoidRootPart")
    end
    return character, humanoid, rootPart
end

-- Обновление RGB слайдера
local rgbDragging, rgbDragStart, rgbDragMode = false, nil, nil

local function updateRGBSlider(input)
    if not rgbSliderBar or not rgbSliderBar.Parent then return end
    
    local mouseLocation = input and input.Position or UserInputService:GetMouseLocation()
    local relativePos = math.clamp((mouseLocation.X - rgbSliderBar.AbsolutePosition.X) / rgbSliderBar.AbsoluteSize.X, 0, 1)
    guiHue = math.floor(relativePos * 360)
    rgbSliderButton.Position = UDim2.new(relativePos, -6, 0.5, -6)
    
    local baseColor = HSVtoRGB(guiHue, 0.9, 0.6)
    local darkerColor = HSVtoRGB(guiHue, 0.9, 0.45)
    local lighterColor = HSVtoRGB(guiHue, 0.85, 0.75)
    
    mainFrame.BackgroundColor3 = baseColor
    title.BackgroundColor3 = darkerColor
    if contentCanvas then
        for _, child in pairs(contentCanvas:GetChildren()) do
            if child:IsA("Frame") and (child.Name:find("Toggle") or child.Name:find("SpeedSlider")) then
                child.BackgroundColor3 = lighterColor
            end
        end
    end
end

local function getESPColor()
    return HSVtoRGB(espColorHue, 0.9, 1)
end

local function refreshESPColors()
    local color = getESPColor()
    for _, data in pairs(espObjects) do
        if data.stroke then
            data.stroke.Color = color
        end
        if data.frame then
            data.frame.BackgroundColor3 = color
        end
    end
end

-- Content Frame (ScrollingFrame для прокрутки при уменьшении)
local contentFrame = Instance.new("ScrollingFrame")
contentFrame.Name = "ContentFrame"
contentFrame.Size = UDim2.new(1, 0, 1, -50)
contentFrame.Position = UDim2.new(0, 0, 0, 50)
contentFrame.BackgroundTransparency = 1
contentFrame.BorderSizePixel = 0
contentFrame.ScrollBarThickness = 6
contentFrame.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 100)
contentFrame.CanvasSize = UDim2.new(0, 0, 0, 520) -- Высота контента
contentFrame.ScrollingEnabled = true
contentFrame.Parent = mainFrame

-- Canvas для ScrollingFrame
local contentCanvas = Instance.new("Frame")
contentCanvas.Name = "ContentCanvas"
contentCanvas.Size = UDim2.new(1, -6, 0, 520) -- Учитываем толщину скроллбара
contentCanvas.BackgroundTransparency = 1
contentCanvas.Parent = contentFrame

-- Компактная раскладка 2xN
local gridColumn, currentRowY, currentRowHeight = 0, 8, 0
local rowPadding = 6

local function placeElement(element, height)
    height = height or 60
    element.Size = UDim2.new(0.5, -10, 0, height)
    local xScale = gridColumn == 0 and 0 or 0.5
    local xOffset = gridColumn == 0 and 8 or 3
    element.Position = UDim2.new(xScale, xOffset, 0, currentRowY)
    currentRowHeight = math.max(currentRowHeight, height)

    gridColumn = (gridColumn + 1) % 2
    if gridColumn == 0 then
        currentRowY = currentRowY + currentRowHeight + rowPadding
        currentRowHeight = 0
    end
end

local function finalizeLayout()
    if gridColumn ~= 0 then
        currentRowY = currentRowY + currentRowHeight + rowPadding
        gridColumn, currentRowHeight = 0, 0
    end
    local totalHeight = math.max(currentRowY + 10, 120)
    contentCanvas.Size = UDim2.new(1, -6, 0, totalHeight)
    contentFrame.CanvasSize = UDim2.new(0, 0, 0, totalHeight)
end

-- Функция создания переключателя
local function createToggle(name, callback)
    local toggleFrame = Instance.new("Frame")
    toggleFrame.Name = name .. "Toggle"
    toggleFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    toggleFrame.BorderSizePixel = 0
    toggleFrame.Parent = contentCanvas
    Instance.new("UICorner", toggleFrame).CornerRadius = UDim.new(0, 8)
    placeElement(toggleFrame, 50)
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -70, 1, 0)
    label.Position = UDim2.new(0, 8, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.TextSize = 18
    label.TextScaled = true
    label.TextWrapped = true
    label.Font = Enum.Font.Gotham
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = toggleFrame
    local toggleLabelConstraint = Instance.new("UITextSizeConstraint")
    toggleLabelConstraint.MaxTextSize = 18
    toggleLabelConstraint.MinTextSize = 10
    toggleLabelConstraint.Parent = label
    
    local toggleButton = Instance.new("TextButton")
    toggleButton.Name = "ToggleButton"
    toggleButton.Size = UDim2.new(0, 36, 0, 22)
    toggleButton.Position = UDim2.new(1, -42, 0.5, -11)
    toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    toggleButton.BorderSizePixel = 0
    toggleButton.Text = "OFF"
    toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    toggleButton.TextSize = 14
    toggleButton.Font = Enum.Font.GothamBold
    toggleButton.Parent = toggleFrame
    Instance.new("UICorner", toggleButton).CornerRadius = UDim.new(0, 12)
    
    local state = false
    toggleButton.MouseButton1Click:Connect(function()
        state = not state
        toggleButton.BackgroundColor3 = state and Color3.fromRGB(0, 255, 127) or Color3.fromRGB(60, 60, 60)
        toggleButton.Text = state and "ON" or "OFF"
        callback(state)
    end)
    
    return toggleFrame
end

-- Общая функция для обработки слайдеров
local function setupSliderDrag(sliderBar, sliderButton, sliderFill, label, minValue, maxValue, updateCallback, textCallback)
    local dragging = false
    
    local function updateSlider(input)
        local relativePos = math.clamp((input.Position.X - sliderBar.AbsolutePosition.X) / sliderBar.AbsoluteSize.X, 0, 1)
        local newValue = math.floor(minValue + (maxValue - minValue) * relativePos)
        sliderFill.Size = UDim2.new(relativePos, 0, 1, 0)
        sliderButton.Position = UDim2.new(relativePos, -6, 0.5, -6)
        if label then
            label.Text = textCallback and textCallback(newValue) or (tostring(newValue))
        end
        if updateCallback then updateCallback(newValue) end
    end
    
    sliderButton.MouseButton1Down:Connect(function() dragging = true end)
    sliderBar.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            updateSlider(input)
        end
    end)
    sliderButton.MouseButton1Up:Connect(function() dragging = false end)
    sliderButton.MouseLeave:Connect(function()
        if not UserInputService:IsMouseButtonPressed(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)
    
    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = false
        end
    end)
end

-- Блок: переключатель + слайдер под ним (в одной ячейке сетки)
local function createToggleWithSlider(name, currentValue, minValue, maxValue, onToggle, onValueChanged, valueFormatter)
    local blockFrame = Instance.new("Frame")
    blockFrame.Name = name .. "Block"
    blockFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    blockFrame.BorderSizePixel = 0
    blockFrame.Parent = contentCanvas
    Instance.new("UICorner", blockFrame).CornerRadius = UDim.new(0, 8)
    -- Компактнее блок: уменьшаем высоту, чтобы не было большого пустого места под ползунком
    placeElement(blockFrame, 80)

    -- Верхняя часть: текст + переключатель
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -70, 0, 26)
    label.Position = UDim2.new(0, 8, 0, 4)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.TextSize = 18
    label.TextScaled = true
    label.TextWrapped = true
    label.Font = Enum.Font.Gotham
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = blockFrame
    local blockLabelConstraint = Instance.new("UITextSizeConstraint")
    blockLabelConstraint.MaxTextSize = 18
    blockLabelConstraint.MinTextSize = 10
    blockLabelConstraint.Parent = label

    local toggleButton = Instance.new("TextButton")
    toggleButton.Name = "ToggleButton"
    toggleButton.Size = UDim2.new(0, 36, 0, 22)
    toggleButton.Position = UDim2.new(1, -42, 0, 7)
    toggleButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    toggleButton.BorderSizePixel = 0
    toggleButton.Text = "OFF"
    toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    toggleButton.TextSize = 14
    toggleButton.Font = Enum.Font.GothamBold
    toggleButton.Parent = blockFrame
    Instance.new("UICorner", toggleButton).CornerRadius = UDim.new(0, 12)

    local state = false
    toggleButton.MouseButton1Click:Connect(function()
        state = not state
        toggleButton.BackgroundColor3 = state and Color3.fromRGB(0, 255, 127) or Color3.fromRGB(60, 60, 60)
        toggleButton.Text = state and "ON" or "OFF"
        if onToggle then
            onToggle(state)
        end
    end)

    -- Нижняя часть: слайдер скорости
    local sliderLabel = Instance.new("TextLabel")
    sliderLabel.Size = UDim2.new(1, -20, 0, 20)
    sliderLabel.Position = UDim2.new(0, 8, 0, 40)
    sliderLabel.BackgroundTransparency = 1
    local initialText = valueFormatter and valueFormatter(currentValue) or (name .. " Speed: " .. currentValue)
    sliderLabel.Text = initialText
    sliderLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    sliderLabel.TextSize = 13
    sliderLabel.Font = Enum.Font.Gotham
    sliderLabel.TextXAlignment = Enum.TextXAlignment.Left
    sliderLabel.Parent = blockFrame

    local sliderBar = Instance.new("Frame")
    sliderBar.Name = "SliderBar"
    sliderBar.Size = UDim2.new(1, -20, 0, 6)
    sliderBar.Position = UDim2.new(0, 8, 0, 62)
    sliderBar.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    sliderBar.BorderSizePixel = 0
    sliderBar.Parent = blockFrame
    Instance.new("UICorner", sliderBar).CornerRadius = UDim.new(0, 3)

    local sliderFill = Instance.new("Frame")
    sliderFill.Name = "SliderFill"
    local initialPos = (currentValue - minValue) / (maxValue - minValue)
    sliderFill.Size = UDim2.new(initialPos, 0, 1, 0)
    sliderFill.Position = UDim2.new(0, 0, 0, 0)
    sliderFill.BackgroundColor3 = Color3.fromRGB(50, 150, 255)
    sliderFill.BorderSizePixel = 0
    sliderFill.Parent = sliderBar
    Instance.new("UICorner", sliderFill).CornerRadius = UDim.new(0, 3)

    local sliderButton = Instance.new("TextButton")
    sliderButton.Name = "SliderButton"
    sliderButton.Size = UDim2.new(0, 12, 0, 12)
    sliderButton.Position = UDim2.new(initialPos, -6, 0.5, -6)
    sliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    sliderButton.BorderSizePixel = 0
    sliderButton.Text = ""
    sliderButton.Parent = sliderBar
    Instance.new("UICorner", sliderButton).CornerRadius = UDim.new(0, 6)

    setupSliderDrag(sliderBar, sliderButton, sliderFill, sliderLabel, minValue, maxValue, onValueChanged, 
        function(value) return valueFormatter and valueFormatter(value) or (name .. " Speed: " .. value) end)

    return blockFrame
end

-- Кнопка закрытия
local closeButton = Instance.new("TextButton")
closeButton.Name = "CloseButton"
closeButton.Size = UDim2.new(0, 30, 0, 30)
closeButton.Position = UDim2.new(1, -35, 0, 10)
closeButton.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
closeButton.BorderSizePixel = 0
closeButton.Text = "X"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.TextSize = 20
closeButton.Font = Enum.Font.GothamBold
closeButton.Parent = mainFrame
Instance.new("UICorner", closeButton).CornerRadius = UDim.new(0, 5)
closeButton.MouseButton1Click:Connect(function() screenGui:Destroy() end)

-- Кнопка изменения размера
resizeButton = Instance.new("TextButton")
resizeButton.Name = "ResizeButton"
resizeButton.Size = UDim2.new(0, 20, 0, 20)
resizeButton.Position = UDim2.new(1, -20, 1, -20)
resizeButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
resizeButton.BorderSizePixel = 2
resizeButton.BorderColor3 = Color3.fromRGB(200, 200, 200)
resizeButton.Text = ""
resizeButton.Parent = mainFrame
resizeButton.ZIndex = 10
Instance.new("UICorner", resizeButton).CornerRadius = UDim.new(0, 10)

resizeButton.MouseButton1Down:Connect(function()
    if guiMinimized then return end
    resizing = true
    resizeStart = UserInputService:GetMouseLocation()
    startSize = mainFrame.Size
end)

-- Кнопка сворачивания (создаем после определения resizeButton)
minimizeButton = Instance.new("TextButton")
minimizeButton.Name = "MinimizeButton"
minimizeButton.Size = UDim2.new(0, 30, 0, 30)
minimizeButton.Position = UDim2.new(1, -70, 0, 10)
minimizeButton.BackgroundColor3 = Color3.fromRGB(50, 150, 255)
minimizeButton.BorderSizePixel = 0
minimizeButton.Text = "−"
minimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeButton.TextSize = 24
minimizeButton.Font = Enum.Font.GothamBold
minimizeButton.Parent = mainFrame
Instance.new("UICorner", minimizeButton).CornerRadius = UDim.new(0, 5)

minimizeButton.MouseButton1Click:Connect(function()
    guiMinimized = not guiMinimized
    minimizeButton.Text = guiMinimized and "+" or "−"
    contentFrame.Visible = not guiMinimized

    if guiMinimized then
        expandedWidth = mainFrame.Size.X.Offset
        expandedHeight = math.max(mainFrame.Size.Y.Offset, minHeight)
        mainFrame.Size = UDim2.new(0, expandedWidth, 0, 50)
        resizing = false
    else
        mainFrame.Size = UDim2.new(0, expandedWidth, 0, math.max(expandedHeight, minHeight))
    end

    if resizeButton then
        resizeButton.Visible = not guiMinimized
    end
end)

-- Перетаскивание окна
local dragging, dragStart, startPos = false, nil, nil

-- Начало перетаскивания (по заголовку или свободному месту фрейма)
local function beginDrag(input)
    if resizing or rgbDragging then return end
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPos = mainFrame.Position
    end
end

-- Обработчик начала ввода по заголовку
title.InputBegan:Connect(function(input)
    beginDrag(input)
end)

-- Обработчик начала ввода по основному фрейму
mainFrame.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    beginDrag(input)
end)

-- RGB слайдер - обработка через события элементов
rgbSliderButton.MouseButton1Down:Connect(function()
    rgbDragging = true
    rgbDragStart = UserInputService:GetMouseLocation()
    rgbDragMode = nil
end)

rgbSliderBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        rgbDragging = true
        rgbDragStart = UserInputService:GetMouseLocation()
        rgbDragMode = "slider"
        updateRGBSlider(input)
    end
end)

-- Обработка движения мыши (RGB-слайдер и перетаскивание окна)
UserInputService.InputChanged:Connect(function(input)
    if input.UserInputType ~= Enum.UserInputType.MouseMovement then return end

    -- RGB слайдер (имеет приоритет над остальными действиями)
    if rgbDragging then
        if rgbDragMode == "slider" or not rgbDragMode then
            updateRGBSlider()
        end
        return
    end

    -- Изменение размера окна
    if resizing and resizeStart and startSize then
        local currentMouse = UserInputService:GetMouseLocation()
        local deltaX = currentMouse.X - resizeStart.X
        local deltaY = currentMouse.Y - resizeStart.Y
        local newWidth = math.max(minWidth, startSize.X.Offset + deltaX)
        local newHeight = math.max(minHeight, startSize.Y.Offset + deltaY)
        mainFrame.Size = UDim2.new(0, newWidth, 0, newHeight)
        expandedWidth = newWidth
        expandedHeight = newHeight
        return
    end

    -- Перетаскивание окна
    if dragging and dragStart and startPos and not resizing then
        local delta = input.Position - dragStart
        mainFrame.Position = UDim2.new(
            startPos.X.Scale,
            startPos.X.Offset + delta.X,
            startPos.Y.Scale,
            startPos.Y.Offset + delta.Y
        )
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
        resizing = false
        rgbDragging = false
        rgbDragStart = nil
        rgbDragMode = nil
    end
end)

-- Fly функции
local bodyVelocity, bodyPosition, bodyGyro, antiGravity = nil, nil, nil, nil

local function cleanupBodyMovers()
    for _, mover in pairs({bodyVelocity, bodyPosition, bodyGyro, antiGravity}) do
        if mover then mover:Destroy() end
    end
    bodyVelocity, bodyPosition, bodyGyro, antiGravity = nil, nil, nil, nil
    
    if rootPart and rootPart.Parent then
        for _, v in pairs(rootPart:GetChildren()) do
            if v:IsA("BodyVelocity") or v:IsA("BodyPosition") or v:IsA("BodyGyro") or v:IsA("BodyAngularVelocity") or v:IsA("BodyForce") or v:IsA("BodyThrust") then
                v:Destroy()
            end
        end
    end
end

local function enableFly()
    local char, hum, root = getCharacterParts()
    if not root or not hum then return end
    
    cleanupBodyMovers()
    
    bodyPosition = Instance.new("BodyPosition")
    bodyPosition.MaxForce = Vector3.new(50000, 50000, 50000)
    bodyPosition.Position = root.Position
    bodyPosition.Parent = root
    
    bodyGyro = Instance.new("BodyGyro")
    bodyGyro.MaxTorque = Vector3.new(50000, 50000, 50000)
    bodyGyro.CFrame = root.CFrame
    bodyGyro.Parent = root
    
    bodyVelocity = Instance.new("BodyVelocity")
    bodyVelocity.MaxForce = Vector3.new(50000, 50000, 50000)
    bodyVelocity.Velocity = Vector3.new(0, 0, 0)
    bodyVelocity.Parent = root
    
    local mass = root.AssemblyMass or 1
    local gravity = workspace.Gravity or 196.2
    antiGravity = Instance.new("BodyForce")
    antiGravity.Name = "AntiGravity"
    antiGravity.Force = Vector3.new(0, mass * gravity * 1.2, 0)
    antiGravity.Parent = root
    
    hum.PlatformStand = true
end

local function disableFly()
    cleanupBodyMovers()
    if humanoid and humanoid.Parent then
        humanoid.PlatformStand = false
        task.spawn(function()
            task.wait(0.1)
            if humanoid and humanoid.Parent and rootPart and rootPart.Parent then
                cleanupBodyMovers()
                humanoid.PlatformStand = false
                if humanoid:GetState() == Enum.HumanoidStateType.Physics then
                    humanoid:ChangeState(Enum.HumanoidStateType.Freefall)
                end
            end
        end)
    end
end

-- Создаем переключатели и блоки
-- 1-й ряд: Fly (снизу слайдер), Speed (снизу слайдер)
createToggleWithSlider("Fly", flySpeed, 20, 500,
    function(enabled)
        flyEnabled = enabled
        if enabled then
            task.spawn(function() task.wait(0.1) enableFly() end)
        else
            disableFly()
        end
    end,
    function(newSpeed)
        flySpeed = newSpeed
    end,
    nil
)

createToggleWithSlider("Speed", walkSpeed, 16, 200,
    function(enabled)
        speedEnabled = enabled
        local _, hum = getCharacterParts()
        if hum then
            hum.WalkSpeed = enabled and walkSpeed or 16
        end
    end,
    function(newSpeed)
        walkSpeed = newSpeed
        if speedEnabled then
            local _, hum = getCharacterParts()
            if hum then
                hum.WalkSpeed = walkSpeed
            end
        end
    end,
    nil
)

-- Остальные функции идут ниже, в той же 2xN сетке
createToggle("Infinite Jump", function(enabled) infiniteJumpEnabled = enabled end)

createToggle("Noclip", function(enabled) noclipEnabled = enabled end)

createToggle("Ctrl Delete", function(enabled)
    ctrlDeleteEnabled = enabled
end)

createToggle("Alt Teleport", function(enabled)
    altTeleportEnabled = enabled
end)

-- Масштаб персонажа
local function cacheOriginalScales()
    local _, hum, root = getCharacterParts()
    if not hum then return end
    originalScales = {}
    for _, name in ipairs({"BodyHeightScale", "BodyWidthScale", "BodyDepthScale", "HeadScale"}) do
        local v = hum:FindFirstChild(name)
        if v and v:IsA("NumberValue") then
            originalScales[name] = v.Value
        end
    end
    originalHipHeight = hum.HipHeight
    if root then
        originalRootSize = root.Size
    end
end

local function applyCharacterScale(scale)
    local char, hum, root = getCharacterParts()
    if not char or not hum then return end

    if char.ScaleTo then
        char:ScaleTo(scale)
        return
    end

    if hum.ScaleTo then
        hum:ScaleTo(scale)
        return
    end

    if next(originalScales) == nil then
        cacheOriginalScales()
    end

    for name, baseValue in pairs(originalScales) do
        local v = hum:FindFirstChild(name)
        if v and v:IsA("NumberValue") then
            v.Value = baseValue * scale
        end
    end

    if originalHipHeight then
        hum.HipHeight = originalHipHeight * scale
    end

    if root and originalRootSize then
        root.Size = originalRootSize * scale
    end
end

-- Блок изменения размера персонажа (Size)
createToggleWithSlider(
    "Size",
    100,
    50,
    300,
    function(enabled)
        sizeEnabled = enabled
        if not enabled then
            sizeScale = 1
            applyCharacterScale(1)
        else
            applyCharacterScale(sizeScale)
        end
    end,
    function(newPercent)
        sizeScale = newPercent / 100
        if sizeEnabled then
            applyCharacterScale(sizeScale)
        end
    end,
    function(value)
        return "Size: " .. value .. "%"
    end
)

createToggleWithSlider(
    "ESP",
    espColorHue,
    0,
    360,
    function(enabled)
        espEnabled = enabled
        if not enabled then
            clearESP()
        else
            refreshESPColors()
        end
    end,
    function(newHue)
        espColorHue = newHue
        if espEnabled then
            refreshESPColors()
        end
    end,
    function(value)
        return "Color Hue: " .. value .. "°"
    end
)

finalizeLayout()

-- Infinite Jump
UserInputService.JumpRequest:Connect(function()
    if infiniteJumpEnabled then
        local _, hum = getCharacterParts()
        if hum then
            hum:ChangeState(Enum.HumanoidStateType.Jumping)
        end
    end
end)

-- Объединенный Heartbeat для Speed и Fly
local camera = workspace.CurrentCamera
local gravity = workspace.Gravity or 196.2

RunService.Heartbeat:Connect(function()
    -- Защита скорости
    if speedEnabled then
        local _, hum = getCharacterParts()
        if hum and hum.Parent and hum.WalkSpeed ~= walkSpeed then
            hum.WalkSpeed = walkSpeed
        end
    end
    
    -- Fly обработка
    if flyEnabled then
        local char, hum, root = getCharacterParts()
        if not root or not hum then return end
        
        -- Проверка и создание body movers
        if not bodyPosition or not bodyPosition.Parent or bodyPosition.Parent ~= root then enableFly() end
        if not bodyGyro or not bodyGyro.Parent or bodyGyro.Parent ~= root then enableFly() end
        if not bodyVelocity or not bodyVelocity.Parent or bodyVelocity.Parent ~= root then enableFly() end
        
        -- Обновление антигравитации
        if not antiGravity or not antiGravity.Parent or antiGravity.Parent ~= root then
            local mass = root.AssemblyMass or 1
            antiGravity = Instance.new("BodyForce")
            antiGravity.Name = "AntiGravity"
            antiGravity.Force = Vector3.new(0, mass * gravity * 1.5, 0)
            antiGravity.Parent = root
        else
            local mass = root.AssemblyMass or 1
            antiGravity.Force = Vector3.new(0, mass * gravity * 1.5, 0)
        end
        
        if not hum.PlatformStand then hum.PlatformStand = true end
        
        -- Управление полетом
        if bodyPosition and bodyGyro and bodyVelocity then
            camera = workspace.CurrentCamera
            if camera then
                local moveDirection = Vector3.new(0, 0, 0)
                local lookVector = camera.CFrame.LookVector
                local rightVector = camera.CFrame.RightVector
                
                if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveDirection = moveDirection + lookVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveDirection = moveDirection - lookVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDirection = moveDirection - rightVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDirection = moveDirection + rightVector end
                if UserInputService:IsKeyDown(Enum.KeyCode.Space) then moveDirection = moveDirection + Vector3.new(0, 1, 0) end
                if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then moveDirection = moveDirection - Vector3.new(0, 1, 0) end
                
                if moveDirection.Magnitude > 0 then
                    moveDirection = moveDirection.Unit * flySpeed
                    local forceMultiplier = moveDirection.Y < 0 and 3 or (moveDirection.Y > 0 and 2 or 1.5)
                    bodyPosition.MaxForce = Vector3.new(50000, 50000 * forceMultiplier, 50000)
                    bodyVelocity.MaxForce = Vector3.new(50000, 50000 * forceMultiplier, 50000)
                    bodyPosition.Position = root.Position + moveDirection * 0.2
                    bodyVelocity.Velocity = moveDirection
                else
                    bodyPosition.Position = root.Position
                    bodyVelocity.Velocity = Vector3.new(0, 0, 0)
                    bodyPosition.MaxForce = Vector3.new(50000, 75000, 50000)
                    bodyVelocity.MaxForce = Vector3.new(50000, 75000, 50000)
                end
                bodyGyro.CFrame = camera.CFrame
            end
        end
    elseif bodyVelocity or bodyPosition or bodyGyro then
        cleanupBodyMovers()
    end
end)

-- Noclip
RunService.Stepped:Connect(function()
    local char, hum, root = getCharacterParts()
    if char and noclipEnabled then
        for _, part in pairs(char:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = false
            end
        end
    end
end)

-- Обновление при спавне
player.CharacterAdded:Connect(function(newCharacter)
    character = newCharacter
    humanoid = character:WaitForChild("Humanoid")
    rootPart = character:WaitForChild("HumanoidRootPart")
    originalScales = {}
    originalHipHeight = humanoid.HipHeight or 2
    originalRootSize = rootPart.Size or originalRootSize
    disableFly()
    if speedEnabled then
        humanoid.WalkSpeed = walkSpeed
    end
    if flyEnabled then enableFly() end
    if sizeEnabled then
        applyCharacterScale(sizeScale)
    end
end)

-- Ctrl Delete и Alt Teleport
local function onMouseClick()
    if not mouse then return end

    local ctrlHeld = UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) or UserInputService:IsKeyDown(Enum.KeyCode.RightControl)
    local altHeld = UserInputService:IsKeyDown(Enum.KeyCode.LeftAlt) or UserInputService:IsKeyDown(Enum.KeyCode.RightAlt)

    if ctrlDeleteEnabled and ctrlHeld then
        local target = mouse.Target
        if target and target.Parent then
            if not (character and target:IsDescendantOf(character)) then
                target:Destroy()
            end
        end
        return
    end

    if altTeleportEnabled and altHeld then
        local char, hum, root = getCharacterParts()
        if not root then return end

        local hit = mouse.Hit
        if not hit then return end

        local hipHeight = (hum and hum.HipHeight) or 2
        local rootHeight = root.Size.Y or 6
        local safetyOffset = hipHeight + (rootHeight / 2) + 1
        local destination = Vector3.new(hit.Position.X, hit.Position.Y + safetyOffset, hit.Position.Z)

        camera = workspace.CurrentCamera
        local lookTarget = camera and (destination + camera.CFrame.LookVector) or (destination + root.CFrame.LookVector)
        root.CFrame = CFrame.new(destination, lookTarget)
        if root.AssemblyLinearVelocity then
            root.AssemblyLinearVelocity = Vector3.zero
        else
            root.Velocity = Vector3.new(0, 0, 0)
        end
    end
end

mouse.Button1Down:Connect(onMouseClick)

-- ESP
clearESP = function()
    for _, data in pairs(espObjects) do
        if data.gui then data.gui:Destroy() end
    end
    espObjects = {}
end

ensureESPForPlayer = function(targetPlayer)
    if not espEnabled or targetPlayer == player then return end

    local char = targetPlayer.Character
    if not char or not char.Parent then return end

    local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
    if not root then return end

    local myChar, _, myRoot = getCharacterParts()
    if not myRoot then
        myRoot = myChar and (myChar:FindFirstChild("HumanoidRootPart") or myChar:FindFirstChild("Torso") or myChar:FindFirstChild("UpperTorso"))
        if not myRoot then return end
    end

    local existing = espObjects[targetPlayer]
    local distance = (root.Position - myRoot.Position).Magnitude
    
    if distance > espRadius then
        if existing and existing.gui then
            existing.gui:Destroy()
        end
        espObjects[targetPlayer] = nil
        return
    end

    if existing and existing.gui and existing.gui.Parent then
        return
    end

    local color = getESPColor()
    local boxGui = Instance.new("BillboardGui")
    boxGui.Name = "BananaESP_Box"
    boxGui.Adornee = root
    boxGui.Size = UDim2.new(4, 0, 6, 0)
    boxGui.StudsOffset = Vector3.new(0, 0, 0)
    boxGui.AlwaysOnTop = true
    boxGui.LightInfluence = 0
    boxGui.Parent = root

    local frame = Instance.new("Frame")
    frame.BackgroundTransparency = 0.7
    frame.BackgroundColor3 = color
    frame.BorderSizePixel = 0
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.Parent = boxGui

    local stroke = Instance.new("UIStroke")
    stroke.Thickness = 2
    stroke.Color = color
    stroke.Transparency = 0
    stroke.Parent = frame

    espObjects[targetPlayer] = {gui = boxGui, frame = frame, stroke = stroke}
end

updateESP = function()
    if not espEnabled then
        clearESP()
        return
    end

    for plr, data in pairs(espObjects) do
        if not plr or not plr.Parent or not plr.Character or not plr.Character.Parent then
            if data.gui then data.gui:Destroy() end
            espObjects[plr] = nil
        end
    end

    for _, plr in ipairs(Players:GetPlayers()) do
        if plr ~= player then
            ensureESPForPlayer(plr)
        end
    end
end

espConnection = RunService.Heartbeat:Connect(function()
    if espEnabled then
        updateESP()
    elseif next(espObjects) ~= nil then
        clearESP()
    end
end)

-- Инициализация цвета (такие же настройки, как в updateRGBSlider)
local baseColor = HSVtoRGB(guiHue, 0.9, 0.6)
local darkerColor = HSVtoRGB(guiHue, 0.9, 0.45)
mainFrame.BackgroundColor3 = baseColor
title.BackgroundColor3 = darkerColor

print("GUI загружен! Используйте переключатели для активации функций.")

Features & Information

Infinite jump, noclip, speed, alt tp, ctrl delete, size, esp

Community Comments (2)

Locomk1Locomk1Jan 19, 2026

Cool! But add More features, Like some more fly animations, But still Cool

samuraaiwollf1samuraaiwollf1Jan 19, 2026

w

More Scripts for Universal Scripts