-- made by gaming (recommend some games may not support but its a version of no perma-death, good luck!) local ORBIT_RADIUS = 6 local ORBIT_HEIGHT = 3 local ORBIT_SPEED = 14 local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local ORBIT_START_POS = nil repeat task.wait() until LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") ORBIT_START_POS = LocalPlayer.Character.HumanoidRootPart.CFrame local gui = Instance.new("ScreenGui", game.CoreGui) gui.Name = "OrbitGui" gui.ResetOnSpawn = false local frame = Instance.new("Frame", gui) frame.Size = UDim2.new(0, 200, 0, 100) frame.Position = UDim2.new(0, 20, 0.5, -50) frame.BackgroundColor3 = Color3.new(0, 0, 0) frame.BackgroundTransparency = 0.3 frame.Draggable = true frame.Active = true local radiusLabel = Instance.new("TextLabel", frame) radiusLabel.Size = UDim2.new(1, 0, 0, 20) radiusLabel.Text = "Radius" radiusLabel.TextColor3 = Color3.new(1, 1, 1) radiusLabel.BackgroundTransparency = 1 local radiusBox = Instance.new("TextBox", frame) radiusBox.Position = UDim2.new(0, 0, 0, 20) radiusBox.Size = UDim2.new(1, 0, 0, 20) radiusBox.Text = tostring(ORBIT_RADIUS) local speedLabel = Instance.new("TextLabel", frame) speedLabel.Position = UDim2.new(0, 0, 0, 40) speedLabel.Size = UDim2.new(1, 0, 0, 20) speedLabel.Text = "Speed" speedLabel.TextColor3 = Color3.new(1, 1, 1) speedLabel.BackgroundTransparency = 1 local speedBox = Instance.new("TextBox", frame) speedBox.Position = UDim2.new(0, 0, 0, 60) speedBox.Size = UDim2.new(1, 0, 0, 20) speedBox.Text = tostring(ORBIT_SPEED) radiusBox.FocusLost:Connect(function() local val = tonumber(radiusBox.Text) if val then ORBIT_RADIUS = val end end) speedBox.FocusLost:Connect(function() local val = tonumber(speedBox.Text) if val then ORBIT_SPEED = val end end) local blocks = {} local orbitTick = 0 local torso = nil local character = nil local function getTorso() character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() torso = character:FindFirstChild("UpperTorso") or character:FindFirstChild("Torso") or character:FindFirstChild("HumanoidRootPart") end local function createBlock(pos) local part = Instance.new("Part") part.Size = Vector3.new(2, 2, 2) part.Anchored = false part.CanCollide = false part.Transparency = 1 part.BrickColor = BrickColor.new("Really red") part.Position = pos part.Material = Enum.Material.Neon part:SetAttribute("AllowSleep", false) part.CustomPhysicalProperties = PhysicalProperties.new(0.3, 0.3, 0.3) part.Parent = Workspace return part end local function attachBlockToHat(block, hatHandle) for _, v in ipairs(hatHandle:GetChildren()) do if v:IsA("Attachment") or v:IsA("AlignPosition") or v:IsA("AlignOrientation") then v:Destroy() end end for _, v in ipairs(block:GetChildren()) do if v:IsA("Attachment") then v:Destroy() end end local att1 = Instance.new("Attachment", block) local att2 = Instance.new("Attachment", hatHandle) local alignPos = Instance.new("AlignPosition", hatHandle) alignPos.Attachment0 = att2 alignPos.Attachment1 = att1 alignPos.MaxForce = 1e9 alignPos.Responsiveness = 200 alignPos.RigidityEnabled = false local alignOri = Instance.new("AlignOrientation", hatHandle) alignOri.Attachment0 = att2 alignOri.Attachment1 = att1 alignOri.MaxTorque = 1e9 alignOri.Responsiveness = 200 alignOri.RigidityEnabled = false local bv = Instance.new("BodyVelocity", block) bv.MaxForce = Vector3.new(1e9, 1e9, 1e9) bv.Velocity = Vector3.zero end local function refreshOrbit() for _, b in ipairs(blocks) do if b.block then b.block:Destroy() end end blocks = {} getTorso() local accessories = {} for _, v in ipairs(character:GetChildren()) do if v:IsA("Accessory") and v:FindFirstChild("Handle") then table.insert(accessories, v) end end for i, acc in ipairs(accessories) do local handle = acc:FindFirstChild("Handle") local block = createBlock(handle.Position) attachBlockToHat(block, handle) blocks[i] = {block = block, handle = handle, index = i, total = #accessories} end end getTorso() refreshOrbit() local hum = character:FindFirstChildOfClass("Humanoid") if hum then hum.Health = 0 end RunService.Heartbeat:Connect(function(dt) if not torso then return end orbitTick += dt for _, b in ipairs(blocks) do local i, total = b.index, b.total local angle = (2 * math.pi / total) * i + orbitTick * ORBIT_SPEED local offset = Vector3.new(math.cos(angle) * ORBIT_RADIUS, ORBIT_HEIGHT, math.sin(angle) * ORBIT_RADIUS) local goalPos = torso.Position + offset local block = b.block local bv = block:FindFirstChildOfClass("BodyVelocity") if bv then local dir = (goalPos - block.Position) if dir.Magnitude > 0.1 then bv.Velocity = dir.Unit * 35 else bv.Velocity = Vector3.zero end end end end) task.spawn(function() while true do for _, b in pairs(blocks) do local block = b.block local handle = b.handle if block and handle then for _, v in ipairs(handle:GetChildren()) do if v:IsA("AlignPosition") or v:IsA("AlignOrientation") then v:Destroy() end end for _, v in ipairs(block:GetChildren()) do if v:IsA("Attachment") then v:Destroy() end end local att1 = Instance.new("Attachment", block) local att2 = Instance.new("Attachment", handle) local alignPos = Instance.new("AlignPosition", handle) alignPos.Attachment0 = att2 alignPos.Attachment1 = att1 alignPos.MaxForce = 1e9 alignPos.Responsiveness = 200 alignPos.RigidityEnabled = false local alignOri = Instance.new("AlignOrientation", handle) alignOri.Attachment0 = att2 alignOri.Attachment1 = att1 alignOri.MaxTorque = 1e9 alignOri.Responsiveness = 200 alignOri.RigidityEnabled = false end end task.wait(0.3) end end) LocalPlayer.CharacterAdded:Connect(function(char) character = char local hum = char:WaitForChild("Humanoid", 5) local hrp = nil repeat task.wait() hrp = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") until hum and hrp and hum.Health > 0 task.wait(0.3) if ORBIT_START_POS then hrp.CFrame = ORBIT_START_POS end task.wait(0.5) hum.Health = 0 task.wait(0.5) refreshOrbit() end) local camPart = Instance.new("Part", Workspace) camPart.Anchored = true camPart.CanCollide = false camPart.Size = Vector3.new(1, 1, 1) camPart.CFrame = ORBIT_START_POS camPart.Transparency = 1 camPart.BrickColor = BrickColor.new("Lime green") Workspace.CurrentCamera.CameraSubject = camPart Workspace.CurrentCamera.CameraType = Enum.CameraType.Attach local playerLabel = Instance.new("TextLabel", frame) playerLabel.Position = UDim2.new(0, 0, 1, 0) playerLabel.Size = UDim2.new(1, 0, 0, 20) playerLabel.Text = "Select Player" playerLabel.TextColor3 = Color3.new(1, 1, 1) playerLabel.BackgroundTransparency = 1 local playerDropdown = Instance.new("TextButton", frame) playerDropdown.Position = UDim2.new(0, 0, 1, 20) playerDropdown.Size = UDim2.new(1, 0, 0, 20) playerDropdown.Text = LocalPlayer.Name playerDropdown.TextColor3 = Color3.new(1, 1, 1) playerDropdown.BackgroundColor3 = Color3.fromRGB(40, 40, 40) local selectedPlayer = LocalPlayer local dropdownOpen = false local menu local function createDropdownMenu() if menu then menu:Destroy() end menu = Instance.new("ScrollingFrame", frame) menu.Name = "DropdownMenu" menu.Position = UDim2.new(0, 0, 1, 40) menu.Size = UDim2.new(1, 0, 0, 120) menu.BackgroundColor3 = Color3.fromRGB(25, 25, 25) menu.BorderSizePixel = 0 menu.CanvasSize = UDim2.new(0, 0, 0, 20 * #Players:GetPlayers()) menu.ScrollBarThickness = 6 menu.VerticalScrollBarInset = Enum.ScrollBarInset.Always local layout = Instance.new("UIListLayout", menu) layout.SortOrder = Enum.SortOrder.LayoutOrder for i, p in ipairs(Players:GetPlayers()) do local btn = Instance.new("TextButton", menu) btn.Size = UDim2.new(1, 0, 0, 20) btn.Text = p.Name btn.BackgroundColor3 = Color3.fromRGB(35, 35, 35) btn.TextColor3 = Color3.new(1, 1, 1) btn.BorderSizePixel = 0 btn.MouseButton1Click:Connect(function() selectedPlayer = p playerDropdown.Text = p.Name menu:Destroy() dropdownOpen = false end) end end playerDropdown.MouseButton1Click:Connect(function() if dropdownOpen then if menu then menu:Destroy() end dropdownOpen = false else createDropdownMenu() dropdownOpen = true end end) -- Modified attachBlockToHat with extreme force & no shake local function attachBlockToHat(block, hatHandle) for _, v in ipairs(hatHandle:GetChildren()) do if v:IsA("Attachment") or v:IsA("AlignPosition") or v:IsA("AlignOrientation") then v:Destroy() end end for _, v in ipairs(block:GetChildren()) do if v:IsA("Attachment") then v:Destroy() end end local att1 = Instance.new("Attachment", block) local att2 = Instance.new("Attachment", hatHandle) local alignPos = Instance.new("AlignPosition", hatHandle) alignPos.Attachment0 = att2 alignPos.Attachment1 = att1 alignPos.MaxForce = 1e12 -- insane force alignPos.Responsiveness = math.huge -- instant snap alignPos.RigidityEnabled = true -- no shake local alignOri = Instance.new("AlignOrientation", hatHandle) alignOri.Attachment0 = att2 alignOri.Attachment1 = att1 alignOri.MaxTorque = 1e12 -- insane torque alignOri.Responsiveness = math.huge -- instant snap alignOri.RigidityEnabled = true -- no shake if block:FindFirstChild("BodyVelocity") then block.BodyVelocity:Destroy() end local bv = Instance.new("BodyVelocity", block) bv.MaxForce = Vector3.new(1e12, 1e12, 1e12) -- extreme force velocity bv.Velocity = Vector3.zero end -- Orbit update follows selected player RunService.Heartbeat:Connect(function(dt) if not selectedPlayer.Character or not selectedPlayer.Character:FindFirstChild("HumanoidRootPart") then return end torso = selectedPlayer.Character:FindFirstChild("UpperTorso") or selectedPlayer.Character:FindFirstChild("Torso") or selectedPlayer.Character:FindFirstChild("HumanoidRootPart") if not torso then return end orbitTick += dt for _, b in ipairs(blocks) do local i, total = b.index, b.total local angle = (2 * math.pi / total) * i + orbitTick * ORBIT_SPEED local offset = Vector3.new(math.cos(angle) * ORBIT_RADIUS, ORBIT_HEIGHT, math.sin(angle) * ORBIT_RADIUS) local goalPos = torso.Position + offset local block = b.block local bv = block:FindFirstChildOfClass("BodyVelocity") if bv then local dir = (goalPos - block.Position) if dir.Magnitude > 0.1 then bv.Velocity = dir.Unit * 35 else bv.Velocity = Vector3.zero end end end end)