-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local Players = game:GetService("Players") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHub" gui.ResetOnSpawn = false gui.DisplayOrder = 999 gui.Parent = player:WaitForChild("PlayerGui") local purple = Color3.fromRGB(155, 85, 255) local bg = Color3.fromRGB(20, 16, 30) local panel = Color3.fromRGB(34, 26, 48) local white = Color3.fromRGB(245, 238, 255) local main = Instance.new("Frame") main.Name = "Main" main.Size = UDim2.new(0, 265, 0, 390) main.Position = UDim2.new(0.5, -132, 0.5, -195) main.BackgroundColor3 = bg main.BorderSizePixel = 0 main.ClipsDescendants = true main.Parent = gui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 14) mainCorner.Parent = main local stroke = Instance.new("UIStroke") stroke.Color = purple stroke.Thickness = 1.5 stroke.Parent = main -- Header local header = Instance.new("TextButton") header.Size = UDim2.new(1, 0, 0, 48) header.BackgroundColor3 = panel header.Text = "PURPLE HUB —" header.TextColor3 = white header.Font = Enum.Font.GothamBold header.TextSize = 17 header.Parent = main local headerCorner = Instance.new("UICorner") headerCorner.CornerRadius = UDim.new(0, 12) headerCorner.Parent = header -- Drag with mouse or touch local dragging = false local dragStart, startPos header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = main.Position end end) header.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) game:GetService("UserInputService").InputChanged:Connect(function(input) if dragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - dragStart main.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) local function label(text, y, height, size) local obj = Instance.new("TextLabel") obj.Size = UDim2.new(1, -24, 0, height) obj.Position = UDim2.new(0, 12, 0, y) obj.BackgroundTransparency = 1 obj.Text = text obj.TextColor3 = white obj.Font = Enum.Font.GothamBold obj.TextSize = size or 15 obj.TextXAlignment = Enum.TextXAlignment.Left obj.Parent = main return obj end label("QUEUE CONTROL", 60, 25, 16) local status = label("Status: Idle", 94, 25, 14) status.TextColor3 = Color3.fromRGB(205, 180, 255) local timer = label("Timer: 00:00", 124, 25, 14) local function makeButton(text, y, color) local b = Instance.new("TextButton") b.Size = UDim2.new(1, -24, 0, 44) b.Position = UDim2.new(0, 12, 0, y) b.BackgroundColor3 = color b.Text = text b.TextColor3 = white b.Font = Enum.Font.GothamBold b.TextSize = 15 b.AutoButtonColor = true b.Parent = main local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 9) c.Parent = b return b end local start = makeButton("START QUEUE DEMO", 165, purple) local stop = makeButton("STOP DEMO", 219, Color3.fromRGB(76, 54, 98)) local close = makeButton("CLOSE HUB", 273, Color3.fromRGB(65, 40, 70)) label("Purple Hub • Mobile UI", 337, 24, 11) local running = false local seconds = 0 start.Activated:Connect(function() running = true seconds = 0 status.Text = "Status: Demo running" end) stop.Activated:Connect(function() running = false status.Text = "Status: Idle" end) close.Activated:Connect(function() gui:Destroy() end) task.spawn(function() while gui.Parent do task.wait(1) if running and gui.Parent then seconds += 1 timer.Text = string.format( "Timer: %02d:%02d", math.floor(seconds / 60), seconds % 60 ) end end end) -- PURPLE HUB | UI Size Selector -- Add after creating your main frame and buttons. local sizeLabel = Instance.new("TextLabel") sizeLabel.Size = UDim2.new(1, -24, 0, 22) sizeLabel.Position = UDim2.new(0, 12, 0, 310) sizeLabel.BackgroundTransparency = 1 sizeLabel.Text = "UI SIZE" sizeLabel.TextColor3 = Color3.fromRGB(220, 195, 255) sizeLabel.Font = Enum.Font.GothamBold sizeLabel.TextSize = 13 sizeLabel.Parent = main local sizes = { Small = UDim2.new(0, 225, 0, 350), Medium = UDim2.new(0, 265, 0, 390), Large = UDim2.new(0, 300, 0, 440) } local choices = {"Small", "Medium", "Large"} for i, name in ipairs(choices) do local b = Instance.new("TextButton") b.Size = UDim2.new(0, 74, 0, 32) b.Position = UDim2.new(0, 12 + (i - 1) * 80, 0, 337) b.BackgroundColor3 = Color3.fromRGB(110, 60, 170) b.Text = name b.TextColor3 = Color3.new(1, 1, 1) b.TextSize = 12 b.Font = Enum.Font.GothamBold b.Parent = main local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 7) c.Parent = b b.Activated:Connect(function() main.Size = sizes[name] main.Position = UDim2.new(0.5, -sizes[name].X.Offset / 2, 0.5, -sizes[name].Y.Offset / 2) end) end -- PURPLE HUB | Mobile Aim Trainer UI -- Visual-only practice demo. -- No player targeting or live-game automation. local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubAimTrainer" gui.ResetOnSpawn = false gui.DisplayOrder = 999 gui.Parent = player:WaitForChild("PlayerGui") local purple = Color3.fromRGB(165, 95, 255) local bg = Color3.fromRGB(23, 17, 34) local white = Color3.fromRGB(245, 238, 255) local main = Instance.new("Frame") main.Size = UDim2.fromOffset(280, 440) main.Position = UDim2.new(0.5, -140, 0.5, -220) main.BackgroundColor3 = bg main.BorderSizePixel = 0 main.Parent = gui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 14) local outline = Instance.new("UIStroke", main) outline.Color = purple outline.Thickness = 1.5 local function makeLabel(text, y, height, parent, size) local obj = Instance.new("TextLabel") obj.Size = UDim2.new(1, -24, 0, height) obj.Position = UDim2.new(0, 12, 0, y) obj.BackgroundTransparency = 1 obj.Text = text obj.TextColor3 = white obj.Font = Enum.Font.GothamBold obj.TextSize = size or 14 obj.TextXAlignment = Enum.TextXAlignment.Left obj.Parent = parent or main return obj end local function makeButton(text, x, y, width, parent) local b = Instance.new("TextButton") b.Size = UDim2.fromOffset(width, 36) b.Position = UDim2.fromOffset(x, y) b.BackgroundColor3 = Color3.fromRGB(91, 54, 130) b.Text = text b.TextColor3 = white b.Font = Enum.Font.GothamBold b.TextSize = 12 b.Parent = parent or main Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end makeLabel("PURPLE HUB", 10, 30, main, 20) makeLabel("AIM TRAINER / VISUALS", 42, 22) -- FOV preview local preview = Instance.new("Frame") preview.Size = UDim2.new(1, -24, 0, 150) preview.Position = UDim2.fromOffset(12, 72) preview.BackgroundColor3 = Color3.fromRGB(36, 26, 52) preview.BorderSizePixel = 0 preview.ClipsDescendants = true preview.Parent = main Instance.new("UICorner", preview).CornerRadius = UDim.new(0, 10) local circle = Instance.new("Frame") circle.AnchorPoint = Vector2.new(0.5, 0.5) circle.Position = UDim2.fromScale(0.5, 0.5) circle.Size = UDim2.fromOffset(90, 90) circle.BackgroundTransparency = 1 circle.Parent = preview Instance.new("UICorner", circle).CornerRadius = UDim.new(1, 0) local circleStroke = Instance.new("UIStroke", circle) circleStroke.Color = purple circleStroke.Thickness = 1.5 local function crosshairLine(size, position) local line = Instance.new("Frame") line.Size = size line.Position = position line.AnchorPoint = Vector2.new(0.5, 0.5) line.BackgroundColor3 = white line.BorderSizePixel = 0 line.Parent = preview end crosshairLine(UDim2.fromOffset(22, 2), UDim2.fromScale(0.5, 0.5)) crosshairLine(UDim2.fromOffset(2, 22), UDim2.fromScale(0.5, 0.5)) makeLabel("FOV SIZE", 232, 22) local fovValue = makeLabel("90", 232, 22) fovValue.TextXAlignment = Enum.TextXAlignment.Right local fovMinus = makeButton("-", 12, 258, 48) local fovPlus = makeButton("+", 220, 258, 48) local fov = 90 local function updateFov() circle.Size = UDim2.fromOffset(fov, fov) fovValue.Text = tostring(fov) end fovMinus.Activated:Connect(function() fov = math.max(30, fov - 10) updateFov() end) fovPlus.Activated:Connect(function() fov = math.min(130, fov + 10) updateFov() end) makeLabel("SMOOTHING (VISUAL SETTING)", 302, 22) local smoothValue = makeLabel("5 / 10", 302, 22) smoothValue.TextXAlignment = Enum.TextXAlignment.Right local smoothMinus = makeButton("-", 12, 328, 48) local smoothPlus = makeButton("+", 220, 328, 48) local smoothing = 5 local function updateSmoothing() smoothValue.Text = smoothing .. " / 10" end smoothMinus.Activated:Connect(function() smoothing = math.max(1, smoothing - 1) updateSmoothing() end) smoothPlus.Activated:Connect(function() smoothing = math.min(10, smoothing + 1) updateSmoothing() end) makeLabel("UI SIZE", 372, 20) local sizeOptions = { {"S", 12, 225, 390}, {"M", 98, 280, 440}, {"L", 184, 320, 490} } for _, option in ipairs(sizeOptions) do local button = makeButton(option[1], option[2], 396, 78) button.Activated:Connect(function() local width, height = option[3], option[4] main.Size = UDim2.fromOffset(width, height) main.Position = UDim2.new(0.5, -width / 2, 0.5, -height / 2) end) end local close = makeButton("X", 242, 10, 26) close.Activated:Connect(function() gui:Destroy() end) updateFov() updateSmoothing() -- PURPLE HUB | Speed Control Demo -- For your own Roblox experience / practice UI. -- Does not modify live RIVALS. local Players = game:GetService("Players") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubSpeed" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(260, 190) frame.Position = UDim2.new(0.5, -130, 0.5, -95) frame.BackgroundColor3 = Color3.fromRGB(23, 17, 34) frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) local stroke = Instance.new("UIStroke", frame) stroke.Color = Color3.fromRGB(165, 95, 255) local function label(text, y, size) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -20, 0, 28) l.Position = UDim2.fromOffset(10, y) l.BackgroundTransparency = 1 l.Text = text l.TextColor3 = Color3.fromRGB(245, 238, 255) l.Font = Enum.Font.GothamBold l.TextSize = size or 14 l.Parent = frame return l end label("PURPLE HUB", 8, 20) label("SPEED SETTINGS", 38, 13) local value = 16 local valueLabel = label("Speed: 16", 65, 15) local function button(text, x, y, width) local b = Instance.new("TextButton") b.Size = UDim2.fromOffset(width, 38) b.Position = UDim2.fromOffset(x, y) b.BackgroundColor3 = Color3.fromRGB(105, 60, 160) b.Text = text b.TextColor3 = Color3.new(1, 1, 1) b.Font = Enum.Font.GothamBold b.TextSize = 14 b.Parent = frame Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end button("-", 15, 100, 65).Activated:Connect(function() value = math.max(8, value - 2) valueLabel.Text = "Speed: " .. value end) button("+", 180, 100, 65).Activated:Connect(function() value = math.min(32, value + 2) valueLabel.Text = "Speed: " .. value end) local close = button("CLOSE", 65, 148, 130) close.Activated:Connect(function() gui:Destroy() end) -- PURPLE HUB | Mock Anti-Cheat Tester -- Simulation only. No real detection or protection. local Players = game:GetService("Players") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubTestLab" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local purple = Color3.fromRGB(165, 95, 255) local bg = Color3.fromRGB(24, 17, 36) local white = Color3.fromRGB(245, 238, 255) local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(290, 330) frame.Position = UDim2.new(0.5, -145, 0.5, -165) frame.BackgroundColor3 = bg frame.BorderSizePixel = 0 frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 14) local stroke = Instance.new("UIStroke", frame) stroke.Color = purple stroke.Thickness = 2 local function label(text, y, height, size, color) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -24, 0, height) l.Position = UDim2.fromOffset(12, y) l.BackgroundTransparency = 1 l.Text = text l.TextColor3 = color or white l.Font = Enum.Font.GothamBold l.TextSize = size or 14 l.TextWrapped = true l.TextXAlignment = Enum.TextXAlignment.Left l.Parent = frame return l end local function button(text, y) local b = Instance.new("TextButton") b.Size = UDim2.new(1, -24, 0, 36) b.Position = UDim2.fromOffset(12, y) b.BackgroundColor3 = Color3.fromRGB(92, 53, 135) b.Text = text b.TextColor3 = white b.Font = Enum.Font.GothamBold b.TextSize = 13 b.Parent = frame Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end label("PURPLE HUB", 10, 28, 21, purple) label("MOCK ANTI-CHEAT TEST LAB", 40, 22, 12) local status = label( "Status: Ready for simulation", 70, 26, 13, Color3.fromRGB(190, 255, 200) ) local result = label( "Test results will appear here.", 100, 42, 12 ) local count = 0 local runTest = button("RUN MOCK TEST", 155) local warning = button("SIMULATE WARNING", 199) local reset = button("RESET TESTS", 243) local close = button("CLOSE", 287) runTest.Activated:Connect(function() count += 1 status.Text = "Status: Mock test completed" status.TextColor3 = Color3.fromRGB(190, 255, 200) result.Text = "Test #" .. count .. ": Simulation passed. No real game was checked." end) warning.Activated:Connect(function() count += 1 status.Text = "Status: Simulated warning" status.TextColor3 = Color3.fromRGB(255, 190, 100) result.Text = "Test #" .. count .. ": Example warning generated for UI testing." end) reset.Activated:Connect(function() count = 0 status.Text = "Status: Ready for simulation" status.TextColor3 = Color3.fromRGB(190, 255, 200) result.Text = "Test results will appear here." end) close.Activated:Connect(function() gui:Destroy() end) -- PURPLE HUB | Stats Dashboard -- Mobile-friendly visual/practice demo -- No live-game exploits or matchmaking automation. local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubStats" gui.ResetOnSpawn = false gui.DisplayOrder = 999 gui.Parent = player:WaitForChild("PlayerGui") local PURPLE = Color3.fromRGB(166, 100, 255) local BG = Color3.fromRGB(22, 17, 33) local PANEL = Color3.fromRGB(38, 28, 52) local WHITE = Color3.fromRGB(245, 239, 255) local MUTED = Color3.fromRGB(190, 175, 210) local main = Instance.new("Frame") main.Name = "Main" main.Size = UDim2.fromOffset(280, 430) main.Position = UDim2.new(0.5, -140, 0.5, -215) main.BackgroundColor3 = BG main.BorderSizePixel = 0 main.ClipsDescendants = true main.Parent = gui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 14) local outline = Instance.new("UIStroke", main) outline.Color = PURPLE outline.Thickness = 1.5 -- Header / drag handle local header = Instance.new("TextButton") header.Name = "DragHeader" header.Size = UDim2.new(1, 0, 0, 48) header.BackgroundColor3 = PANEL header.Text = "PURPLE HUB ≡" header.TextColor3 = WHITE header.Font = Enum.Font.GothamBold header.TextSize = 18 header.Parent = main Instance.new("UICorner", header).CornerRadius = UDim.new(0, 12) -- Touch + mouse dragging local dragging = false local dragInput local dragStart local startPosition header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPosition = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) header.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UIS.InputChanged:Connect(function(input) if dragging and input == dragInput then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) local function label(text, y, height, size, color) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -24, 0, height) l.Position = UDim2.fromOffset(12, y) l.BackgroundTransparency = 1 l.Text = text l.TextColor3 = color or WHITE l.Font = Enum.Font.GothamBold l.TextSize = size or 14 l.TextXAlignment = Enum.TextXAlignment.Left l.TextWrapped = true l.Parent = main return l end local function button(text, y, color) local b = Instance.new("TextButton") b.Size = UDim2.new(1, -24, 0, 38) b.Position = UDim2.fromOffset(12, y) b.BackgroundColor3 = color or PURPLE b.Text = text b.TextColor3 = WHITE b.Font = Enum.Font.GothamBold b.TextSize = 13 b.Parent = main Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end label("STATS DASHBOARD", 56, 24, 15, PURPLE) local timerLabel = label("Session: 00:00", 84, 25, 14) local scoreLabel = label("Practice Score: 0", 116, 25, 14) local accuracyLabel = label("Accuracy: 0%", 148, 25, 14) local testsLabel = label("Mock Tests: 0", 180, 25, 14) local statusLabel = label( "Status: Ready to practice", 211, 24, 12, MUTED ) local startButton = button("START PRACTICE SESSION", 245) local scoreButton = button( "ADD PRACTICE POINTS (+10)", 291, Color3.fromRGB(100, 62, 145) ) local resetButton = button( "RESET SESSION", 337, Color3.fromRGB(70, 49, 89) ) local closeButton = button( "CLOSE DASHBOARD", 383, Color3.fromRGB(80, 42, 93) ) -- Local demo statistics local seconds = 0 local score = 0 local tests = 0 local running = false local function refresh() timerLabel.Text = string.format( "Session: %02d:%02d", math.floor(seconds / 60), seconds % 60 ) scoreLabel.Text = "Practice Score: " .. score testsLabel.Text = "Mock Tests: " .. tests -- Demo-only estimate based on practice points. local accuracy = 0 if score > 0 then accuracy = math.min(100, math.floor(score / 2)) end accuracyLabel.Text = "Accuracy: " .. accuracy .. "%" startButton.Text = running and "PAUSE PRACTICE SESSION" or "START PRACTICE SESSION" statusLabel.Text = running and "Status: Practice running" or "Status: Ready to practice" end startButton.Activated:Connect(function() running = not running tests += 1 refresh() end) scoreButton.Activated:Connect(function() score += 10 refresh() end) resetButton.Activated:Connect(function() seconds = 0 score = 0 tests = 0 running = false refresh() end) closeButton.Activated:Connect(function() gui:Destroy() end) task.spawn(function() while gui.Parent do task.wait(1) if running and gui.Parent then seconds += 1 refresh() end end end) refresh() -- PURPLE HUB | Mobile UI Settings -- Visual/practice UI demo only. -- No live-game exploit functionality. local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubSettings" gui.ResetOnSpawn = false gui.DisplayOrder = 999 gui.Parent = player:WaitForChild("PlayerGui") local themes = { Purple = Color3.fromRGB(165, 95, 255), Cyan = Color3.fromRGB(50, 210, 230), Pink = Color3.fromRGB(255, 90, 180), Red = Color3.fromRGB(255, 75, 90) } local settings = { Size = "Medium", Theme = "Purple", ShowStatus = true } local bg = Color3.fromRGB(23, 17, 34) local white = Color3.fromRGB(245, 238, 255) local muted = Color3.fromRGB(190, 175, 210) local sizes = { Small = UDim2.fromOffset(240, 390), Medium = UDim2.fromOffset(280, 440), Large = UDim2.fromOffset(310, 490) } local main = Instance.new("Frame") main.Name = "Main" main.Size = sizes[settings.Size] main.Position = UDim2.new(0.5, -140, 0.5, -220) main.BackgroundColor3 = bg main.BorderSizePixel = 0 main.ClipsDescendants = true main.Parent = gui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 14) local outline = Instance.new("UIStroke", main) outline.Color = themes[settings.Theme] outline.Thickness = 1.5 local function label(text, y, height, size, color) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -24, 0, height) l.Position = UDim2.fromOffset(12, y) l.BackgroundTransparency = 1 l.Text = text l.TextColor3 = color or white l.Font = Enum.Font.GothamBold l.TextSize = size or 14 l.TextXAlignment = Enum.TextXAlignment.Left l.TextWrapped = true l.Parent = main return l end local function button(text, x, y, width, height) local b = Instance.new("TextButton") b.Size = UDim2.fromOffset(width, height) b.Position = UDim2.fromOffset(x, y) b.BackgroundColor3 = themes[settings.Theme] b.Text = text b.TextColor3 = white b.Font = Enum.Font.GothamBold b.TextSize = 12 b.Parent = main Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end -- Drag header local header = Instance.new("TextButton") header.Size = UDim2.new(1, 0, 0, 46) header.BackgroundColor3 = Color3.fromRGB(38, 28, 52) header.Text = "PURPLE HUB • SETTINGS" header.TextColor3 = white header.Font = Enum.Font.GothamBold header.TextSize = 15 header.Parent = main Instance.new("UICorner", header).CornerRadius = UDim.new(0, 12) local dragging = false local dragStart, startPosition, dragInput header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPosition = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) header.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UIS.InputChanged:Connect(function(input) if dragging and input == dragInput then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) label("UI SIZE", 56, 22, 14, muted) local sizeButtons = {} local function refreshSizeButtons() for name, b in pairs(sizeButtons) do b.BackgroundColor3 = settings.Size == name and themes[settings.Theme] or Color3.fromRGB(70, 53, 88) end end for i, name in ipairs({"Small", "Medium", "Large"}) do local b = button(name, 12 + (i - 1) * 86, 82, 80, 34) sizeButtons[name] = b b.Activated:Connect(function() settings.Size = name local selected = sizes[name] main.Size = selected main.Position = UDim2.new( 0.5, -selected.X.Offset / 2, 0.5, -selected.Y.Offset / 2 ) refreshSizeButtons() end) end label("THEME COLOR", 128, 22, 14, muted) local themeButtons = {} local themeNames = {"Purple", "Cyan", "Pink", "Red"} local function applyTheme() outline.Color = themes[settings.Theme] for _, b in pairs(themeButtons) do b.BackgroundColor3 = themes[b.Name] end refreshSizeButtons() end for i, name in ipairs(themeNames) do local b = button(name, 12 + (i - 1) * 64, 154, 58, 34) b.Name = name themeButtons[name] = b b.Activated:Connect(function() settings.Theme = name applyTheme() end) end local statusLabel = label( "Status display: ON", 203, 24, 13 ) local toggle = button("TOGGLE STATUS", 232, 42, 36) toggle.Size = UDim2.new(1, -24, 0, 36) toggle.Position = UDim2.fromOffset(12, 232) toggle.Activated:Connect(function() settings.ShowStatus = not settings.ShowStatus statusLabel.Text = settings.ShowStatus and "Status display: ON" or "Status display: OFF" end) local saveButton = button("SAVE SETTINGS", 278, 42, 38) saveButton.Size = UDim2.new(1, -24, 0, 38) saveButton.Position = UDim2.fromOffset(12, 278) local saveMessage = label( "Settings not saved yet", 320, 26, 12, muted ) saveButton.Activated:Connect(function() -- Keeps the chosen settings in memory for this running UI. -- Persistent saving requires storage in an experience you control. saveMessage.Text = "Settings saved for this session!" saveMessage.TextColor3 = themes[settings.Theme] end) local resetButton = button("RESET DEFAULTS", 12, 354, 124, 36) resetButton.Activated:Connect(function() settings.Size = "Medium" settings.Theme = "Purple" settings.ShowStatus = true main.Size = sizes.Medium main.Position = UDim2.new(0.5, -140, 0.5, -220) statusLabel.Text = "Status display: ON" saveMessage.Text = "Defaults restored" saveMessage.TextColor3 = muted applyTheme() end) local closeButton = button("CLOSE", 144, 354, 124, 36) closeButton.Activated:Connect(function() gui:Destroy() end) applyTheme() refreshSizeButtons() -- 💜 PURPLE HUB | AUTO-KILL PRACTICE SIM -- Visual practice demo only — no live-player targeting. local Players = game:GetService("Players") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubPractice" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(270, 220) frame.Position = UDim2.new(0.5, -135, 0.5, -110) frame.BackgroundColor3 = Color3.fromRGB(35, 15, 65) frame.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 12) corner.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 42) title.BackgroundColor3 = Color3.fromRGB(105, 45, 210) title.Text = "💜 PURPLE HUB" title.TextColor3 = Color3.new(1, 1, 1) title.TextScaled = true title.Font = Enum.Font.GothamBold title.Parent = frame local function makeLabel(text, y) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, -20, 0, 30) label.Position = UDim2.fromOffset(10, y) label.BackgroundTransparency = 1 label.TextColor3 = Color3.new(1, 1, 1) label.Text = text label.TextScaled = true label.Font = Enum.Font.Gotham label.Parent = frame return label end -- 💜 CLOSE UI + REOPEN BUTTON local closeButton = Instance.new("TextButton") closeButton.Name = "CloseButton" closeButton.Size = UDim2.fromOffset(38, 34) closeButton.Position = UDim2.new(1, -42, 0, 4) closeButton.BackgroundColor3 = Color3.fromRGB(180, 45, 85) closeButton.Text = "X" closeButton.TextColor3 = Color3.new(1, 1, 1) closeButton.TextScaled = true closeButton.Font = Enum.Font.GothamBold closeButton.Parent = frame Instance.new("UICorner", closeButton).CornerRadius = UDim.new(0, 8) local reopenButton = Instance.new("TextButton") reopenButton.Name = "ReopenPurpleHub" reopenButton.Size = UDim2.fromOffset(100, 42) reopenButton.Position = UDim2.new(0, 15, 0.5, 0) reopenButton.BackgroundColor3 = Color3.fromRGB(105, 45, 210) reopenButton.Text = "💜 Reopen" reopenButton.TextColor3 = Color3.new(1, 1, 1) reopenButton.TextScaled = true reopenButton.Font = Enum.Font.GothamBold reopenButton.Visible = false reopenButton.Parent = gui Instance.new("UICorner", reopenButton).CornerRadius = UDim.new(0, 10) closeButton.Activated:Connect(function() frame.Visible = false reopenButton.Visible = true end) reopenButton.Activated:Connect(function() frame.Visible = true reopenButton.Visible = false end) -- 💜 PURPLE HUB | AUTO-KILL PRACTICE SIM -- Visual practice demo only — no live-player targeting. local Players = game:GetService("Players") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui") gui.Name = "PurpleHubPractice" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(270, 220) frame.Position = UDim2.new(0.5, -135, 0.5, -110) frame.BackgroundColor3 = Color3.fromRGB(35, 15, 65) frame.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 12) corner.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 42) title.BackgroundColor3 = Color3.fromRGB(105, 45, 210) title.Text = "💜 PURPLE HUB" title.TextColor3 = Color3.new(1, 1, 1) title.TextScaled = true title.Font = Enum.Font.GothamBold title.Parent = frame local function makeLabel(text, y) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, -20, 0, 30) label.Position = UDim2.fromOffset(10, y) label.BackgroundTransparency = 1 label.TextColor3 = Color3.new(1, 1, 1) label.Text = text label.TextScaled = true label.Font = Enum.Font.Gotham label.Parent = frame return label end local status = makeLabel("Auto-Kill Sim: OFF", 52) local count = makeLabel("Practice targets: 0", 87) local toggle = Instance.new("TextButton") toggle.Size = UDim2.new(1, -24, 0, 42) toggle.Position = UDim2.fromOffset(12, 130) toggle.BackgroundColor3 = Color3.fromRGB(130, 65, 230) toggle.TextColor3 = Color3.new(1, 1, 1) toggle.Text = "START PRACTICE" toggle.TextScaled = true toggle.Font = Enum.Font.GothamBold toggle.Parent = frame Instance.new("UICorner", toggle).CornerRadius = UDim.new(0, 8) local running = false local targets = 0 toggle.Activated:Connect(function() running = not running if running then toggle.Text = "STOP PRACTICE" status.Text = "Auto-Kill Sim: ON" targets = 0 task.spawn(function() while running do task.wait(1) if not running then break end targets += 1 count.Text = "Practice targets: " .. targets end end) else toggle.Text = "START PRACTICE" status.Text = "Auto-Kill Sim: OFF" end end)