-- BLACKHOLE print("Blackhole Command Hub loaded") local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local function playClick(parent) local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://9118823101" sound.Volume = 0.5 sound.Parent = parent sound:Play() sound.Ended:Connect(function() sound:Destroy() end) end local screenGui = Instance.new("ScreenGui") screenGui.ResetOnSpawn = false screenGui.Parent = playerGui local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 200, 0, 600) frame.Position = UDim2.new(0, 10, 0.5, -300) frame.BackgroundColor3 = Color3.fromRGB(10, 10, 20) frame.BorderSizePixel = 0 frame.Active = true frame.Parent = screenGui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) for i = 1, 40 do local s = Instance.new("Frame") s.Size = UDim2.new(0, math.random(1,3), 0, math.random(1,3)) s.Position = UDim2.new(math.random(), 0, math.random(), 0) s.BackgroundColor3 = Color3.new(1,1,1) s.BackgroundTransparency = math.random(3,8)/10 s.BorderSizePixel = 0 s.Parent = frame Instance.new("UICorner", s).CornerRadius = UDim.new(1, 0) end local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 22, 0, 22) closeBtn.Position = UDim2.new(1, -26, 0, 4) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.new(1,1,1) closeBtn.BackgroundColor3 = Color3.fromRGB(60, 0, 90) closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 12 closeBtn.BorderSizePixel = 0 closeBtn.Parent = frame Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(1, 0) closeBtn.MouseButton1Click:Connect(function() playClick(closeBtn) screenGui:Destroy() end) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 40) title.Text = "☆ Blackhole" title.TextColor3 = Color3.new(1,1,1) title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 13 title.Parent = frame local hint = Instance.new("TextLabel") hint.Size = UDim2.new(1, 0, 0, 16) hint.Position = UDim2.new(0, 0, 0, 26) hint.Text = "Press P to show/hide" hint.TextColor3 = Color3.fromRGB(140,140,160) hint.BackgroundTransparency = 1 hint.Font = Enum.Font.Gotham hint.TextSize = 10 hint.Parent = frame local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(0, 36, 0, 36) toggleBtn.Position = UDim2.new(0, 58, 0, 10) toggleBtn.Text = "☆" toggleBtn.TextColor3 = Color3.new(1, 1, 1) toggleBtn.BackgroundColor3 = Color3.fromRGB(60, 0, 130) toggleBtn.Font = Enum.Font.GothamBold toggleBtn.TextSize = 16 toggleBtn.BorderSizePixel = 0 toggleBtn.ZIndex = 10 toggleBtn.Parent = screenGui Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(1, 0) local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(150, 80, 255) stroke.Thickness = 1.5 stroke.Parent = toggleBtn local visible = true local function setVisible(state) visible = state frame.Visible = visible toggleBtn.Text = visible and "☆" or "★" toggleBtn.BackgroundColor3 = visible and Color3.fromRGB(60, 0, 130) or Color3.fromRGB(30, 30, 50) end toggleBtn.MouseButton1Click:Connect(function() playClick(toggleBtn) setVisible(not visible) end) local dragging = false local dragStart local startPos title.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = i.Position startPos = frame.Position end end) title.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UIS.InputChanged:Connect(function(i) if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then local delta = i.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) local function makeLabel(text, y) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -20, 0, 18) l.Position = UDim2.new(0, 10, 0, y) l.Text = text l.TextColor3 = Color3.fromRGB(180,180,180) l.BackgroundTransparency = 1 l.Font = Enum.Font.Gotham l.TextSize = 11 l.TextXAlignment = Enum.TextXAlignment.Left l.Parent = frame end local function makeToggle(text, y) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -20, 0, 34) btn.Position = UDim2.new(0, 10, 0, y) btn.Text = text .. ": OFF" btn.TextColor3 = Color3.new(1,1,1) btn.BackgroundColor3 = Color3.fromRGB(50,50,60) btn.Font = Enum.Font.GothamBold btn.TextSize = 13 btn.BorderSizePixel = 0 btn.Parent = frame Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) return btn end local function setToggle(btn, name, state) btn.Text = name .. (state and ": ON" or ": OFF") btn.BackgroundColor3 = state and Color3.fromRGB(0,180,100) or Color3.fromRGB(50,50,60) end local function makeSlider(y, minVal, maxVal, default) local pct = (default - minVal) / (maxVal - minVal) local track = Instance.new("Frame") track.Size = UDim2.new(1, -30, 0, 8) track.Position = UDim2.new(0, 15, 0, y) track.BackgroundColor3 = Color3.fromRGB(50,50,60) track.BorderSizePixel = 0 track.Parent = frame Instance.new("UICorner", track).CornerRadius = UDim.new(1, 0) local fill = Instance.new("Frame") fill.Size = UDim2.new(pct, 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(0,180,100) fill.BorderSizePixel = 0 fill.Parent = track Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0) local handle = Instance.new("Frame") handle.Size = UDim2.new(0, 16, 0, 16) handle.Position = UDim2.new(pct, -8, 0.5, -8) handle.BackgroundColor3 = Color3.new(1,1,1) handle.BorderSizePixel = 0 handle.Parent = track Instance.new("UICorner", handle).CornerRadius = UDim.new(1, 0) local sliding = false local function update(x) local left = track.AbsolutePosition.X local width = track.AbsoluteSize.X pct = math.clamp((x - left) / width, 0, 1) fill.Size = UDim2.new(pct, 0, 1, 0) handle.Position = UDim2.new(pct, -8, 0.5, -8) end track.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then sliding = true update(i.Position.X) end end) UIS.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then sliding = false end end) UIS.InputChanged:Connect(function(i) if sliding and i.UserInputType == Enum.UserInputType.MouseMovement then update(i.Position.X) end end) return function() return minVal + pct * (maxVal - minVal) end end makeLabel("Speed", 44) local speedBtn = makeToggle("Speed", 62) makeLabel("Speed Amount", 102) local getSpeed = makeSlider(122, 16, 200, 50) makeLabel("Fly", 146) local flyBtn = makeToggle("Fly", 164) makeLabel("Fly Speed", 204) local getFlySpeed = makeSlider(222, 10, 150, 40) makeLabel("Infinite Jump", 246) local jumpBtn = makeToggle("InfJump", 264) makeLabel("Noclip", 308) local noclipBtn = makeToggle("Noclip", 316) makeLabel("Teleport to Player", 364) local tpBox = Instance.new("TextBox") tpBox.Size = UDim2.new(1, -20, 0, 30) tpBox.Position = UDim2.new(0, 10, 0, 384) tpBox.PlaceholderText = "Enter name..." tpBox.Text = "" tpBox.TextColor3 = Color3.new(1,1,1) tpBox.PlaceholderColor3 = Color3.fromRGB(120,120,140) tpBox.BackgroundColor3 = Color3.fromRGB(30,30,45) tpBox.Font = Enum.Font.Gotham tpBox.TextSize = 12 tpBox.BorderSizePixel = 0 tpBox.ClearTextOnFocus = true tpBox.Parent = frame Instance.new("UICorner", tpBox).CornerRadius = UDim.new(0, 8) local tpStatus = Instance.new("TextLabel") tpStatus.Size = UDim2.new(1, -20, 0, 16) tpStatus.Position = UDim2.new(0, 10, 0, 420) tpStatus.Text = "" tpStatus.TextColor3 = Color3.fromRGB(255, 100, 100) tpStatus.BackgroundTransparency = 1 tpStatus.Font = Enum.Font.Gotham tpStatus.TextSize = 10 tpStatus.TextXAlignment = Enum.TextXAlignment.Left tpStatus.Parent = frame local tpBtn = Instance.new("TextButton") tpBtn.Size = UDim2.new(1, -20, 0, 34) tpBtn.Position = UDim2.new(0, 10, 0, 440) tpBtn.Text = "Teleport" tpBtn.TextColor3 = Color3.new(1,1,1) tpBtn.BackgroundColor3 = Color3.fromRGB(60, 0, 130) tpBtn.Font = Enum.Font.GothamBold tpBtn.TextSize = 13 tpBtn.BorderSizePixel = 0 tpBtn.Parent = frame Instance.new("UICorner", tpBtn).CornerRadius = UDim.new(0, 8) -- Float section (REBUILT) makeLabel("Float (E = Up, Q = Down)", 484) local floatBtn = makeToggle("Float", 502) local floatOn = false local floatConn local floatForce local function stopFloat(char) if floatConn then floatConn:Disconnect() floatConn = nil end local hrp = char and char:FindFirstChild("HumanoidRootPart") if hrp then local f = hrp:FindFirstChild("FloatForce") if f then f:Destroy() end end end floatBtn.MouseButton1Click:Connect(function() playClick(floatBtn) floatOn = not floatOn setToggle(floatBtn, "Float", floatOn) local char = player.Character if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChildOfClass("Humanoid") if not hrp or not hum then return end if floatOn then -- ðŸ§ē Use VectorForce instead of BodyVelocity local attachment = Instance.new("Attachment") attachment.Name = "FloatAttachment" attachment.Parent = hrp floatForce = Instance.new("VectorForce") floatForce.Name = "FloatForce" floatForce.Attachment0 = attachment floatForce.Force = Vector3.zero floatForce.RelativeTo = Enum.ActuatorRelativeTo.World floatForce.ApplyAtCenterOfMass = true floatForce.Parent = hrp floatConn = RunService.Heartbeat:Connect(function() local mass = hrp.AssemblyMass -- ðŸŠķ Counter gravity so you "hover" local gravityForce = workspace.Gravity * mass local vertical = 0 if UIS:IsKeyDown(Enum.KeyCode.E) then vertical = gravityForce elseif UIS:IsKeyDown(Enum.KeyCode.Q) then vertical = -gravityForce end -- 🧊 Keep floating but DO NOT override walking floatForce.Force = Vector3.new(0, gravityForce + vertical, 0) end) else stopFloat(char) end end) local function findPlayer(query) query = query:lower() local best = nil local bestLen = math.huge for _, p in ipairs(Players:GetPlayers()) do if p ~= player then local name = p.Name:lower() local dispName = p.DisplayName:lower() if name == query or dispName == query then return p end if name:sub(1, #query) == query or dispName:sub(1, #query) == query then if #name < bestLen then best = p bestLen = #name end end if name:find(query, 1, true) or dispName:find(query, 1, true) then if not best then best = p bestLen = #name end end end end return best end local function doTeleport() playClick(tpBtn) local query = tpBox.Text if query == "" then tpStatus.Text = "Enter a name first." tpStatus.TextColor3 = Color3.fromRGB(255, 100, 100) return end local target = findPlayer(query) if not target then tpStatus.Text = "Player not found." tpStatus.TextColor3 = Color3.fromRGB(255, 100, 100) return end local myChar = player.Character local targetChar = target.Character if not myChar or not targetChar then tpStatus.Text = "Character missing." tpStatus.TextColor3 = Color3.fromRGB(255, 100, 100) return end local myHRP = myChar:FindFirstChild("HumanoidRootPart") local targetHRP = targetChar:FindFirstChild("HumanoidRootPart") if not myHRP or not targetHRP then tpStatus.Text = "Root part missing." tpStatus.TextColor3 = Color3.fromRGB(255, 100, 100) return end myHRP.CFrame = targetHRP.CFrame + Vector3.new(0, 3, 0) tpStatus.Text = "Teleported to " .. target.Name tpStatus.TextColor3 = Color3.fromRGB(0, 200, 120) end tpBtn.MouseButton1Click:Connect(doTeleport) tpBox.FocusLost:Connect(function(enterPressed) if enterPressed then doTeleport() end end) local speedOn = false speedBtn.MouseButton1Click:Connect(function() playClick(speedBtn) speedOn = not speedOn setToggle(speedBtn, "Speed", speedOn) if not speedOn then local h = player.Character and player.Character:FindFirstChildOfClass("Humanoid") if h then h.WalkSpeed = 16 end end end) RunService.Heartbeat:Connect(function() if speedOn then local h = player.Character and player.Character:FindFirstChildOfClass("Humanoid") if h then h.WalkSpeed = getSpeed() end end end) local flyOn = false local flyConn local bodyVel, bodyGyro local function stopFly(char) if flyConn then flyConn:Disconnect() flyConn = nil end local hrp = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") if hrp then local v = hrp:FindFirstChild("BodyVelocity") if v then v:Destroy() end local g = hrp:FindFirstChild("BodyGyro") if g then g:Destroy() end hrp.AssemblyLinearVelocity = Vector3.zero hrp.AssemblyAngularVelocity = Vector3.zero end if hum then hum.PlatformStand = false hum:ChangeState(Enum.HumanoidStateType.Running) task.delay(0.05, function() if hum then hum:ChangeState(Enum.HumanoidStateType.GettingUp) end end) end if hrp then hrp.CFrame = hrp.CFrame + Vector3.new(0, 0.1, 0) end end flyBtn.MouseButton1Click:Connect(function() playClick(flyBtn) flyOn = not flyOn setToggle(flyBtn, "Fly", flyOn) local char = player.Character if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart") local h = char:FindFirstChildOfClass("Humanoid") if not hrp or not h then return end if flyOn then bodyVel = Instance.new("BodyVelocity") bodyVel.MaxForce = Vector3.new(1e5,1e5,1e5) bodyVel.Parent = hrp bodyGyro = Instance.new("BodyGyro") bodyGyro.MaxTorque = Vector3.new(1e5,1e5,1e5) bodyGyro.P = 1e4 bodyGyro.Parent = hrp h.PlatformStand = true flyConn = RunService.Heartbeat:Connect(function() local spd = getFlySpeed() local cf = workspace.CurrentCamera.CFrame local v = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then v += cf.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then v -= cf.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then v -= cf.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then v += cf.RightVector end if UIS:IsKeyDown(Enum.KeyCode.Space) then v += Vector3.new(0,1,0) end if UIS:IsKeyDown(Enum.KeyCode.LeftShift) then v -= Vector3.new(0,1,0) end if v.Magnitude > 0 then v = v.Unit * spd end bodyVel.Velocity = v bodyGyro.CFrame = CFrame.new(hrp.Position, hrp.Position + cf.LookVector) end) else stopFly(char) end end) local jumpOn = false jumpBtn.MouseButton1Click:Connect(function() playClick(jumpBtn) jumpOn = not jumpOn setToggle(jumpBtn, "InfJump", jumpOn) end) UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.Space and jumpOn then local h = player.Character and player.Character:FindFirstChildOfClass("Humanoid") if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end end) local noclipOn = false local noclipConn noclipBtn.MouseButton1Click:Connect(function() playClick(noclipBtn) noclipOn = not noclipOn setToggle(noclipBtn, "Noclip", noclipOn) local char = player.Character if not char then return end if noclipOn then noclipConn = RunService.Stepped:Connect(function() for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end) else if noclipConn then noclipConn:Disconnect() noclipConn = nil end for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = true end end end end) UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.P then setVisible(not visible) end end)