local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local cam = workspace.CurrentCamera -- Base Settings local power = 90 local moveBoost = 150 local idleBoost = 100 _G.FlickEnabled = false _G.Flick360Hold = false _G.Flick360NoBoostHold = false _G.ButtonsLocked = false -- Global lock toggle -- Touch & Mouse Drag Handler with Lock Check local function makeDraggable(guiObject) local dragging = false local dragStart = Vector3.zero local startPos = UDim2.new() guiObject.InputBegan:Connect(function(input) if _G.ButtonsLocked then return end -- Block dragging if locked if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = guiObject.Position end end) UserInputService.InputChanged:Connect(function(input) if not _G.ButtonsLocked and dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart guiObject.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) local function endDrag(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end guiObject.InputEnded:Connect(endDrag) UserInputService.InputEnded:Connect(endDrag) end -- UI Setup local parentGui = (gethui and gethui()) or LocalPlayer:WaitForChild("PlayerGui") local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "SilverSurfer_SG_UI" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = parentGui -- Open/Close Icon local OpenCloseBtn = Instance.new("TextButton") OpenCloseBtn.Size = UDim2.new(0, 48, 0, 48) OpenCloseBtn.Position = UDim2.new(0.02, 0, 0.4, 0) OpenCloseBtn.Text = "🌌" OpenCloseBtn.TextSize = 22 OpenCloseBtn.BackgroundColor3 = Color3.fromRGB(15, 15, 18) OpenCloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255) OpenCloseBtn.Active = true OpenCloseBtn.Parent = ScreenGui makeDraggable(OpenCloseBtn) Instance.new("UICorner", OpenCloseBtn).CornerRadius = UDim.new(0, 8) local OpenStroke = Instance.new("UIStroke", OpenCloseBtn) OpenStroke.Color = Color3.fromRGB(220, 220, 220) OpenStroke.Thickness = 2 -- Main Frame local Frame = Instance.new("Frame") Frame.Size = UDim2.new(0, 170, 0, 350) Frame.Position = UDim2.new(0.5, -85, 0.1, 0) Frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Frame.Active = true Frame.Parent = ScreenGui makeDraggable(Frame) Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 12) local FrameStroke = Instance.new("UIStroke", Frame) FrameStroke.Color = Color3.fromRGB(255, 255, 255) FrameStroke.Thickness = 1.5 -- Background Image local BackgroundImage = Instance.new("ImageLabel") BackgroundImage.Size = UDim2.new(1, 0, 1, 0) BackgroundImage.Image = "rbxassetid://11120144886430485783" BackgroundImage.ImageTransparency = 0.35 BackgroundImage.ScaleType = Enum.ScaleType.Crop BackgroundImage.BackgroundTransparency = 1 BackgroundImage.Parent = Frame -- Title local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 28) Title.Position = UDim2.new(0, 0, 0, 5) Title.Text = "COSMIC SPEED" Title.Font = Enum.Font.GothamBold Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextSize = 13 Title.BackgroundTransparency = 1 Title.Parent = Frame -- SG Toggle local ToggleButton = Instance.new("TextButton") ToggleButton.Size = UDim2.new(1, -16, 0, 32) ToggleButton.Position = UDim2.new(0, 8, 0, 35) ToggleButton.Text = "SG: OFF" ToggleButton.BackgroundColor3 = Color3.fromRGB(30, 30, 35) ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) ToggleButton.Font = Enum.Font.GothamBold ToggleButton.TextSize = 13 ToggleButton.Parent = Frame Instance.new("UICorner", ToggleButton).CornerRadius = UDim.new(0, 8) -- 360 Flick Hold local Flick360Btn = Instance.new("TextButton") Flick360Btn.Size = UDim2.new(1, -16, 0, 32) Flick360Btn.Position = UDim2.new(0, 8, 0, 72) Flick360Btn.Text = "🌀 HOLD 360 FLICK" Flick360Btn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Flick360Btn.TextColor3 = Color3.fromRGB(255, 255, 255) Flick360Btn.Font = Enum.Font.GothamBold Flick360Btn.TextSize = 11 Flick360Btn.Parent = Frame Instance.new("UICorner", Flick360Btn).CornerRadius = UDim.new(0, 8) -- 360 Flick Hold (NO BOOST) local Flick360NoBoostBtn = Instance.new("TextButton") Flick360NoBoostBtn.Size = UDim2.new(1, -16, 0, 32) Flick360NoBoostBtn.Position = UDim2.new(0, 8, 0, 109) Flick360NoBoostBtn.Text = "🌀 360 (NO BOOST)" Flick360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Flick360NoBoostBtn.TextColor3 = Color3.fromRGB(255, 255, 255) Flick360NoBoostBtn.Font = Enum.Font.GothamBold Flick360NoBoostBtn.TextSize = 11 Flick360NoBoostBtn.Parent = Frame Instance.new("UICorner", Flick360NoBoostBtn).CornerRadius = UDim.new(0, 8) -- Move Speed Input Box local MoveInput = Instance.new("TextBox") MoveInput.Size = UDim2.new(1, -16, 0, 28) MoveInput.Position = UDim2.new(0, 8, 0, 146) MoveInput.PlaceholderText = "Move Speed (150)" MoveInput.Text = "150" MoveInput.BackgroundColor3 = Color3.fromRGB(10, 10, 12) MoveInput.TextColor3 = Color3.fromRGB(255, 255, 255) MoveInput.Font = Enum.Font.GothamMedium MoveInput.TextSize = 11 MoveInput.Parent = Frame Instance.new("UICorner", MoveInput).CornerRadius = UDim.new(0, 8) -- Idle Speed Input Box local IdleInput = Instance.new("TextBox") IdleInput.Size = UDim2.new(1, -16, 0, 28) IdleInput.Position = UDim2.new(0, 8, 0, 179) IdleInput.PlaceholderText = "Idle Speed (100)" IdleInput.Text = "100" IdleInput.BackgroundColor3 = Color3.fromRGB(10, 10, 12) IdleInput.TextColor3 = Color3.fromRGB(255, 255, 255) IdleInput.Font = Enum.Font.GothamMedium IdleInput.TextSize = 11 IdleInput.Parent = Frame Instance.new("UICorner", IdleInput).CornerRadius = UDim.new(0, 8) -- LOCK / UNLOCK POSITIONS BUTTON local LockBtn = Instance.new("TextButton") LockBtn.Size = UDim2.new(1, -16, 0, 32) LockBtn.Position = UDim2.new(0, 8, 0, 215) LockBtn.Text = "🔓 UNLOCKED" LockBtn.BackgroundColor3 = Color3.fromRGB(40, 20, 20) LockBtn.TextColor3 = Color3.fromRGB(255, 120, 120) LockBtn.Font = Enum.Font.GothamBold LockBtn.TextSize = 11 LockBtn.Parent = Frame Instance.new("UICorner", LockBtn).CornerRadius = UDim.new(0, 8) local LockStroke = Instance.new("UIStroke", LockBtn) LockStroke.Color = Color3.fromRGB(255, 80, 80) LockStroke.Thickness = 1 -- SPREAD BUTTON local ExpandBtn = Instance.new("TextButton") ExpandBtn.Size = UDim2.new(1, -16, 0, 32) ExpandBtn.Position = UDim2.new(0, 8, 0, 252) ExpandBtn.Text = "➕ SPREAD BUTTONS" ExpandBtn.BackgroundColor3 = Color3.fromRGB(15, 15, 20) ExpandBtn.TextColor3 = Color3.fromRGB(255, 255, 255) ExpandBtn.Font = Enum.Font.GothamBold ExpandBtn.TextSize = 11 ExpandBtn.Parent = Frame Instance.new("UICorner", ExpandBtn).CornerRadius = UDim.new(0, 8) --------------------------------------------------------- -- STANDALONE SPREAD BUTTONS (DRAGGABLE) --------------------------------------------------------- local function createSpreadButton(defaultText, defaultPos) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 130, 0, 40) btn.Position = defaultPos btn.Text = defaultText btn.BackgroundColor3 = Color3.fromRGB(25, 25, 30) btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.GothamBold btn.TextSize = 12 btn.Visible = false btn.Active = true btn.Parent = ScreenGui Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) local stroke = Instance.new("UIStroke", btn) stroke.Color = Color3.fromRGB(255, 255, 255) stroke.Thickness = 1.5 makeDraggable(btn) return btn end local StandaloneBtn = createSpreadButton("SG: OFF", UDim2.new(0.5, -65, 0.4, 0)) local Standalone360Btn = createSpreadButton("🌀 HOLD 360", UDim2.new(0.5, -65, 0.4, 48)) local Standalone360NoBoostBtn = createSpreadButton("🌀 360 (NO BOOST)", UDim2.new(0.5, -65, 0.4, 96)) --------------------------------------------------------- -- CORE LOGIC & CONNECTIONS --------------------------------------------------------- LockBtn.MouseButton1Click:Connect(function() _G.ButtonsLocked = not _G.ButtonsLocked if _G.ButtonsLocked then LockBtn.Text = "🔒 LOCKED" LockBtn.BackgroundColor3 = Color3.fromRGB(20, 40, 20) LockBtn.TextColor3 = Color3.fromRGB(120, 255, 120) LockStroke.Color = Color3.fromRGB(80, 255, 80) else LockBtn.Text = "🔓 UNLOCKED" LockBtn.BackgroundColor3 = Color3.fromRGB(40, 20, 20) LockBtn.TextColor3 = Color3.fromRGB(255, 120, 120) LockStroke.Color = Color3.fromRGB(255, 80, 80) end end) OpenCloseBtn.MouseButton1Click:Connect(function() Frame.Visible = not Frame.Visible end) MoveInput.FocusLost:Connect(function() local newSpeed = tonumber(MoveInput.Text) if newSpeed then moveBoost = newSpeed else MoveInput.Text = tostring(moveBoost) end end) IdleInput.FocusLost:Connect(function() local newIdle = tonumber(IdleInput.Text) if newIdle then idleBoost = newIdle else IdleInput.Text = tostring(idleBoost) end end) local function rotateCamStep(degrees) cam.CFrame = cam.CFrame * CFrame.Angles(0, math.rad(degrees), 0) end -- 360 NO BOOST HOLD LOOP task.spawn(function() while true do if _G.Flick360NoBoostHold then for i = 1, 4 do if not _G.Flick360NoBoostHold then break end rotateCamStep(90) task.wait(0.015) end else task.wait(0.03) end end end) -- 360 WITH BOOST HOLD LOOP task.spawn(function() while true do if _G.Flick360Hold then local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") for i = 1, 4 do if not _G.Flick360Hold then break end rotateCamStep(90) if hrp and hum then local lookDir = cam.CFrame.LookVector local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit if hum.MoveDirection.Magnitude > 0 then hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (hum.MoveDirection * moveBoost) else hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (flatDir * idleBoost) end end task.wait(0.015) end else task.wait(0.03) end end end) -- REGULAR SG FLICK LOOP task.spawn(function() while true do if _G.FlickEnabled and not _G.Flick360Hold and not _G.Flick360NoBoostHold then local char = LocalPlayer.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") rotateCamStep(power) if hrp and hum then local lookDir = cam.CFrame.LookVector local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit if hum.MoveDirection.Magnitude > 0 then hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (hum.MoveDirection * moveBoost) else hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (flatDir * idleBoost) end end task.wait(0.015) rotateCamStep(-power) if hrp and hum then local lookDir = cam.CFrame.LookVector local flatDir = Vector3.new(lookDir.X, 0, lookDir.Z).Unit if hum.MoveDirection.Magnitude > 0 then hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (hum.MoveDirection * moveBoost) else hrp.AssemblyLinearVelocity = hrp.AssemblyLinearVelocity + (flatDir * idleBoost) end end task.wait(0.015) else task.wait(0.03) end end end) -- Toggle Actions local function toggleSG() _G.FlickEnabled = not _G.FlickEnabled local statusText = _G.FlickEnabled and "SG: ON" or "SG: OFF" local bgColor = _G.FlickEnabled and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(30, 30, 35) local textColor = _G.FlickEnabled and Color3.fromRGB(0, 0, 0) or Color3.fromRGB(255, 255, 255) ToggleButton.Text = statusText ToggleButton.BackgroundColor3 = bgColor ToggleButton.TextColor3 = textColor StandaloneBtn.Text = statusText StandaloneBtn.BackgroundColor3 = bgColor StandaloneBtn.TextColor3 = textColor end ToggleButton.MouseButton1Click:Connect(toggleSG) StandaloneBtn.MouseButton1Click:Connect(toggleSG) -- 360 Boost Connections local function on360Down() _G.Flick360Hold = true Flick360Btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Flick360Btn.TextColor3 = Color3.fromRGB(0, 0, 0) Standalone360Btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Standalone360Btn.TextColor3 = Color3.fromRGB(0, 0, 0) end local function on360Up() _G.Flick360Hold = false Flick360Btn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Flick360Btn.TextColor3 = Color3.fromRGB(255, 255, 255) Standalone360Btn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Standalone360Btn.TextColor3 = Color3.fromRGB(255, 255, 255) end Flick360Btn.MouseButton1Down:Connect(on360Down) Flick360Btn.MouseButton1Up:Connect(on360Up) Standalone360Btn.MouseButton1Down:Connect(on360Down) Standalone360Btn.MouseButton1Up:Connect(on360Up) -- 360 No Boost Connections local function on360NoBoostDown() _G.Flick360NoBoostHold = true Flick360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Flick360NoBoostBtn.TextColor3 = Color3.fromRGB(0, 0, 0) Standalone360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Standalone360NoBoostBtn.TextColor3 = Color3.fromRGB(0, 0, 0) end local function on360NoBoostUp() _G.Flick360NoBoostHold = false Flick360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Flick360NoBoostBtn.TextColor3 = Color3.fromRGB(255, 255, 255) Standalone360NoBoostBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Standalone360NoBoostBtn.TextColor3 = Color3.fromRGB(255, 255, 255) end Flick360NoBoostBtn.MouseButton1Down:Connect(on360NoBoostDown) Flick360NoBoostBtn.MouseButton1Up:Connect(on360NoBoostUp) Standalone360NoBoostBtn.MouseButton1Down:Connect(on360NoBoostDown) Standalone360NoBoostBtn.MouseButton1Up:Connect(on360NoBoostUp) ExpandBtn.MouseButton1Click:Connect(function() local show = not StandaloneBtn.Visible StandaloneBtn.Visible = show Standalone360Btn.Visible = show Standalone360NoBoostBtn.Visible = show ExpandBtn.Text = show and "➖ HIDE SPREAD" or "➕ SPREAD BUTTONS" end)