-- NeonUI - A clean, modern Roblox GUI framework for roblox executors -- Open Source | MIT License -- https://github.com/9srow/neonui local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer local mouse = player:GetMouse() -- Configuration Theme & Settings local Config = { Version = "1.0.0", Theme = { Primary = Color3.fromRGB(15, 15, 25), Secondary = Color3.fromRGB(25, 25, 35), Accent = Color3.fromRGB(0, 255, 200), Text = Color3.fromRGB(220, 220, 220), TextDim = Color3.fromRGB(160, 160, 160), Success = Color3.fromRGB(0, 255, 100), Warning = Color3.fromRGB(255, 180, 0), Error = Color3.fromRGB(255, 80, 80), Border = Color3.fromRGB(50, 50, 60) }, Settings = { AutoSave = true, Notifications = true, SoundEffects = false, MinimizeOnStart = false, AutoExecute = false, SafeMode = true } } -- Global State local GlobalState = { Toggles = {}, Sliders = {}, Dropdowns = {}, Keybinds = {}, ActiveCategory = "Main", IsMinimized = false, LastUpdate = tick(), Statistics = { Runtime = 0, ToggleClicks = 0, SliderChanges = 0, ButtonPresses = 0 } } -- Create ScreenGui local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "NeonUI" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.Parent = player:WaitForChild("PlayerGui") -- Main Frame local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 650, 0, 450) MainFrame.Position = UDim2.new(0.5, -325, 0.5, -225) MainFrame.BackgroundColor3 = Config.Theme.Primary MainFrame.BorderSizePixel = 0 MainFrame.ClipsDescendants = false MainFrame.Active = true MainFrame.Draggable = false MainFrame.Parent = ScreenGui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 16) MainCorner.Parent = MainFrame local MainStroke = Instance.new("UIStroke") MainStroke.Thickness = 2 MainStroke.Color = Config.Theme.Accent MainStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border MainStroke.Transparency = 0.3 MainStroke.Parent = MainFrame -- Glow Effect local GlowFrame = Instance.new("Frame") GlowFrame.Name = "GlowFrame" GlowFrame.Size = UDim2.new(1, 60, 1, 60) GlowFrame.Position = UDim2.new(0, -30, 0, -30) GlowFrame.BackgroundTransparency = 1 GlowFrame.ZIndex = -1 GlowFrame.Parent = MainFrame local Glow = Instance.new("ImageLabel") Glow.Name = "Glow" Glow.Size = UDim2.new(1, 0, 1, 0) Glow.Position = UDim2.new(0, 0, 0, 0) Glow.BackgroundTransparency = 1 Glow.Image = "rbxassetid://8992231221" Glow.ImageColor3 = Color3.fromRGB(0, 100, 150) Glow.ScaleType = Enum.ScaleType.Slice Glow.SliceCenter = Rect.new(100, 100, 100, 100) Glow.SliceScale = 0.08 Glow.ImageTransparency = 0.7 Glow.ZIndex = -1 Glow.Parent = GlowFrame -- Title Bar local TitleBar = Instance.new("Frame") TitleBar.Name = "TitleBar" TitleBar.Size = UDim2.new(1, 0, 0, 45) TitleBar.BackgroundColor3 = Config.Theme.Secondary TitleBar.BorderSizePixel = 0 TitleBar.ZIndex = 10 TitleBar.Parent = MainFrame TitleBar.Active = true TitleBar.Draggable = false local dragging = false local dragStart, startPos TitleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = UserInputService:GetMouseLocation() startPos = MainFrame.Position end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local mouse = UserInputService:GetMouseLocation() local deltaX = mouse.X - dragStart.X local deltaY = mouse.Y - dragStart.Y MainFrame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + deltaX, startPos.Y.Scale, startPos.Y.Offset + deltaY ) end end) local TitleCorner = Instance.new("UICorner") TitleCorner.CornerRadius = UDim.new(0, 16) TitleCorner.Parent = TitleBar local TitleMask = Instance.new("Frame") TitleMask.Name = "Mask" TitleMask.Size = UDim2.new(1, 0, 0, 20) TitleMask.Position = UDim2.new(0, 0, 1, -20) TitleMask.BackgroundColor3 = Config.Theme.Secondary TitleMask.BorderSizePixel = 0 TitleMask.ZIndex = 10 TitleMask.Parent = TitleBar -- Logo local LogoFrame = Instance.new("Frame") LogoFrame.Name = "LogoFrame" LogoFrame.Size = UDim2.new(0, 35, 0, 35) LogoFrame.Position = UDim2.new(0, 10, 0, 5) LogoFrame.BackgroundColor3 = Config.Theme.Accent LogoFrame.BorderSizePixel = 0 LogoFrame.ZIndex = 11 LogoFrame.Parent = TitleBar local LogoCorner = Instance.new("UICorner") LogoCorner.CornerRadius = UDim.new(0, 8) LogoCorner.Parent = LogoFrame local LogoText = Instance.new("TextLabel") LogoText.Size = UDim2.new(1, 0, 1, 0) LogoText.BackgroundTransparency = 1 LogoText.Text = "NU" LogoText.TextColor3 = Color3.fromRGB(0, 0, 0) LogoText.Font = Enum.Font.GothamBold LogoText.TextSize = 16 LogoText.ZIndex = 12 LogoText.Parent = LogoFrame -- Title Label local Title = Instance.new("TextLabel") Title.Name = "Title" Title.Size = UDim2.new(1, -200, 1, -10) Title.Position = UDim2.new(0, 55, 0, 0) Title.BackgroundTransparency = 1 Title.Text = "NeonUI - v" .. Config.Version Title.TextColor3 = Config.Theme.Accent Title.TextXAlignment = Enum.TextXAlignment.Left Title.TextYAlignment = Enum.TextYAlignment.Center Title.Font = Enum.Font.GothamBold Title.TextSize = 18 Title.ZIndex = 11 Title.Parent = TitleBar -- Status Bar local StatusFrame = Instance.new("Frame") StatusFrame.Name = "StatusFrame" StatusFrame.Size = UDim2.new(0, 120, 0, 15) StatusFrame.Position = UDim2.new(0, 55, 0, 25) StatusFrame.BackgroundTransparency = 1 StatusFrame.ZIndex = 11 StatusFrame.Parent = TitleBar local Status = Instance.new("TextLabel") Status.Name = "Status" Status.Size = UDim2.new(0, 80, 1, 0) Status.Position = UDim2.new(0, 0, 0, 0) Status.BackgroundTransparency = 1 Status.Text = "● Ready" Status.TextColor3 = Config.Theme.Success Status.TextXAlignment = Enum.TextXAlignment.Left Status.Font = Enum.Font.Gotham Status.TextSize = 11 Status.ZIndex = 11 Status.Parent = StatusFrame local Ping = Instance.new("TextLabel") Ping.Name = "Ping" Ping.Size = UDim2.new(0, 60, 1, 0) Ping.Position = UDim2.new(0, 80, 0, 0) Ping.BackgroundTransparency = 1 Ping.Text = "?ms" Ping.TextColor3 = Config.Theme.TextDim Ping.TextXAlignment = Enum.TextXAlignment.Left Ping.Font = Enum.Font.Gotham Ping.TextSize = 11 Ping.ZIndex = 11 Ping.Parent = StatusFrame -- Window Controls local WindowControls = Instance.new("Frame") WindowControls.Name = "WindowControls" WindowControls.Size = UDim2.new(0, 105, 0, 35) WindowControls.Position = UDim2.new(1, -115, 0, 5) WindowControls.BackgroundTransparency = 1 WindowControls.ZIndex = 11 WindowControls.Parent = TitleBar local MinimizeButton = Instance.new("TextButton") MinimizeButton.Name = "MinimizeButton" MinimizeButton.Size = UDim2.new(0, 30, 0, 25) MinimizeButton.Position = UDim2.new(0, 0, 0, 5) MinimizeButton.BackgroundColor3 = Color3.fromRGB(40, 40, 50) MinimizeButton.BorderSizePixel = 0 MinimizeButton.Text = "−" MinimizeButton.TextColor3 = Config.Theme.Text MinimizeButton.Font = Enum.Font.GothamBold MinimizeButton.TextSize = 16 MinimizeButton.ZIndex = 12 MinimizeButton.Parent = WindowControls local MinimizeCorner = Instance.new("UICorner") MinimizeCorner.CornerRadius = UDim.new(0, 6) MinimizeCorner.Parent = MinimizeButton local SettingsButton = Instance.new("TextButton") SettingsButton.Name = "SettingsButton" SettingsButton.Size = UDim2.new(0, 30, 0, 25) SettingsButton.Position = UDim2.new(0, 35, 0, 5) SettingsButton.BackgroundColor3 = Color3.fromRGB(40, 40, 50) SettingsButton.BorderSizePixel = 0 SettingsButton.Text = "⚙" SettingsButton.TextColor3 = Config.Theme.Text SettingsButton.Font = Enum.Font.GothamBold SettingsButton.TextSize = 14 SettingsButton.ZIndex = 12 SettingsButton.Parent = WindowControls local SettingsCorner = Instance.new("UICorner") SettingsCorner.CornerRadius = UDim.new(0, 6) SettingsCorner.Parent = SettingsButton local CloseButton = Instance.new("TextButton") CloseButton.Name = "CloseButton" CloseButton.Size = UDim2.new(0, 30, 0, 25) CloseButton.Position = UDim2.new(0, 70, 0, 5) CloseButton.BackgroundColor3 = Color3.fromRGB(255, 60, 60) CloseButton.BorderSizePixel = 0 CloseButton.Text = "×" CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255) CloseButton.Font = Enum.Font.GothamBold CloseButton.TextSize = 18 CloseButton.ZIndex = 12 CloseButton.Parent = WindowControls local CloseCorner = Instance.new("UICorner") CloseCorner.CornerRadius = UDim.new(0, 6) CloseCorner.Parent = CloseButton -- Category Container local CategoryContainer = Instance.new("Frame") CategoryContainer.Name = "CategoryContainer" CategoryContainer.Size = UDim2.new(0, 160, 1, -55) CategoryContainer.Position = UDim2.new(0, 10, 0, 50) CategoryContainer.BackgroundColor3 = Config.Theme.Secondary CategoryContainer.BorderSizePixel = 0 CategoryContainer.ZIndex = 5 CategoryContainer.Parent = MainFrame local CategoryCorner = Instance.new("UICorner") CategoryCorner.CornerRadius = UDim.new(0, 12) CategoryCorner.Parent = CategoryContainer local CategoryStroke = Instance.new("UIStroke") CategoryStroke.Color = Config.Theme.Border CategoryStroke.Thickness = 1 CategoryStroke.Parent = CategoryContainer local CategoryScroll = Instance.new("ScrollingFrame") CategoryScroll.Name = "CategoryScroll" CategoryScroll.Size = UDim2.new(1, -10, 1, -10) CategoryScroll.Position = UDim2.new(0, 5, 0, 5) CategoryScroll.BackgroundTransparency = 1 CategoryScroll.BorderSizePixel = 0 CategoryScroll.ScrollBarThickness = 3 CategoryScroll.ScrollBarImageColor3 = Config.Theme.Accent CategoryScroll.CanvasSize = UDim2.new(0, 0, 0, 0) CategoryScroll.ZIndex = 6 CategoryScroll.Parent = CategoryContainer local CategoryLayout = Instance.new("UIListLayout") CategoryLayout.SortOrder = Enum.SortOrder.LayoutOrder CategoryLayout.Padding = UDim.new(0, 5) CategoryLayout.Parent = CategoryScroll -- Content Container local ContentContainer = Instance.new("Frame") ContentContainer.Name = "ContentContainer" ContentContainer.Size = UDim2.new(1, -185, 1, -55) ContentContainer.Position = UDim2.new(0, 175, 0, 50) ContentContainer.BackgroundColor3 = Config.Theme.Secondary ContentContainer.BorderSizePixel = 0 ContentContainer.ZIndex = 5 ContentContainer.Parent = MainFrame local ContentCorner = Instance.new("UICorner") ContentCorner.CornerRadius = UDim.new(0, 12) ContentCorner.Parent = ContentContainer local ContentStroke = Instance.new("UIStroke") ContentStroke.Color = Config.Theme.Border ContentStroke.Thickness = 1 ContentStroke.Parent = ContentContainer local ContentScroll = Instance.new("ScrollingFrame") ContentScroll.Name = "ContentScroll" ContentScroll.Size = UDim2.new(1, -10, 1, -10) ContentScroll.Position = UDim2.new(0, 5, 0, 5) ContentScroll.BackgroundTransparency = 1 ContentScroll.BorderSizePixel = 0 ContentScroll.ScrollBarThickness = 4 ContentScroll.ScrollBarImageColor3 = Config.Theme.Accent ContentScroll.CanvasSize = UDim2.new(0, 0, 0, 0) ContentScroll.ZIndex = 6 ContentScroll.Parent = ContentContainer -- Categories Definition (Replace with your own!) local Categories = { { Name = "General", Icon = "⚙", LayoutOrder = 1, Items = { {Type = "Toggle", Name = "Enable Feature A", Default = false, Description = "Toggles feature A on/off"}, {Type = "Toggle", Name = "Enable Feature B", Default = true, Description = "Enables enhanced performance mode"}, {Type = "Toggle", Name = "Auto Save", Default = true, Description = "Automatically saves settings"} } }, { Name = "Visual", Icon = "🎨", LayoutOrder = 2, Items = { {Type = "Slider", Name = "Brightness", Min = 0, Max = 100, Default = 75, Description = "Adjust UI brightness"}, {Type = "Slider", Name = "Opacity", Min = 30, Max = 100, Default = 80, Description = "Set panel transparency"}, {Type = "Dropdown", Name = "Theme", Options = {"Light", "Dark", "Auto"}, Default = "Dark"} } }, { Name = "Performance", Icon = "⚡", LayoutOrder = 3, Items = { {Type = "Slider", Name = "Update Rate", Min = 1, Max = 60, Default = 30, Description = "Render update frequency (FPS)"}, {Type = "Button", Name = "Reset to Defaults", Description = "Restore all settings to factory defaults"}, {Type = "Button", Name = "Clear Cache", Description = "Remove temporary data"} } }, { Name = "Advanced", Icon = "🔧", LayoutOrder = 4, Items = { {Type = "Toggle", Name = "Debug Mode", Default = false, Description = "Show internal logs in output"}, {Type = "Separator"}, {Type = "Button", Name = "Export Settings", Description = "Save current configuration to file"}, {Type = "Button", Name = "Import Settings", Description = "Load configuration from file"} } } } -- Helper Functions local function createCategoryButton(categoryData) local CategoryButton = Instance.new("TextButton") CategoryButton.Name = categoryData.Name .. "CategoryButton" CategoryButton.Size = UDim2.new(1, -10, 0, 35) CategoryButton.BackgroundColor3 = categoryData.Name == GlobalState.ActiveCategory and Config.Theme.Accent or Color3.fromRGB(35, 35, 45) CategoryButton.BorderSizePixel = 0 CategoryButton.Text = "" CategoryButton.LayoutOrder = categoryData.LayoutOrder CategoryButton.ZIndex = 7 CategoryButton.Parent = CategoryScroll local ButtonCorner = Instance.new("UICorner") ButtonCorner.CornerRadius = UDim.new(0, 8) ButtonCorner.Parent = CategoryButton local Icon = Instance.new("TextLabel") Icon.Name = "Icon" Icon.Size = UDim2.new(0, 25, 0, 25) Icon.Position = UDim2.new(0, 8, 0, 5) Icon.BackgroundTransparency = 1 Icon.Text = categoryData.Icon Icon.TextColor3 = categoryData.Name == GlobalState.ActiveCategory and Color3.fromRGB(0, 0, 0) or Config.Theme.Text Icon.Font = Enum.Font.Gotham Icon.TextSize = 16 Icon.ZIndex = 8 Icon.Parent = CategoryButton local Label = Instance.new("TextLabel") Label.Name = "Label" Label.Size = UDim2.new(1, -40, 1, 0) Label.Position = UDim2.new(0, 35, 0, 0) Label.BackgroundTransparency = 1 Label.Text = categoryData.Name Label.TextColor3 = categoryData.Name == GlobalState.ActiveCategory and Color3.fromRGB(0, 0, 0) or Config.Theme.Text Label.TextXAlignment = Enum.TextXAlignment.Left Label.Font = Enum.Font.GothamBold Label.TextSize = 12 Label.ZIndex = 8 Label.Parent = CategoryButton return CategoryButton end local function createToggle(data, position, parent) local ToggleFrame = Instance.new("Frame") ToggleFrame.Name = data.Name .. "Toggle" ToggleFrame.Size = UDim2.new(1, -20, 0, 45) ToggleFrame.Position = position ToggleFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40) ToggleFrame.BorderSizePixel = 0 ToggleFrame.ZIndex = 7 ToggleFrame.Parent = parent local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(0, 8) ToggleCorner.Parent = ToggleFrame local ToggleStroke = Instance.new("UIStroke") ToggleStroke.Color = Config.Theme.Border ToggleStroke.Thickness = 1 ToggleStroke.Parent = ToggleFrame local ToggleLabel = Instance.new("TextLabel") ToggleLabel.Name = "Label" ToggleLabel.Size = UDim2.new(1, -70, 0, 20) ToggleLabel.Position = UDim2.new(0, 15, 0, 5) ToggleLabel.BackgroundTransparency = 1 ToggleLabel.Text = data.Name ToggleLabel.TextColor3 = Config.Theme.Text ToggleLabel.TextXAlignment = Enum.TextXAlignment.Left ToggleLabel.Font = Enum.Font.GothamBold ToggleLabel.TextSize = 14 ToggleLabel.ZIndex = 8 ToggleLabel.Parent = ToggleFrame local Description = Instance.new("TextLabel") Description.Name = "Description" Description.Size = UDim2.new(1, -70, 0, 15) Description.Position = UDim2.new(0, 15, 0, 25) Description.BackgroundTransparency = 1 Description.Text = data.Description or "" Description.TextColor3 = Config.Theme.TextDim Description.TextXAlignment = Enum.TextXAlignment.Left Description.Font = Enum.Font.Gotham Description.TextSize = 11 Description.ZIndex = 8 Description.Parent = ToggleFrame local ToggleButton = Instance.new("TextButton") ToggleButton.Name = "Button" ToggleButton.Size = UDim2.new(0, 50, 0, 25) ToggleButton.Position = UDim2.new(1, -60, 0, 10) ToggleButton.BackgroundColor3 = data.Default and Config.Theme.Success or Color3.fromRGB(60, 60, 70) ToggleButton.BorderSizePixel = 0 ToggleButton.Text = "" ToggleButton.ZIndex = 8 ToggleButton.Parent = ToggleFrame local ToggleButtonCorner = Instance.new("UICorner") ToggleButtonCorner.CornerRadius = UDim.new(0, 12) ToggleButtonCorner.Parent = ToggleButton local ToggleDot = Instance.new("Frame") ToggleDot.Name = "Dot" ToggleDot.Size = UDim2.new(0, 19, 0, 19) ToggleDot.Position = data.Default and UDim2.new(0, 28, 0, 3) or UDim2.new(0, 3, 0, 3) ToggleDot.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ToggleDot.BorderSizePixel = 0 ToggleDot.ZIndex = 9 ToggleDot.Parent = ToggleButton local DotCorner = Instance.new("UICorner") DotCorner.CornerRadius = UDim.new(0, 10) DotCorner.Parent = ToggleDot GlobalState.Toggles[data.Name] = { frame = ToggleFrame, button = ToggleButton, dot = ToggleDot, state = data.Default or false, data = data } return ToggleFrame end local function createSlider(data, position, parent) local value = data.Default or data.Min local SliderFrame = Instance.new("Frame") SliderFrame.Name = data.Name .. "Slider" SliderFrame.Size = UDim2.new(1, -20, 0, 65) SliderFrame.Position = position SliderFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40) SliderFrame.BorderSizePixel = 0 SliderFrame.ZIndex = 7 SliderFrame.Parent = parent local SliderCorner = Instance.new("UICorner") SliderCorner.CornerRadius = UDim.new(0, 8) SliderCorner.Parent = SliderFrame local SliderStroke = Instance.new("UIStroke") SliderStroke.Color = Config.Theme.Border SliderStroke.Thickness = 1 SliderStroke.Parent = SliderFrame local SliderLabel = Instance.new("TextLabel") SliderLabel.Name = "Label" SliderLabel.Size = UDim2.new(0.7, 0, 0, 20) SliderLabel.Position = UDim2.new(0, 15, 0, 5) SliderLabel.BackgroundTransparency = 1 SliderLabel.Text = data.Name SliderLabel.TextColor3 = Config.Theme.Text SliderLabel.TextXAlignment = Enum.TextXAlignment.Left SliderLabel.Font = Enum.Font.GothamBold SliderLabel.TextSize = 14 SliderLabel.ZIndex = 8 SliderLabel.Parent = SliderFrame local ValueLabel = Instance.new("TextLabel") ValueLabel.Name = "ValueLabel" ValueLabel.Size = UDim2.new(0.3, -15, 0, 20) ValueLabel.Position = UDim2.new(0.7, 0, 0, 5) ValueLabel.BackgroundTransparency = 1 ValueLabel.Text = tostring(value) ValueLabel.TextColor3 = Config.Theme.Accent ValueLabel.TextXAlignment = Enum.TextXAlignment.Right ValueLabel.Font = Enum.Font.GothamBold ValueLabel.TextSize = 13 ValueLabel.ZIndex = 8 ValueLabel.Parent = SliderFrame local Description = Instance.new("TextLabel") Description.Name = "Description" Description.Size = UDim2.new(1, -30, 0, 15) Description.Position = UDim2.new(0, 15, 0, 25) Description.BackgroundTransparency = 1 Description.Text = data.Description or "" Description.TextColor3 = Config.Theme.TextDim Description.TextXAlignment = Enum.TextXAlignment.Left Description.Font = Enum.Font.Gotham Description.TextSize = 11 Description.ZIndex = 8 Description.Parent = SliderFrame local SliderTrack = Instance.new("Frame") SliderTrack.Name = "Track" SliderTrack.Size = UDim2.new(1, -30, 0, 8) SliderTrack.Position = UDim2.new(0, 15, 0, 45) SliderTrack.BackgroundColor3 = Color3.fromRGB(50, 50, 60) SliderTrack.BorderSizePixel = 0 SliderTrack.ZIndex = 8 SliderTrack.Parent = SliderFrame local TrackCorner = Instance.new("UICorner") TrackCorner.CornerRadius = UDim.new(0, 4) TrackCorner.Parent = SliderTrack local SliderFill = Instance.new("Frame") SliderFill.Name = "Fill" local fillSize = ((value - data.Min) / (data.Max - data.Min)) SliderFill.Size = UDim2.new(fillSize, 0, 1, 0) SliderFill.Position = UDim2.new(0, 0, 0, 0) SliderFill.BackgroundColor3 = Config.Theme.Accent SliderFill.BorderSizePixel = 0 SliderFill.ZIndex = 9 SliderFill.Parent = SliderTrack local FillCorner = Instance.new("UICorner") FillCorner.CornerRadius = UDim.new(0, 4) FillCorner.Parent = SliderFill local SliderButton = Instance.new("TextButton") SliderButton.Name = "SliderButton" SliderButton.Size = UDim2.new(0, 20, 0, 20) SliderButton.Position = UDim2.new(fillSize, -10, 0, -6) SliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderButton.BorderSizePixel = 0 SliderButton.Text = "" SliderButton.ZIndex = 10 SliderButton.Parent = SliderTrack local SliderButtonCorner = Instance.new("UICorner") SliderButtonCorner.CornerRadius = UDim.new(0, 10) SliderButtonCorner.Parent = SliderButton GlobalState.Sliders[data.Name] = { frame = SliderFrame, label = SliderLabel, valueLabel = ValueLabel, track = SliderTrack, fill = SliderFill, button = SliderButton, min = data.Min, max = data.Max, value = value, data = data } return SliderFrame end local function createDropdown(data, position, parent) local DropdownFrame = Instance.new("Frame") DropdownFrame.Name = data.Name .. "Dropdown" DropdownFrame.Size = UDim2.new(1, -20, 0, 45) DropdownFrame.Position = position DropdownFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40) DropdownFrame.BorderSizePixel = 0 DropdownFrame.ZIndex = 7 DropdownFrame.Parent = parent local DropdownCorner = Instance.new("UICorner") DropdownCorner.CornerRadius = UDim.new(0, 8) DropdownCorner.Parent = DropdownFrame local DropdownStroke = Instance.new("UIStroke") DropdownStroke.Color = Config.Theme.Border DropdownStroke.Thickness = 1 DropdownStroke.Parent = DropdownFrame local DropdownLabel = Instance.new("TextLabel") DropdownLabel.Name = "Label" DropdownLabel.Size = UDim2.new(0.4, 0, 1, 0) DropdownLabel.Position = UDim2.new(0, 15, 0, 0) DropdownLabel.BackgroundTransparency = 1 DropdownLabel.Text = data.Name DropdownLabel.TextColor3 = Config.Theme.Text DropdownLabel.TextXAlignment = Enum.TextXAlignment.Left DropdownLabel.TextYAlignment = Enum.TextYAlignment.Center DropdownLabel.Font = Enum.Font.GothamBold DropdownLabel.TextSize = 14 DropdownLabel.ZIndex = 8 DropdownLabel.Parent = DropdownFrame local DropdownButton = Instance.new("TextButton") DropdownButton.Name = "Button" DropdownButton.Size = UDim2.new(0.55, -20, 0, 30) DropdownButton.Position = UDim2.new(0.4, 5, 0, 7) DropdownButton.BackgroundColor3 = Color3.fromRGB(40, 40, 50) DropdownButton.BorderSizePixel = 0 DropdownButton.Text = data.Default or data.Options[1] DropdownButton.TextColor3 = Config.Theme.Text DropdownButton.TextXAlignment = Enum.TextXAlignment.Left DropdownButton.Font = Enum.Font.Gotham DropdownButton.TextSize = 12 DropdownButton.ZIndex = 8 DropdownButton.Parent = DropdownFrame local DropdownButtonCorner = Instance.new("UICorner") DropdownButtonCorner.CornerRadius = UDim.new(0, 6) DropdownButtonCorner.Parent = DropdownButton local DropdownArrow = Instance.new("TextLabel") DropdownArrow.Name = "Arrow" DropdownArrow.Size = UDim2.new(0, 20, 1, 0) DropdownArrow.Position = UDim2.new(1, -25, 0, 0) DropdownArrow.BackgroundTransparency = 1 DropdownArrow.Text = "▼" DropdownArrow.TextColor3 = Config.Theme.TextDim DropdownArrow.TextXAlignment = Enum.TextXAlignment.Center DropdownArrow.TextYAlignment = Enum.TextYAlignment.Center DropdownArrow.Font = Enum.Font.Gotham DropdownArrow.TextSize = 10 DropdownArrow.ZIndex = 9 DropdownArrow.Parent = DropdownButton GlobalState.Dropdowns[data.Name] = { frame = DropdownFrame, button = DropdownButton, arrow = DropdownArrow, options = data.Options, selected = data.Default or data.Options[1], expanded = false, data = data } return DropdownFrame end local function createSeparator(position, parent) local SeparatorFrame = Instance.new("Frame") SeparatorFrame.Name = "Separator" SeparatorFrame.Size = UDim2.new(1, -20, 0, 1) SeparatorFrame.Position = position SeparatorFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SeparatorFrame.BorderSizePixel = 0 SeparatorFrame.ZIndex = 7 SeparatorFrame.Parent = parent return SeparatorFrame end local function createButton(data, position, parent) local Button = Instance.new("TextButton") Button.Name = data.Name .. "Button" Button.Size = UDim2.new(1, -20, 0, 40) Button.Position = position Button.BackgroundColor3 = Color3.fromRGB(40, 40, 55) Button.BorderSizePixel = 0 Button.Text = data.Name Button.TextColor3 = Config.Theme.Text Button.Font = Enum.Font.GothamBold Button.TextSize = 14 Button.ZIndex = 7 Button.Parent = parent local ButtonCorner = Instance.new("UICorner") ButtonCorner.CornerRadius = UDim.new(0, 8) ButtonCorner.Parent = Button local ButtonStroke = Instance.new("UIStroke") ButtonStroke.Color = Config.Theme.Border ButtonStroke.Thickness = 1 ButtonStroke.Parent = Button if data.Description then local ButtonDescription = Instance.new("TextLabel") ButtonDescription.Name = "Description" ButtonDescription.Size = UDim2.new(1, -20, 0, 15) ButtonDescription.Position = UDim2.new(0, 10, 1, 5) ButtonDescription.BackgroundTransparency = 1 ButtonDescription.Text = data.Description ButtonDescription.TextColor3 = Config.Theme.TextDim ButtonDescription.TextXAlignment = Enum.TextXAlignment.Center ButtonDescription.Font = Enum.Font.Gotham ButtonDescription.TextSize = 10 ButtonDescription.ZIndex = 7 ButtonDescription.Parent = Button.Parent end return Button end local function animateToggle(toggleData) if not toggleData then return end toggleData.state = not toggleData.state GlobalState.Statistics.ToggleClicks = GlobalState.Statistics.ToggleClicks + 1 local newColor = toggleData.state and Config.Theme.Success or Color3.fromRGB(60, 60, 70) local newPosition = toggleData.state and UDim2.new(0, 28, 0, 3) or UDim2.new(0, 3, 0, 3) TweenService:Create(toggleData.button, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { BackgroundColor3 = newColor }):Play() TweenService:Create(toggleData.dot, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { Position = newPosition }):Play() if Config.Settings.Notifications then local status = toggleData.state and "Enabled" or "Disabled" print("[NeonUI] " .. toggleData.data.Name .. " " .. status) end end local function handleSlider(sliderData, input) if not sliderData then return end local track = sliderData.track local trackPos = track.AbsolutePosition local trackSize = track.AbsoluteSize local mouseX = input.Position.X local relativeX = math.max(0, math.min(1, (mouseX - trackPos.X) / trackSize.X)) local newValue = math.floor(sliderData.min + (sliderData.max - sliderData.min) * relativeX) if newValue ~= sliderData.value then sliderData.value = newValue sliderData.valueLabel.Text = tostring(newValue) GlobalState.Statistics.SliderChanges = GlobalState.Statistics.SliderChanges + 1 TweenService:Create(sliderData.fill, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Size = UDim2.new(relativeX, 0, 1, 0) }):Play() TweenService:Create(sliderData.button, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Position = UDim2.new(relativeX, -10, 0, -6) }):Play() end end local function toggleDropdown(dropdownData) if not dropdownData then return end dropdownData.expanded = not dropdownData.expanded if dropdownData.expanded then local DropdownMenu = Instance.new("Frame") DropdownMenu.Name = "DropdownMenu" DropdownMenu.Size = UDim2.new(0.55, -20, 0, #dropdownData.options * 30) DropdownMenu.Position = UDim2.new(0.4, 5, 0, 37) DropdownMenu.BackgroundColor3 = Color3.fromRGB(35, 35, 45) DropdownMenu.BorderSizePixel = 0 DropdownMenu.ZIndex = 15 DropdownMenu.Parent = dropdownData.frame local MenuCorner = Instance.new("UICorner") MenuCorner.CornerRadius = UDim.new(0, 6) MenuCorner.Parent = DropdownMenu local MenuStroke = Instance.new("UIStroke") MenuStroke.Color = Config.Theme.Accent MenuStroke.Thickness = 1 MenuStroke.Parent = DropdownMenu local MenuLayout = Instance.new("UIListLayout") MenuLayout.SortOrder = Enum.SortOrder.LayoutOrder MenuLayout.Parent = DropdownMenu for i, option in ipairs(dropdownData.options) do local OptionButton = Instance.new("TextButton") OptionButton.Name = "Option" .. i OptionButton.Size = UDim2.new(1, 0, 0, 30) OptionButton.BackgroundColor3 = option == dropdownData.selected and Config.Theme.Accent or Color3.fromRGB(40, 40, 50) OptionButton.BorderSizePixel = 0 OptionButton.Text = option OptionButton.TextColor3 = option == dropdownData.selected and Color3.fromRGB(0, 0, 0) or Config.Theme.Text OptionButton.Font = Enum.Font.Gotham OptionButton.TextSize = 11 OptionButton.ZIndex = 16 OptionButton.LayoutOrder = i OptionButton.Parent = DropdownMenu OptionButton.MouseButton1Click:Connect(function() dropdownData.selected = option dropdownData.button.Text = option dropdownData.expanded = false DropdownMenu:Destroy() TweenService:Create(dropdownData.arrow, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { Rotation = 0 }):Play() end) OptionButton.MouseEnter:Connect(function() if option ~= dropdownData.selected then TweenService:Create(OptionButton, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(50, 50, 60) }):Play() end end) OptionButton.MouseLeave:Connect(function() if option ~= dropdownData.selected then TweenService:Create(OptionButton, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(40, 40, 50) }):Play() end end) end TweenService:Create(dropdownData.arrow, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { Rotation = 180 }):Play() local connection connection = UserInputService.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then local mousePos = UserInputService:GetMouseLocation() local framePos = DropdownMenu.AbsolutePosition local frameSize = DropdownMenu.AbsoluteSize if mousePos.X < framePos.X or mousePos.X > framePos.X + frameSize.X or mousePos.Y < framePos.Y or mousePos.Y > framePos.Y + frameSize.Y then dropdownData.expanded = false DropdownMenu:Destroy() connection:Disconnect() TweenService:Create(dropdownData.arrow, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { Rotation = 0 }):Play() end end end) end end local function switchCategory(categoryName) if GlobalState.ActiveCategory == categoryName then return end for _, categoryData in ipairs(Categories) do local content = ContentScroll:FindFirstChild(categoryData.Name .. "Content") if content then content.Visible = false end local button = CategoryScroll:FindFirstChild(categoryData.Name .. "CategoryButton") if button then local isActive = categoryData.Name == categoryName TweenService:Create(button, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { BackgroundColor3 = isActive and Config.Theme.Accent or Color3.fromRGB(35, 35, 45) }):Play() local icon = button:FindFirstChild("Icon") local label = button:FindFirstChild("Label") if icon and label then TweenService:Create(icon, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { TextColor3 = isActive and Color3.fromRGB(0, 0, 0) or Config.Theme.Text }):Play() TweenService:Create(label, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { TextColor3 = isActive and Color3.fromRGB(0, 0, 0) or Config.Theme.Text }):Play() end end end GlobalState.ActiveCategory = categoryName local newContent = ContentScroll:FindFirstChild(categoryName .. "Content") if newContent then newContent.Visible = true end end local function updateCanvasSize() local totalHeight = 0 for _, categoryData in ipairs(Categories) do totalHeight = totalHeight + 40 end CategoryScroll.CanvasSize = UDim2.new(0, 0, 0, totalHeight) local activeContent = ContentScroll:FindFirstChild(GlobalState.ActiveCategory .. "Content") if activeContent then ContentScroll.CanvasSize = UDim2.new(0, 0, 0, activeContent.Size.Y.Offset + 20) end end -- Create UI Elements local categoryButtons = {} local categoryContents = {} local maxContentHeight = 0 for _, categoryData in ipairs(Categories) do local button = createCategoryButton(categoryData) categoryButtons[categoryData.Name] = button local content, height = createCategoryContent(categoryData) categoryContents[categoryData.Name] = content maxContentHeight = math.max(maxContentHeight, height) button.MouseButton1Click:Connect(function() switchCategory(categoryData.Name) updateCanvasSize() end) button.MouseEnter:Connect(function() if GlobalState.ActiveCategory ~= categoryData.Name then TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(45, 45, 55) }):Play() end end) button.MouseLeave:Connect(function() if GlobalState.ActiveCategory ~= categoryData.Name then TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(35, 35, 45) }):Play() end end) end -- Bind Interactions for name, toggleData in pairs(GlobalState.Toggles) do toggleData.button.MouseButton1Click:Connect(function() animateToggle(toggleData) end) toggleData.button.MouseEnter:Connect(function() TweenService:Create(toggleData.button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { Size = UDim2.new(0, 52, 0, 27) }):Play() end) toggleData.button.MouseLeave:Connect(function() TweenService:Create(toggleData.button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { Size = UDim2.new(0, 50, 0, 25) }):Play() end) end for name, sliderData in pairs(GlobalState.Sliders) do local dragging = false sliderData.button.MouseButton1Down:Connect(function() dragging = true end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then handleSlider(sliderData, input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) sliderData.track.MouseButton1Down:Connect(function() handleSlider(sliderData, UserInputService:GetMouseLocation()) end) end for name, dropdownData in pairs(GlobalState.Dropdowns) do dropdownData.button.MouseButton1Click:Connect(function() toggleDropdown(dropdownData) end) end for _, categoryData in ipairs(Categories) do for _, itemData in ipairs(categoryData.Items) do if itemData.Type == "Button" then local button = ContentScroll:FindFirstChild(categoryData.Name .. "Content"):FindFirstChild(itemData.Name .. "Button") if button then button.MouseButton1Click:Connect(function() GlobalState.Statistics.ButtonPresses = GlobalState.Statistics.ButtonPresses + 1 TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Config.Theme.Accent }):Play() wait(0.1) TweenService:Create(button, TweenInfo.new(0.2, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(40, 40, 55) }):Play() print("[NeonUI] Button clicked: " .. itemData.Name) end) button.MouseEnter:Connect(function() TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(50, 50, 65) }):Play() end) button.MouseLeave:Connect(function() TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(40, 40, 55) }):Play() end) end end end end -- Minimize/Maximize local function toggleMinimize() GlobalState.IsMinimized = not GlobalState.IsMinimized if GlobalState.IsMinimized then CategoryContainer.Visible = false ContentContainer.Visible = false MainFrame.ClipsDescendants = true TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { Size = UDim2.new(0, 650, 0, 45) }):Play() MinimizeButton.Text = "□" else TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), { Size = UDim2.new(0, 650, 0, 450) }):Play() MainFrame.ClipsDescendants = false CategoryContainer.Visible = true ContentContainer.Visible = true MinimizeButton.Text = "−" end end MinimizeButton.MouseButton1Click:Connect(toggleMinimize) -- Close Button CloseButton.MouseButton1Click:Connect(function() local closeTween = TweenService:Create(MainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.In), { Size = UDim2.new(0, 0, 0, 0), Position = UDim2.new(0.5, 0, 0.5, 0) }) local fadeTween = TweenService:Create(MainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In), { BackgroundTransparency = 1 }) closeTween:Play() fadeTween:Play() closeTween.Completed:Wait() ScreenGui:Destroy() print("[NeonUI] Interface closed. Runtime: " .. math.floor(GlobalState.Statistics.Runtime) .. "s") end) -- Settings Button SettingsButton.MouseButton1Click:Connect(function() switchCategory("General") end) -- Hover Effects on Control Buttons local controlButtons = {MinimizeButton, SettingsButton, CloseButton} for _, button in ipairs(controlButtons) do button.MouseEnter:Connect(function() TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { Size = UDim2.new(0, 32, 0, 27), BackgroundTransparency = button == CloseButton and 0 or 0.2 }):Play() end) button.MouseLeave:Connect(function() TweenService:Create(button, TweenInfo.new(0.1, Enum.EasingStyle.Quad), { Size = UDim2.new(0, 30, 0, 25), BackgroundTransparency = button == CloseButton and 0 or 0 }):Play() end) end -- Animated Glow spawn(function() while ScreenGui.Parent do local t = tick() * 1.2 local glowIntensity = (math.sin(t) + 1) / 2 * 0.4 + 0.6 Glow.ImageColor3 = Color3.fromRGB(0, 120 * glowIntensity, 180 * glowIntensity) MainStroke.Color = Color3.fromRGB(0, 255 * glowIntensity, 200 * glowIntensity) TweenService:Create(LogoFrame, TweenInfo.new(2, Enum.EasingStyle.Sine), { BackgroundColor3 = Color3.fromRGB(0, 255 * glowIntensity, 200 * glowIntensity) }):Play() RunService.RenderStepped:Wait() end end) -- Ping Simulation spawn(function() while ScreenGui.Parent do GlobalState.Statistics.Runtime = tick() - GlobalState.LastUpdate local fakePing = math.random(8, 25) Ping.Text = fakePing .. "ms" Ping.TextColor3 = fakePing < 15 and Config.Theme.Success or (fakePing < 20 and Config.Theme.Warning or Config.Theme.Error) wait(1) end end) -- Status Animation spawn(function() local statusMessages = { "● Ready", "● Loaded", "● Active", "● Online", "● Connected" } local statusColors = { Config.Theme.Success, Config.Theme.Accent, Config.Theme.Text } while ScreenGui.Parent do local randomStatus = statusMessages[math.random(1, #statusMessages)] local randomColor = statusColors[math.random(1, #statusColors)] Status.Text = randomStatus TweenService:Create(Status, TweenInfo.new(0.5, Enum.EasingStyle.Quad), { TextColor3 = randomColor }):Play() wait(math.random(4, 8)) end end) -- Auto Save (if enabled) spawn(function() while ScreenGui.Parent and Config.Settings.AutoSave do wait(30) local configData = { toggles = {}, sliders = {}, dropdowns = {} } for name, toggleData in pairs(GlobalState.Toggles) do configData.toggles[name] = toggleData.state end for name, sliderData in pairs(GlobalState.Sliders) do configData.sliders[name] = sliderData.value end for name, dropdownData in pairs(GlobalState.Dropdowns) do configData.dropdowns[name] = dropdownData.selected end print("[NeonUI] Configuration auto-saved") end end) -- Initial Animation MainFrame.Size = UDim2.new(0, 0, 0, 0) MainFrame.Position = UDim2.new(0.5, 0, 0.5, 0) MainFrame.BackgroundTransparency = 1 local openTween1 = TweenService:Create(MainFrame, TweenInfo.new(0.6, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Size = UDim2.new(0, 650, 0, 450), Position = UDim2.new(0.5, -325, 0.5, -225), BackgroundTransparency = 0 }) openTween1:Play() openTween1.Completed:Wait() for i, categoryData in ipairs(Categories) do local button = categoryButtons[categoryData.Name] if button then button.BackgroundTransparency = 1 TweenService:Create(button, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { BackgroundTransparency = 0 }):Play() wait(0.05) end end updateCanvasSize() -- Keyboard Shortcuts UserInputService.InputBegan:Connect(function(key, gameProcessed) if gameProcessed then return end if key.KeyCode == Enum.KeyCode.Insert then MainFrame.Visible = not MainFrame.Visible end if key.KeyCode == Enum.KeyCode.Home and MainFrame.Visible then toggleMinimize() end local keyNumber = tonumber(key.KeyCode.Name:match("%d")) if keyNumber and keyNumber >= 1 and keyNumber <= #Categories then if MainFrame.Visible and not GlobalState.IsMinimized then switchCategory(Categories[keyNumber].Name) updateCanvasSize() end end end) -- Initialize Console Log print("=== NeonUI v" .. Config.Version .. " ===") print("✓ Interface loaded successfully") print("✓ " .. #Categories .. " categories initialized") print("✓ " .. table.getn(GlobalState.Toggles) .. " toggles created") print("✓ " .. table.getn(GlobalState.Sliders) .. " sliders created") print("✓ " .. table.getn(GlobalState.Dropdowns) .. " dropdowns created") print("✓ All systems operational") print("========================================") print("Press INSERT to toggle interface") print("Press HOME to minimize/maximize") print("Use number keys 1-8 to switch categories") print("========================================") -- Public API (for other scripts to interact with the UI) _G.NeonUI = { Version = Config.Version, ToggleInterface = function() MainFrame.Visible = not MainFrame.Visible end, GetToggleState = function(name) return GlobalState.Toggles[name] and GlobalState.Toggles[name].state or false end, SetToggleState = function(name, state) if GlobalState.Toggles[name] then GlobalState.Toggles[name].state = state animateToggle(GlobalState.Toggles[name]) end end, GetSliderValue = function(name) return GlobalState.Sliders[name] and GlobalState.Sliders[name].value or 0 end, SetSliderValue = function(name, value) if GlobalState.Sliders[name] then local sliderData = GlobalState.Sliders[name] value = math.max(sliderData.min, math.min(sliderData.max, value)) sliderData.value = value sliderData.valueLabel.Text = tostring(value) local percentage = (value - sliderData.min) / (sliderData.max - sliderData.min) sliderData.fill.Size = UDim2.new(percentage, 0, 1, 0) sliderData.button.Position = UDim2.new(percentage, -10, 0, -6) end end, ShowNotification = function(title, message, duration) if not Config.Settings.Notifications then return end local NotificationFrame = Instance.new("Frame") NotificationFrame.Name = "Notification" NotificationFrame.Size = UDim2.new(0, 300, 0, 80) NotificationFrame.Position = UDim2.new(1, -320, 0, 20) NotificationFrame.BackgroundColor3 = Config.Theme.Secondary NotificationFrame.BorderSizePixel = 0 NotificationFrame.ZIndex = 20 NotificationFrame.Parent = ScreenGui local NotifCorner = Instance.new("UICorner") NotifCorner.CornerRadius = UDim.new(0, 10) NotifCorner.Parent = NotificationFrame local NotifStroke = Instance.new("UIStroke") NotifStroke.Color = Config.Theme.Accent NotifStroke.Thickness = 2 NotifStroke.Parent = NotificationFrame local NotifTitle = Instance.new("TextLabel") NotifTitle.Size = UDim2.new(1, -20, 0, 25) NotifTitle.Position = UDim2.new(0, 10, 0, 5) NotifTitle.BackgroundTransparency = 1 NotifTitle.Text = title NotifTitle.TextColor3 = Config.Theme.Accent NotifTitle.TextXAlignment = Enum.TextXAlignment.Left NotifTitle.Font = Enum.Font.GothamBold NotifTitle.TextSize = 14 NotifTitle.ZIndex = 21 NotifTitle.Parent = NotificationFrame local NotifMessage = Instance.new("TextLabel") NotifMessage.Size = UDim2.new(1, -20, 0, 45) NotifMessage.Position = UDim2.new(0, 10, 0, 25) NotifMessage.BackgroundTransparency = 1 NotifMessage.Text = message NotifMessage.TextColor3 = Config.Theme.Text NotifMessage.TextXAlignment = Enum.TextXAlignment.Left NotifMessage.TextYAlignment = Enum.TextYAlignment.Top NotifMessage.Font = Enum.Font.Gotham NotifMessage.TextSize = 11 NotifMessage.TextWrapped = true NotifMessage.ZIndex = 21 NotifMessage.Parent = NotificationFrame TweenService:Create(NotificationFrame, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Position = UDim2.new(1, -320, 0, 20) }):Play() game:GetService("Debris"):AddItem(NotificationFrame, duration or 3) wait(duration or 3 - 0.5) TweenService:Create(NotificationFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In), { Position = UDim2.new(1, 0, 0, 20) }):Play() end, GetStatistics = function() return GlobalState.Statistics end, Config = Config } -- Optional: Define createCategoryContent (moved here for completeness) local function createCategoryContent(categoryData) local CategoryContent = Instance.new("Frame") CategoryContent.Name = categoryData.Name .. "Content" CategoryContent.Size = UDim2.new(1, 0, 0, 0) CategoryContent.BackgroundTransparency = 1 CategoryContent.Visible = categoryData.Name == GlobalState.ActiveCategory CategoryContent.ZIndex = 7 CategoryContent.Parent = ContentScroll local ContentLayout = Instance.new("UIListLayout") ContentLayout.SortOrder = Enum.SortOrder.LayoutOrder ContentLayout.Padding = UDim.new(0, 10) ContentLayout.Parent = CategoryContent local ContentPadding = Instance.new("UIPadding") ContentPadding.PaddingTop = UDim.new(0, 10) ContentPadding.PaddingBottom = UDim.new(0, 10) ContentPadding.PaddingLeft = UDim.new(0, 10) ContentPadding.PaddingRight = UDim.new(0, 10) ContentPadding.Parent = CategoryContent local totalHeight = 20 local layoutOrder = 1 for _, itemData in ipairs(categoryData.Items) do local item if itemData.Type == "Toggle" then item = createToggle(itemData, UDim2.new(0, 0, 0, 0), CategoryContent) totalHeight = totalHeight + 55 elseif itemData.Type == "Slider" then item = createSlider(itemData, UDim2.new(0, 0, 0, 0), CategoryContent) totalHeight = totalHeight + 75 elseif itemData.Type == "Dropdown" then item = createDropdown(itemData, UDim2.new(0, 0, 0, 0), CategoryContent) totalHeight = totalHeight + 55 elseif itemData.Type == "Button" then item = createButton(itemData, UDim2.new(0, 0, 0, 0), CategoryContent) totalHeight = totalHeight + 50 if itemData.Description then totalHeight = totalHeight + 20 end elseif itemData.Type == "Separator" then item = createSeparator(UDim2.new(0, 0, 0, 0), CategoryContent) totalHeight = totalHeight + 15 end if item then item.LayoutOrder = layoutOrder layoutOrder = layoutOrder + 1 end end CategoryContent.Size = UDim2.new(1, 0, 0, totalHeight) return CategoryContent, totalHeight end