local player = game.Players.LocalPlayer local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui")) gui.Name = "epic ui" gui.ResetOnSpawn = false local frame = Instance.new("Frame", gui) frame.Size = UDim2.new(0, 300, 0, 180) frame.Position = UDim2.new(0.35, 0, 0.3, 0) frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) frame.BorderSizePixel = 0 frame.Active = true local lineThickness = 4 local lineColor = Color3.fromRGB(40, 40, 40) -- consistent line color -- Title Bar local title = Instance.new("TextLabel", frame) title.Size = UDim2.new(1, -80, 0, 30) title.Position = UDim2.new(0, lineThickness + 6, 0, 5) title.Text = "epic ui" title.Font = Enum.Font.GothamBold title.TextColor3 = Color3.new(1, 1, 1) title.BackgroundTransparency = 1 title.TextScaled = true title.TextXAlignment = Enum.TextXAlignment.Left -- Close Button local closeBtn = Instance.new("TextButton", frame) closeBtn.Size = UDim2.new(0, 30, 0, 30) closeBtn.Position = UDim2.new(1, -35, 0, 5) closeBtn.Text = "X" closeBtn.Font = Enum.Font.GothamBold closeBtn.TextColor3 = Color3.fromRGB(255, 80, 80) closeBtn.BackgroundColor3 = lineColor closeBtn.TextScaled = true closeBtn.MouseButton1Click:Connect(function() gui:Destroy() end) -- Minimize Button local minBtn = Instance.new("TextButton", frame) minBtn.Size = UDim2.new(0, 30, 0, 30) minBtn.Position = UDim2.new(1, -70, 0, 5) minBtn.Text = "_" minBtn.Font = Enum.Font.GothamBold minBtn.TextColor3 = Color3.fromRGB(200, 200, 200) minBtn.BackgroundColor3 = lineColor minBtn.TextScaled = true -- Scroll Frame (inside left and right lines, above bottom line) local scroll = Instance.new("ScrollingFrame", frame) scroll.Size = UDim2.new(1, -lineThickness * 2 - 12, 0, 140) scroll.Position = UDim2.new(0, lineThickness + 6, 0, 40) scroll.BackgroundColor3 = Color3.fromRGB(30, 30, 30) scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 6 scroll.ScrollBarImageColor3 = Color3.fromRGB(150, 150, 150) scroll.ScrollingDirection = Enum.ScrollingDirection.Y scroll.AutomaticCanvasSize = Enum.AutomaticSize.None -- Buttons container inside scroll local buttonsFrame = Instance.new("Frame", scroll) buttonsFrame.Size = UDim2.new(1, 0, 0, 0) -- will update height later buttonsFrame.BackgroundTransparency = 1 buttonsFrame.Position = UDim2.new(0, 0, 0, 0) local buttonsList = Instance.new("UIListLayout", buttonsFrame) buttonsList.Padding = UDim.new(0, 5) -- 5px gap BETWEEN buttons buttonsList.SortOrder = Enum.SortOrder.LayoutOrder -- Add padding top & bottom equal (same space above first and below last) local padding = Instance.new("UIPadding", buttonsFrame) padding.PaddingTop = UDim.new(0, 10) -- padding above first button padding.PaddingBottom = UDim.new(0, 10) -- padding below last button local loaded = {} local function createButton(name, action) local btn = Instance.new("TextButton", buttonsFrame) btn.Size = UDim2.new(1, 0, 0, 35) btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50) btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.Gotham btn.TextScaled = true btn.Text = name btn.AutoButtonColor = true btn.MouseButton1Click:Connect(function() if loaded[name] then if loaded[name].Destroy then loaded[name]:Destroy() end loaded[name] = nil else local ok, res = pcall(action) if ok then local dummy = Instance.new("Folder", gui) dummy.Name = name .. "_Dummy" loaded[name] = dummy else warn("Failed to load " .. name) end end end) return btn end local buttonsData = { {Name = "Noclip", Action = function() return loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-NOCLIP-GUI-43727"))() end}, {Name = "Fling", Action = function() return loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Fling-gui-42897"))() end}, {Name = "Fly", Action = function() return loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Better-Fly-GUI-44304"))() end}, {Name = "Speed", Action = function() return loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Speed-GUI-43439"))() end}, {Name = "BTools", Action = function() return loadstring(game:GetObjects("rbxassetid://6695644299")[1].Source)() end}, } local buttons = {} for i, data in ipairs(buttonsData) do buttons[i] = createButton(data.Name, data.Action) buttons[i].LayoutOrder = i end -- Update buttonsFrame height = (button height + gap) * numButtons + top and bottom padding local gap = 5 local btnHeight = 35 local topPadding = 10 local bottomPadding = 10 buttonsFrame.Size = UDim2.new(1, 0, 0, (#buttons * btnHeight) + ((#buttons - 1) * gap) + topPadding + bottomPadding) scroll.CanvasSize = UDim2.new(0, 0, 0, buttonsFrame.Size.Y.Offset) -- Make UI draggable for PC and mobile local UserInputService = game:GetService("UserInputService") local dragging local dragInput local dragStart local startPos 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 dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then 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 end) -- Minimize button functionality local isMinimized = false local originalFrameSize = frame.Size minBtn.MouseButton1Click:Connect(function() if isMinimized then -- Restore UI frame.Size = originalFrameSize scroll.Visible = true isMinimized = false else -- Minimize UI (only top bar visible) frame.Size = UDim2.new(frame.Size.X.Scale, frame.Size.X.Offset, 0, 40) scroll.Visible = false isMinimized = true end end)