local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer -- SETTINGS local NORMAL_SPEED = 16 local FAST_SPEED = 50 local NORMAL_JUMP = 50 local HIGH_JUMP = 100 local FLY_SPEED = 70 -- STATES local flying = false local noclip = false local speedEnabled = false local jumpEnabled = false local godMode = false local savedPosition = nil local flyConnection local flyVelocity local flyGyro local noclipConnection local godConnection -- GUI local gui = Instance.new("ScreenGui") gui.Name = "ScriptHub" gui.ResetOnSpawn = false gui.IgnoreGuiInset = false gui.Parent = player:WaitForChild("PlayerGui") ---------------------------------------------------------------- -- MAIN HUB ---------------------------------------------------------------- local main = Instance.new("Frame") main.Size = UDim2.new(0, 300, 0, 470) main.Position = UDim2.new(0.5, -150, 0.5, -235) main.BackgroundColor3 = Color3.fromRGB(25, 25, 25) main.BorderSizePixel = 0 main.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = main ---------------------------------------------------------------- -- TITLE ---------------------------------------------------------------- local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -90, 0, 45) title.BackgroundColor3 = Color3.fromRGB(35, 35, 35) title.Text = "⚙ SCRIPT HUB" title.TextColor3 = Color3.new(1, 1, 1) title.TextSize = 20 title.Font = Enum.Font.GothamBold title.Parent = main ---------------------------------------------------------------- -- MINUS BUTTON ---------------------------------------------------------------- local minimize = Instance.new("TextButton") minimize.Size = UDim2.new(0, 45, 0, 45) minimize.Position = UDim2.new(1, -90, 0, 0) minimize.BackgroundTransparency = 1 minimize.Text = "−" minimize.TextColor3 = Color3.new(1, 1, 1) minimize.TextSize = 28 minimize.Font = Enum.Font.GothamBold minimize.Parent = main ---------------------------------------------------------------- -- CLOSE BUTTON ---------------------------------------------------------------- local close = Instance.new("TextButton") close.Size = UDim2.new(0, 45, 0, 45) close.Position = UDim2.new(1, -45, 0, 0) close.BackgroundTransparency = 1 close.Text = "X" close.TextColor3 = Color3.fromRGB(255, 80, 80) close.TextSize = 20 close.Font = Enum.Font.GothamBold close.Parent = main ---------------------------------------------------------------- -- SH BUTTON ---------------------------------------------------------------- local shButton = Instance.new("TextButton") shButton.Size = UDim2.new(0, 55, 0, 45) -- TOP CENTER shButton.Position = UDim2.new( 0.5, -27, 0, 55 ) shButton.BackgroundColor3 = Color3.fromRGB(35, 35, 35) shButton.Text = "sh" shButton.TextColor3 = Color3.new(1, 1, 1) shButton.TextSize = 18 shButton.Font = Enum.Font.GothamBold shButton.Visible = false shButton.Active = true shButton.Parent = gui local shCorner = Instance.new("UICorner") shCorner.CornerRadius = UDim.new(0, 8) shCorner.Parent = shButton ---------------------------------------------------------------- -- DRAGGABLE SH BUTTON ---------------------------------------------------------------- local shDragging = false local shDragStart local shStartPosition shButton.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then shDragging = true shDragStart = input.Position shStartPosition = shButton.Position end end) shButton.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then shDragging = false end end) UserInputService.InputChanged:Connect(function(input) if shDragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - shDragStart shButton.Position = UDim2.new( shStartPosition.X.Scale, shStartPosition.X.Offset + delta.X, shStartPosition.Y.Scale, shStartPosition.Y.Offset + delta.Y ) end end) ---------------------------------------------------------------- -- MINIMIZE / REOPEN ---------------------------------------------------------------- minimize.Activated:Connect(function() main.Visible = false shButton.Visible = true end) shButton.Activated:Connect(function() main.Visible = true shButton.Visible = false end) close.Activated:Connect(function() main.Visible = false shButton.Visible = false end) ---------------------------------------------------------------- -- DRAGGABLE MAIN HUB ---------------------------------------------------------------- local dragging = false local dragStart local startPosition title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPosition = main.Position end end) title.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) 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( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) ---------------------------------------------------------------- -- BUTTON CREATOR ---------------------------------------------------------------- local y = 55 local function makeButton(text) local button = Instance.new("TextButton") button.Size = UDim2.new(1, -20, 0, 40) button.Position = UDim2.new(0, 10, 0, y) button.BackgroundColor3 = Color3.fromRGB(45, 45, 45) button.TextColor3 = Color3.new(1, 1, 1) button.TextSize = 15 button.Font = Enum.Font.GothamBold button.Text = text button.Parent = main local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 6) c.Parent = button y += 45 return button end local function getCharacter() return player.Character or player.CharacterAdded:Wait() end ---------------------------------------------------------------- -- NOCLIP ---------------------------------------------------------------- local noclipButton = makeButton("👻 Noclip: OFF") noclipButton.Activated:Connect(function() noclip = not noclip noclipButton.Text = "👻 Noclip: " .. (noclip and "ON" or "OFF") if noclip then noclipConnection = RunService.Stepped:Connect(function() local character = player.Character if character then for _, part in ipairs( character:GetDescendants() ) do if part:IsA("BasePart") then part.CanCollide = false end end end end) else if noclipConnection then noclipConnection:Disconnect() noclipConnection = nil end end end) ---------------------------------------------------------------- -- SPEED ---------------------------------------------------------------- local speedButton = makeButton("⚡ Speed: OFF") speedButton.Activated:Connect(function() speedEnabled = not speedEnabled local humanoid = getCharacter():FindFirstChildOfClass("Humanoid") if humanoid then humanoid.WalkSpeed = speedEnabled and FAST_SPEED or NORMAL_SPEED end speedButton.Text = "⚡ Speed: " .. (speedEnabled and "ON" or "OFF") end) ---------------------------------------------------------------- -- HIGH JUMP ---------------------------------------------------------------- local jumpButton = makeButton("🦘 High Jump: OFF") jumpButton.Activated:Connect(function() jumpEnabled = not jumpEnabled local humanoid = getCharacter():FindFirstChildOfClass("Humanoid") if humanoid then humanoid.UseJumpPower = true humanoid.JumpPower = jumpEnabled and HIGH_JUMP or NORMAL_JUMP end jumpButton.Text = "🦘 High Jump: " .. (jumpEnabled and "ON" or "OFF") end) ---------------------------------------------------------------- -- SAVE POSITION ---------------------------------------------------------------- local saveButton = makeButton("📍 Save Position") saveButton.Activated:Connect(function() local root = getCharacter():FindFirstChild( "HumanoidRootPart" ) if root then savedPosition = root.CFrame saveButton.Text = "✅ Position Saved!" task.delay(1.5, function() saveButton.Text = "📍 Save Position" end) end end) ---------------------------------------------------------------- -- TELEPORT ---------------------------------------------------------------- local teleportButton = makeButton("🌀 Teleport to Saved") teleportButton.Activated:Connect(function() if savedPosition then local root = getCharacter():FindFirstChild( "HumanoidRootPart" ) if root then root.CFrame = savedPosition end else teleportButton.Text = "❌ No Position Saved" task.delay(1.5, function() teleportButton.Text = "🌀 Teleport to Saved" end) end end) ---------------------------------------------------------------- -- GOD MODE ---------------------------------------------------------------- local godButton = makeButton("🛡️ God Mode: OFF") godButton.Activated:Connect(function() godMode = not godMode godButton.Text = "🛡️ God Mode: " .. (godMode and "ON" or "OFF") local humanoid = getCharacter():FindFirstChildOfClass( "Humanoid" ) if humanoid then if godMode then humanoid.MaxHealth = math.huge humanoid.Health = math.huge if godConnection then godConnection:Disconnect() end godConnection = humanoid.HealthChanged:Connect( function() if godMode then humanoid.Health = math.huge end end ) else if godConnection then godConnection:Disconnect() godConnection = nil end humanoid.MaxHealth = 100 humanoid.Health = 100 end end end) ---------------------------------------------------------------- -- RESET ---------------------------------------------------------------- local resetButton = makeButton("🔄 Reset Character") resetButton.Activated:Connect(function() local character = player.Character local humanoid = character and character:FindFirstChildOfClass( "Humanoid" ) if humanoid then humanoid.Health = 0 end end) ---------------------------------------------------------------- -- CAMERA 3D FLY ---------------------------------------------------------------- local flyButton = makeButton("✈️ Fly: OFF") flyButton.Activated:Connect(function() flying = not flying flyButton.Text = "✈️ Fly: " .. (flying and "ON" or "OFF") local character = getCharacter() local humanoid = character:FindFirstChildOfClass( "Humanoid" ) local root = character:FindFirstChild( "HumanoidRootPart" ) if not humanoid or not root then flying = false return end if flying then humanoid.PlatformStand = true humanoid.AutoRotate = false flyVelocity = Instance.new("BodyVelocity") flyVelocity.Name = "MobileFlyVelocity" flyVelocity.MaxForce = Vector3.new( math.huge, math.huge, math.huge ) flyVelocity.P = 15000 flyVelocity.Velocity = Vector3.zero flyVelocity.Parent = root flyGyro = Instance.new("BodyGyro") flyGyro.Name = "MobileFlyGyro" flyGyro.MaxTorque = Vector3.new( math.huge, math.huge, math.huge ) flyGyro.P = 15000 flyGyro.D = 500 flyGyro.CFrame = root.CFrame flyGyro.Parent = root flyConnection = RunService.RenderStepped:Connect( function() if not flying or not root.Parent then return end local camera = workspace.CurrentCamera local move = humanoid.MoveDirection local cameraForward = camera.CFrame.LookVector local cameraRight = camera.CFrame.RightVector local flatForward = Vector3.new( cameraForward.X, 0, cameraForward.Z ) local flatRight = Vector3.new( cameraRight.X, 0, cameraRight.Z ) if flatForward.Magnitude > 0 then flatForward = flatForward.Unit end if flatRight.Magnitude > 0 then flatRight = flatRight.Unit end local forwardAmount = move:Dot(flatForward) local rightAmount = move:Dot(flatRight) local direction = Vector3.zero if move.Magnitude > 0.05 then direction = (cameraForward * forwardAmount) + (flatRight * rightAmount) if direction.Magnitude > 0 then direction = direction.Unit end end if direction.Magnitude > 0.05 then flyVelocity.Velocity = direction * FLY_SPEED else flyVelocity.Velocity = Vector3.zero end local look = camera.CFrame.LookVector if look.Magnitude > 0 then flyGyro.CFrame = CFrame.lookAt( root.Position, root.Position + look ) end end ) else if flyConnection then flyConnection:Disconnect() flyConnection = nil end if flyVelocity then flyVelocity:Destroy() flyVelocity = nil end if flyGyro then flyGyro:Destroy() flyGyro = nil end humanoid.PlatformStand = false humanoid.AutoRotate = true root.AssemblyLinearVelocity = Vector3.zero end end) ---------------------------------------------------------------- -- RESPAWN SUPPORT ---------------------------------------------------------------- player.CharacterAdded:Connect(function(character) task.wait(1) local humanoid = character:WaitForChild("Humanoid") if speedEnabled then humanoid.WalkSpeed = FAST_SPEED else humanoid.WalkSpeed = NORMAL_SPEED end humanoid.UseJumpPower = true if jumpEnabled then humanoid.JumpPower = HIGH_JUMP else humanoid.JumpPower = NORMAL_JUMP end flying = false if flyConnection then flyConnection:Disconnect() flyConnection = nil end if flyVelocity then flyVelocity:Destroy() flyVelocity = nil end if flyGyro then flyGyro:Destroy() flyGyro = nil end humanoid.PlatformStand = false humanoid.AutoRotate = true end)