hat fe orbit 2025 WORKING ON ALL GAMES
Key RequiredUniversal

hat fe orbit 2025 WORKING ON ALL GAMES

Universal Scripttestgame593940testgame593940 4.5K views 160 executesUpdated Jul 7, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•279 lines (8044 chars)
-- 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, 160)
frame.Position = UDim2.new(0, 20, 0.5, -80)
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 = 1e12
	alignPos.Responsiveness = math.huge
	alignPos.RigidityEnabled = true

	local alignOri = Instance.new("AlignOrientation", hatHandle)
	alignOri.Attachment0 = att2
	alignOri.Attachment1 = att1
	alignOri.MaxTorque = 1e12
	alignOri.Responsiveness = math.huge
	alignOri.RigidityEnabled = true

	local bv = Instance.new("BodyVelocity", block)
	bv.MaxForce = Vector3.new(1e12, 1e12, 1e12)
	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

playerDropdown.Text = LocalPlayer.Name

local dropdownFrame = Instance.new("ScrollingFrame", frame)
dropdownFrame.Position = UDim2.new(0, 0, 0, 120)
dropdownFrame.Size = UDim2.new(1, 0, 0, 60)
dropdownFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
dropdownFrame.ScrollBarThickness = 4
dropdownFrame.BackgroundTransparency = 0.2
dropdownFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)
dropdownFrame.Visible = false

local function updateDropdown()
	dropdownFrame:ClearAllChildren()
	local count = 0

	for _, plr in ipairs(Players:GetPlayers()) do
		count += 1
		local btn = Instance.new("TextButton", dropdownFrame)
		btn.Size = UDim2.new(1, 0, 0, 20)
		btn.Position = UDim2.new(0, 0, 0, (count - 1) * 20)
		btn.Text = plr.Name
		btn.BackgroundTransparency = 0.4
		btn.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)

		btn.MouseButton1Click:Connect(function()
			selectedPlayer = plr
			playerDropdown.Text = plr.Name
			dropdownFrame.Visible = false
		end)
	end

	dropdownFrame.CanvasSize = UDim2.new(0, 0, 0, count * 20)
end

playerDropdown.MouseButton1Click:Connect(function()
	dropdownFrame.Visible = not dropdownFrame.Visible
	updateDropdown()
end)

RunService.Heartbeat:Connect(function(dt)
	if not selectedPlayer.Character then return end
	local root = selectedPlayer.Character:FindFirstChild("HumanoidRootPart")
	if not root 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 = root.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 * 1000
			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 = 1e12
				alignPos.Responsiveness = math.huge
				alignPos.RigidityEnabled = true

				local alignOri = Instance.new("AlignOrientation", handle)
				alignOri.Attachment0 = att2
				alignOri.Attachment1 = att1
				alignOri.MaxTorque = 1e12
				alignOri.Responsiveness = math.huge
				alignOri.RigidityEnabled = true
			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

Features & Information

- orbit - has radius textbot - has speed textbot - gui - uses Physics stuff Fe - a version of no Perma-Death

Community Comments (9)

UPDATEDHACKSUPDATEDHACKSJul 7, 2025

The worlds most skidded script 😭🥀

testgame593940testgame593940Jul 7, 2025

yeah

InfernokInfernokJul 8, 2025

he prompted "remove the explanations" to chatgpt

testgame593940testgame593940Jul 8, 2025

Not really, it use only for the network, it look like chatgpt made it but looks but is isnt.

MANGO205MANGO205Jul 8, 2025

bro fix why is always reset me

testgame593940testgame593940Jul 8, 2025

Mango, make reset player to drop hats so thats why it auto-reset to orbit

HackkerHackkerNov 26, 2025

Bad script

HackkerHackkerNov 26, 2025

Is so bzzd script

helloworldprinthelloworldprintMar 14, 2026

patched by roblox

More Scripts for Universal Scripts