op menu v3
Key RequiredUniversal

op menu v3

Universal Scriptmrusscher0mrusscher0 735 views 60 executesUpdated Nov 28, 2025
Unrated
00
Lua Script•621 lines (22222 chars)
--[[
    LIQUID GLASS CORE GUI MOD MENU v3.0
    - Works in CoreGui (Executor) or PlayerGui (Studio)
    - 13 Categories, 30 Mods each (~390 total actions)
    - Added: Extra Menus [BETA] with Fly, Physics, and UI Changer
    - Draggable, Liquid Glass Theme
]]

local Players = game:GetService("Players")
local Lighting = game:GetService("Lighting")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

-- Global state management for toggled features
local isFlying = false
local flyConnection = nil
local activeEffects = {} -- Tracks active BodyForce/Fire objects

-- // CORE GUI DETECTION & PARENTING // --
local function getUiParent()
    local success, coreGui = pcall(function() return game:GetService("CoreGui") end)
    if success and coreGui then
        return coreGui
    else
        return LocalPlayer:WaitForChild("PlayerGui")
    end
end

local uiParent = getUiParent()

-- // CLEANUP PREVIOUS INSTANCES // --
for _, child in pairs(uiParent:GetChildren()) do
    if child.Name == "LiquidGlassCoreMenu" then
        child:Destroy()
    end
end

-- // UI CREATION HELPER FUNCTIONS // --
local function createRoundedCorner(parent, radius)
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, radius or 10)
    corner.Parent = parent
    return corner
end

local function createStroke(parent, thickness, transparency, color)
    local stroke = Instance.new("UIStroke")
    stroke.Thickness = thickness or 1
    stroke.Transparency = transparency or 0.5
    stroke.Color = color or Color3.fromRGB(255, 255, 255)
    stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
    stroke.Parent = parent
    return stroke
end

local function setGlassGradient(parent, color1, color2, rotation)
    local gradient = parent:FindFirstChildOfClass("UIGradient") or Instance.new("UIGradient")
    gradient.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, color1 or Color3.fromRGB(255, 255, 255)),
        ColorSequenceKeypoint.new(1, color2 or Color3.fromRGB(180, 220, 255))
    })
    gradient.Rotation = rotation or 60
    gradient.Transparency = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 0.1),
        NumberSequenceKeypoint.new(0.4, 0.3),
        NumberSequenceKeypoint.new(1, 0.6)
    })
    gradient.Parent = parent
    return gradient
end

-- // DRAGGABLE FUNCTION // --
local function makeDraggable(frame)
    local dragging, dragInput, dragStart, startPos
    
    local function update(input)
        local delta = input.Position - dragStart
        frame.Position = UDim2.new(
            startPos.X.Scale, 
            startPos.X.Offset + delta.X, 
            startPos.Y.Scale, 
            startPos.Y.Offset + delta.Y
        )
    end
    
    frame.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            dragStart = input.Position
            startPos = frame.Position
            
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    dragging = false
                end
            end)
        end
    end)
    
    frame.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
            if dragging then
                update(input)
            end
        end
    end)
end

-- // MAIN GUI SETUP // --

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "LiquidGlassCoreMenu"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.Parent = uiParent

-- Main Frame (Smaller Size)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 550, 0, 380) -- Reduced size
MainFrame.Position = UDim2.new(0.5, -275, 0.5, -190)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
MainFrame.BackgroundTransparency = 0.25
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

createRoundedCorner(MainFrame, 14)
local MainStroke = createStroke(MainFrame, 2, 0.3, Color3.fromRGB(120, 220, 255))

-- Glass overlay
local GlassEffect = Instance.new("Frame")
GlassEffect.Name = "GlassShine"
GlassEffect.Size = UDim2.new(1, 0, 1, 0)
GlassEffect.BackgroundColor3 = Color3.fromRGB(100, 180, 255)
GlassEffect.BackgroundTransparency = 0.9
GlassEffect.ZIndex = 0
GlassEffect.Parent = MainFrame
setGlassGradient(GlassEffect) -- Initial gradient

-- Top Bar
local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, 0, 0, 40)
TopBar.BackgroundTransparency = 1
TopBar.Parent = MainFrame

-- Title
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -60, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "LIQUID v3"
Title.Font = Enum.Font.GothamBlack
Title.TextSize = 22
Title.TextColor3 = Color3.fromRGB(240, 240, 255)
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TopBar

-- Close Button
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 28, 0, 28)
CloseBtn.Position = UDim2.new(1, -35, 0, 6)
CloseBtn.BackgroundColor3 = Color3.fromRGB(255, 60, 60)
CloseBtn.BackgroundTransparency = 0.2
CloseBtn.Text = "×"
CloseBtn.TextSize = 20
CloseBtn.TextColor3 = Color3.new(1,1,1)
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.Parent = TopBar
createRoundedCorner(CloseBtn, 8)
CloseBtn.MouseButton1Click:Connect(function() ScreenGui:Destroy() end)

-- Back Button
local BackButton = Instance.new("TextButton")
BackButton.Size = UDim2.new(0, 60, 0, 28)
BackButton.Position = UDim2.new(1, -105, 0, 6)
BackButton.BackgroundColor3 = Color3.fromRGB(80, 140, 200)
BackButton.BackgroundTransparency = 0.4
BackButton.Text = "Back"
BackButton.TextSize = 14
BackButton.TextColor3 = Color3.new(1,1,1)
BackButton.Font = Enum.Font.GothamBold
BackButton.Visible = false
BackButton.Parent = TopBar
createRoundedCorner(BackButton, 8)

-- Content Area
local ContentArea = Instance.new("Frame")
ContentArea.Size = UDim2.new(1, -20, 1, -50)
ContentArea.Position = UDim2.new(0, 10, 0, 45)
ContentArea.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
ContentArea.BackgroundTransparency = 0.6
ContentArea.Parent = MainFrame
createRoundedCorner(ContentArea, 10)

makeDraggable(MainFrame)

-- // SCROLLING FRAMES & LAYOUTS // --

local CategoryScroll = Instance.new("ScrollingFrame")
CategoryScroll.Name = "Categories"
CategoryScroll.Size = UDim2.new(1, -10, 1, -10)
CategoryScroll.Position = UDim2.new(0, 5, 0, 5)
CategoryScroll.BackgroundTransparency = 1
CategoryScroll.ScrollBarThickness = 3
CategoryScroll.ScrollBarImageColor3 = Color3.fromRGB(150, 200, 255)
CategoryScroll.Parent = ContentArea

local ModScroll = Instance.new("ScrollingFrame")
ModScroll.Name = "Mods"
ModScroll.Size = UDim2.new(1, -10, 1, -10)
ModScroll.Position = UDim2.new(0, 5, 0, 5)
ModScroll.BackgroundTransparency = 1
ModScroll.ScrollBarThickness = 3
ModScroll.ScrollBarImageColor3 = Color3.fromRGB(150, 200, 255)
ModScroll.Visible = false
ModScroll.Parent = ContentArea

local CatLayout = Instance.new("UIGridLayout")
CatLayout.CellSize = UDim2.new(0, 160, 0, 45)
CatLayout.CellPadding = UDim2.new(0, 8, 0, 8)
CatLayout.SortOrder = Enum.SortOrder.LayoutOrder
CatLayout.Parent = CategoryScroll

local ModLayout = Instance.new("UIGridLayout")
ModLayout.CellSize = UDim2.new(0, 120, 0, 40)
ModLayout.CellPadding = UDim2.new(0, 8, 0, 8)
ModLayout.SortOrder = Enum.SortOrder.LayoutOrder
ModLayout.Parent = ModScroll

-- // CORE FEATURE LOGIC // --

local function enableFly()
    if isFlying then return end
    isFlying = true

    local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    local hum = char:FindFirstChild("Humanoid")
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root or not hum then isFlying = false; return end
    
    local bv = Instance.new("BodyVelocity")
    bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    bv.Velocity = Vector3.new(0, 0, 0)
    bv.Name = "LiquidFlyVelocity"
    bv.Parent = root
    
    local flySpeed = 50 

    hum.PlatformStand = true

    flyConnection = RunService.RenderStepped:Connect(function()
        if not isFlying then return end
        
        local moveVector = Vector3.new()
        
        -- Forward/Backward (W/S)
        if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveVector = moveVector + root.CFrame.lookVector end
        if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveVector = moveVector - root.CFrame.lookVector end
        
        -- Left/Right (A/D)
        if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveVector = moveVector - root.CFrame.rightVector end
        if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveVector = moveVector + root.CFrame.rightVector end
        
        -- Up/Down (Space/Shift)
        if UserInputService:IsKeyDown(Enum.KeyCode.Space) then moveVector = moveVector + Vector3.new(0, 1, 0) end
        if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) or UserInputService:IsKeyDown(Enum.KeyCode.RightShift) then moveVector = moveVector - Vector3.new(0, 1, 0) end
        
        if moveVector.Magnitude > 0.1 then
            bv.Velocity = moveVector.unit * flySpeed
        else
            bv.Velocity = Vector3.new(0, 0, 0)
        end
    end)
end

local function disableFly()
    isFlying = false
    if flyConnection then flyConnection:Disconnect() end
    
    local char = LocalPlayer.Character
    local hum = char and char:FindFirstChild("Humanoid")
    local root = char and char:FindFirstChild("HumanoidRootPart")
    
    local bv = root and root:FindFirstChild("LiquidFlyVelocity")
    if bv then bv:Destroy() end
    if hum then hum.PlatformStand = false end
end

-- // UI CHANGER LOGIC // --

local uiPresets = {
    -- Name = {Color1, Color2, StrokeColor}
    BlueGlass = {Color3.fromRGB(255, 255, 255), Color3.fromRGB(180, 220, 255), Color3.fromRGB(120, 220, 255)},
    RedGlass = {Color3.fromRGB(255, 200, 200), Color3.fromRGB(255, 100, 100), Color3.fromRGB(255, 0, 0)},
    GreenGlass = {Color3.fromRGB(200, 255, 200), Color3.fromRGB(100, 255, 100), Color3.fromRGB(0, 200, 0)},
    Purple = {Color3.fromRGB(255, 200, 255), Color3.fromRGB(200, 100, 255), Color3.fromRGB(150, 50, 200)},
    Gold = {Color3.fromRGB(255, 240, 180), Color3.fromRGB(255, 210, 0), Color3.fromRGB(200, 150, 0)},
}

local function applyUIPreset(presetName)
    local preset = uiPresets[presetName]
    if not preset then return end
    
    -- Update Glass Effect
    setGlassGradient(GlassEffect, preset[1], preset[2])
    
    -- Update Main Frame Stroke
    MainStroke.Color = preset[3]
end

-- // MOD GENERATOR AND VIEW HANDLERS // --

BackButton.MouseButton1Click:Connect(function()
    ModScroll.Visible = false
    CategoryScroll.Visible = true
    BackButton.Visible = false
    Title.Text = "LIQUID v3"
    
    for _, child in pairs(ModScroll:GetChildren()) do
        if child:IsA("TextButton") then child:Destroy() end
    end
end)

local function createButton(name, parent, color, callback)
    local btn = Instance.new("TextButton")
    btn.Text = name
    btn.BackgroundColor3 = color or Color3.fromRGB(255, 255, 255)
    btn.BackgroundTransparency = 0.85
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.Font = Enum.Font.GothamSemibold
    btn.TextSize = 13
    btn.TextWrapped = true
    btn.Parent = parent
    
    createRoundedCorner(btn, 6)
    createStroke(btn, 1, 0.6, Color3.fromRGB(150, 220, 255))
    
    btn.MouseEnter:Connect(function()
        game:GetService("TweenService"):Create(btn, TweenInfo.new(0.2), {BackgroundTransparency = 0.6}):Play()
    end)
    
    btn.MouseLeave:Connect(function()
        game:GetService("TweenService"):Create(btn, TweenInfo.new(0.2), {BackgroundTransparency = 0.85}):Play()
    end)
    
    btn.MouseButton1Click:Connect(function()
        btn.BackgroundTransparency = 0.4
        task.wait(0.1)
        btn.BackgroundTransparency = 0.6
        pcall(callback)
    end)
    
    return btn
end

local function generateMods(category)
    CategoryScroll.Visible = false
    ModScroll.Visible = true
    BackButton.Visible = true
    Title.Text = string.upper(category)
    
    local char = LocalPlayer.Character
    local hum = char and char:FindFirstChild("Humanoid")
    local root = char and char:FindFirstChild("HumanoidRootPart")

    if not char or not hum or not root then return end

    if category == "Speed" then
        for i = 1, 30 do
            local val = 15 + (i * 8)
            createButton("WalkSpeed "..val, ModScroll, nil, function()
                hum.WalkSpeed = val
            end)
        end
    elseif category == "Jump" then
        for i = 1, 30 do
            local val = 45 + (i * 8)
            createButton("JumpPower "..val, ModScroll, nil, function()
                hum.UseJumpPower = true
                hum.JumpPower = val
            end)
        end
    elseif category == "Gravity" then
        for i = 1, 30 do
            local val = 196 - (i * 6.5)
            if val < 0 then val = 0 end
            createButton("Gravity "..math.floor(val), ModScroll, nil, function()
                workspace.Gravity = val
            end)
        end
    elseif category == "Movement" then
        for i = 1, 10 do
            local val = i * 15
            createButton("TP Fwd "..val, ModScroll, nil, function()
                root.CFrame = root.CFrame * CFrame.new(0, 0, -val)
            end)
        end
        for i = 1, 10 do
            local val = i * 15
            createButton("TP Up "..val, ModScroll, nil, function()
                root.CFrame = root.CFrame * CFrame.new(0, val, 0)
            end)
        end
        createButton("Noclip Toggle", ModScroll, nil, function()
            root.CanCollide = not root.CanCollide
            print("Noclip: " .. tostring(not root.CanCollide))
        end)
        for i = 1, 9 do -- 9 more movement mods
             local angle = i * 40
             createButton("Spin " .. angle .. "°", ModScroll, nil, function()
                root.CFrame = root.CFrame * CFrame.Angles(0, math.rad(angle), 0)
            end)
        end

    elseif category == "FOV" then
        for i = 1, 30 do
            local val = 65 + (i * 1.8)
            if val > 120 then val = 120 end
            createButton("FOV "..math.floor(val), ModScroll, nil, function()
                workspace.CurrentCamera.FieldOfView = val
            end)
        end
    elseif category == "Time" then
        for i = 1, 30 do
            local val = (i * 0.8) % 24
            createButton("Hour "..string.format("%.1f", val), ModScroll, nil, function()
                Lighting.ClockTime = val
            end)
        end
    elseif category == "Lighting" then
        for i = 1, 30 do
            local val = i * 0.3
            createButton("Brightness "..string.format("%.1f", val), ModScroll, nil, function()
                Lighting.Brightness = val
            end)
        end
    elseif category == "Colors" then
        for i = 1, 30 do
            createButton("Random Skin "..i, ModScroll, nil, function()
                local r, g, b = math.random(), math.random(), math.random()
                for _, p in pairs(char:GetChildren()) do
                    if p:IsA("BasePart") then p.Color = Color3.new(r,g,b) end
                end
            end)
        end
    
    elseif category == "Shaders" then
        for i = 1, 30 do
            if i <= 10 then
                createButton("Blur Level "..i, ModScroll, nil, function()
                    local blur = Lighting:FindFirstChild("LiquidBlur") or Instance.new("BlurEffect", Lighting)
                    blur.Name = "LiquidBlur"
                    blur.Size = i * 2.5
                end)
            elseif i <= 20 then
                createButton("Bloom Level "..(i-10), ModScroll, nil, function()
                    local bloom = Lighting:FindFirstChild("LiquidBloom") or Instance.new("BloomEffect", Lighting)
                    bloom.Name = "LiquidBloom"
                    bloom.Intensity = (i-10) * 0.1
                    bloom.Size = 24
                end)
            else
                createButton("Filter "..(i-20), ModScroll, nil, function()
                    local cc = Lighting:FindFirstChild("LiquidCC") or Instance.new("ColorCorrectionEffect", Lighting)
                    cc.Name = "LiquidCC"
                    cc.Saturation = ((i-20) / 10) * 2 - 1
                    cc.Contrast = ((i-20) / 10) * 0.5
                end)
            end
        end
        
    elseif category == "Weather" then
        for i = 1, 30 do
            if i <= 15 then
                local dist = 1000 - (i * 60)
                if dist < 50 then dist = 50 end
                createButton("Fog Dist "..dist, ModScroll, nil, function()
                    Lighting.FogStart = 0
                    Lighting.FogEnd = dist
                end)
            else
                createButton("Fog Color "..(i-15), ModScroll, nil, function()
                    Lighting.FogColor = Color3.fromHSV((i-15)/15, 0.7, 0.8)
                end)
            end
        end

    elseif category == "Character" then
        for i = 1, 30 do
            if i <= 10 then
                createButton("Ghost "..(i*10).."%", ModScroll, nil, function()
                    for _, p in pairs(char:GetChildren()) do
                        if p:IsA("BasePart") and p.Name ~= "HumanoidRootPart" then
                            p.Transparency = i / 10
                        end
                    end
                end)
            elseif i <= 20 then
                createButton("Wide "..(i-10), ModScroll, nil, function()
                     if hum:FindFirstChild("BodyWidthScale") then
                        hum.BodyWidthScale.Value = 1 + ((i-10)*0.2)
                     end
                end)
            else
                createButton("Tall "..(i-20), ModScroll, nil, function()
                     if hum:FindFirstChild("BodyHeightScale") then
                        hum.BodyHeightScale.Value = 1 + ((i-20)*0.2)
                     end
                end)
            end
        end

    elseif category == "Physics" then
        for i = 1, 30 do
             if i <= 15 then
                local h = i * 1.5
                createButton("HipHeight "..h, ModScroll, nil, function()
                    hum.HipHeight = h
                end)
            else
                local ang = 45 + (i-15) * 3
                createButton("MaxSlope "..ang, ModScroll, nil, function()
                    hum.MaxSlopeAngle = ang
                end)
            end
        end

    -- // EXTRA MENUS (BETA) // --
    elseif category == "Extra Menus [BETA]" then
        -- 1. Fly Menu Toggle
        createButton(isFlying and "Fly: ON (W/A/S/D/Space/Shift)" or "Fly: OFF", ModScroll, isFlying and Color3.fromRGB(50, 200, 50) or nil, function(btn)
            if isFlying then
                disableFly()
                btn.Text = "Fly: OFF"
                btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
            else
                enableFly()
                btn.Text = "Fly: ON (W/A/S/D/Space/Shift)"
                btn.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
            end
        end)
        
        -- 2. Wind Menu (BodyForce)
        for i = 1, 10 do
            local forceMag = i * 500
            createButton("Wind: Push N " .. forceMag, ModScroll, nil, function()
                local bv = root:FindFirstChild("LiquidWind") or Instance.new("BodyForce")
                bv.Name = "LiquidWind"
                bv.Force = root.CFrame.lookVector * forceMag
                bv.Parent = root
                activeEffects.wind = bv
            end)
        end

        -- 3. Fire Menu (Fire Effect)
        for i = 1, 10 do
            local heat = i * 0.1
            createButton("Fire: Heat " .. string.format("%.1f", heat), ModScroll, nil, function()
                local fire = root:FindFirstChild("LiquidFire") or Instance.new("Fire")
                fire.Name = "LiquidFire"
                fire.Heat = heat * 10
                fire.Size = heat * 5
                fire.Parent = root
                activeEffects.fire = fire
            end)
        end
        
        -- 4. Water Menu (Smoke Effect as water mist)
        for i = 1, 5 do
            local density = i * 0.15
            createButton("Water: Mist D " .. string.format("%.2f", density), ModScroll, nil, function()
                local smoke = root:FindFirstChild("LiquidMist") or Instance.new("Smoke")
                smoke.Name = "LiquidMist"
                smoke.Color = Color3.fromRGB(150, 200, 255)
                smoke.Density = density
                smoke.Size = 10
                smoke.Parent = root
                activeEffects.mist = smoke
            end)
        end

        -- 5. UI Changer Menu (Remaining 4 buttons)
        local i = 0
        for name, _ in pairs(uiPresets) do
            i = i + 1
            if i <= 4 then -- Use only 4 presets to keep the count to ~30
                createButton("UI: " .. name, ModScroll, nil, function()
                    applyUIPreset(name)
                end)
            end
        end

        createButton("Disable All Effects", ModScroll, Color3.fromRGB(200, 50, 50), function()
            disableFly()
            for _, effect in pairs(activeEffects) do
                effect:Destroy()
            end
            activeEffects = {}
            -- Manually reset fly button text state if present
        end)
    end
end

-- // INIT CATEGORIES // --

local categories = {
    "Speed", "Jump", "Gravity", "Movement", -- Merged Teleport and Movement
    "FOV", "Time", "Lighting", "Colors",
    "Shaders", "Weather", "Character", "Physics",
    "Extra Menus [BETA]" -- New Category
}

for _, cat in ipairs(categories) do
    createButton(cat, CategoryScroll, Color3.fromRGB(200, 230, 255), function()
        generateMods(cat)
    end)
end

print("Loaded Liquid v3 in " .. uiParent.Name)

Features & Information

just a cool menu it's cool

Community Comments (1)

mrusscher0mrusscher0Nov 28, 2025

sorry if this menu sucks i did not feel like putting much work into the mods I put ui work tho

More Scripts for Universal Scripts