-- Modern UI with Multi-Color Cycle (Blue, Red, Green, Yellow) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Player = Players.LocalPlayer -- Settings local espEnabled = true local namesEnabled = false local selfEspEnabled = true -- Color Cycling Logic local colorIndex = 1 local colors = { {Name = "Blue", Color = Color3.fromRGB(0, 162, 255)}, {Name = "Red", Color = Color3.fromRGB(255, 60, 60)}, {Name = "Green", Color = Color3.fromRGB(46, 204, 113)}, {Name = "Yellow", Color = Color3.fromRGB(255, 215, 0)} } local currentColor = colors[1].Color -- Connection storage local renderConnection -- Helper: Remove ESP elements local function clearVisuals(char) if char:FindFirstChild("ESPHighlight") then char.ESPHighlight:Destroy() end if char:FindFirstChild("ESPName") then char.ESPName:Destroy() end end -- Draggable Function local function makeDraggable(frame) local dragging, dragInput, dragStart, startPos frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = frame.Position end end) frame.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) RunService.RenderStepped:Connect(function() if dragging and dragInput then local delta = dragInput.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end -- UI Creation local screenGui = Instance.new("ScreenGui", Player.PlayerGui) screenGui.Name = "ModernESP_Colors" local mainFrame = Instance.new("Frame", screenGui) mainFrame.Size = UDim2.new(0, 220, 0, 280) mainFrame.Position = UDim2.new(0.1, 0, 0.4, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) mainFrame.BorderSizePixel = 0 Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12) local uiStroke = Instance.new("UIStroke", mainFrame) uiStroke.Thickness = 2 uiStroke.Color = Color3.fromRGB(45, 45, 45) local title = Instance.new("TextLabel", mainFrame) title.Size = UDim2.new(1, 0, 0, 40) title.Text = "ESP SETTINGS" title.TextColor3 = Color3.new(1, 1, 1) title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 16 local buttonContainer = Instance.new("Frame", mainFrame) buttonContainer.Size = UDim2.new(1, -20, 1, -50) buttonContainer.Position = UDim2.new(0, 10, 0, 45) buttonContainer.BackgroundTransparency = 1 Instance.new("UIListLayout", buttonContainer).Padding = UDim.new(0, 8) local function createButton(text, defaultColor, callback) local btn = Instance.new("TextButton", buttonContainer) btn.Size = UDim2.new(1, 0, 0, 38) btn.Text = text btn.BackgroundColor3 = defaultColor btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.GothamMedium btn.TextSize = 14 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) btn.MouseButton1Click:Connect(function() callback(btn) end) return btn end -- ESP Update Loop renderConnection = RunService.RenderStepped:Connect(function() for _, p in pairs(Players:GetPlayers()) do local char = p.Character if char and char:FindFirstChild("HumanoidRootPart") then local isSelf = (p == Player) local shouldShow = espEnabled if isSelf and not selfEspEnabled then shouldShow = false end if not shouldShow then clearVisuals(char) continue end local highlight = char:FindFirstChild("ESPHighlight") or Instance.new("Highlight", char) highlight.Name = "ESPHighlight" highlight.FillColor = currentColor highlight.FillTransparency = 0.5 local nameTag = char:FindFirstChild("ESPName") if not nameTag then nameTag = Instance.new("BillboardGui", char) nameTag.Name = "ESPName" nameTag.Size = UDim2.new(0, 100, 0, 30) nameTag.StudsOffset = Vector3.new(0, 3, 0) nameTag.AlwaysOnTop = true local l = Instance.new("TextLabel", nameTag) l.Size = UDim2.new(1,0,1,0); l.BackgroundTransparency = 1; l.TextColor3 = Color3.new(1,1,1) l.Font = Enum.Font.GothamBold; l.TextSize = 12; l.Text = p.Name end nameTag.Enabled = namesEnabled end end end) -- Buttons createButton("ESP: ON", Color3.fromRGB(46, 204, 113), function(btn) espEnabled = not espEnabled btn.Text = "ESP: " .. (espEnabled and "ON" or "OFF") btn.BackgroundColor3 = espEnabled and Color3.fromRGB(46, 204, 113) or Color3.fromRGB(231, 76, 60) end) createButton("Nametags: OFF", Color3.fromRGB(60, 60, 60), function(btn) namesEnabled = not namesEnabled btn.Text = "Nametags: " .. (namesEnabled and "ON" or "OFF") btn.BackgroundColor3 = namesEnabled and Color3.fromRGB(0, 162, 255) or Color3.fromRGB(60, 60, 60) end) -- MULTI-COLOR BUTTON createButton("Color: Blue", colors[1].Color, function(btn) colorIndex = colorIndex + 1 if colorIndex > #colors then colorIndex = 1 end local selected = colors[colorIndex] currentColor = selected.Color btn.Text = "Color: " .. selected.Name btn.BackgroundColor3 = selected.Color end) createButton("Self ESP: ON", Color3.fromRGB(46, 204, 113), function(btn) selfEspEnabled = not selfEspEnabled btn.Text = "Self ESP: " .. (selfEspEnabled and "ON" or "OFF") btn.BackgroundColor3 = selfEspEnabled and Color3.fromRGB(46, 204, 113) or Color3.fromRGB(231, 76, 60) if not selfEspEnabled and Player.Character then clearVisuals(Player.Character) end end) createButton("Destroy Everything", Color3.fromRGB(30, 30, 30), function() if renderConnection then renderConnection:Disconnect() end for _, p in pairs(Players:GetPlayers()) do if p.Character then clearVisuals(p.Character) end end screenGui:Destroy() end) makeDraggable(mainFrame)