--[[ Commands: .orbit playername - Make your hats orbit a specific player .mode number - Switch between several modes (1–11) .speed number - Adjust how fast the hats orbit .offset number - Set the orbit radius .angular X Y Z - Set the spinning angular velocity .toggle - Turn orbit on or off .height number - Set vertical height of hats .rainbow on/off - Enable or disable rainbow hat colors .reset - Reset hats to your own character .spread number - Adjust angle spread between hats .randommode - Automatically switch modes randomly .stoprandom - Stop automatic random mode switching ]] local G2L = {}; G2L["1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")); G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling; G2L["1"]["ResetOnSpawn"] = false; G2L["2"] = Instance.new("LocalScript", G2L["1"]); G2L["3"] = Instance.new("TextLabel", G2L["1"]); G2L["3"]["BorderSizePixel"] = 0; G2L["3"]["TextSize"] = 14; G2L["3"]["TextTransparency"] = 0.51; G2L["3"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["3"]["FontFace"] = Font.new([[rbxasset://fonts/families/SourceSansPro.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["3"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["3"]["BackgroundTransparency"] = 1; G2L["3"]["Size"] = UDim2.new(0, 200, 0, 50); G2L["3"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["3"]["Text"] = [[Modded By OrangyGuicy]]; G2L["3"]["Position"] = UDim2.new(0.47743, 0, 0.88271, 0); local function C_2() local script = G2L["2"]; local Players = game:GetService("Players") local RunService = game:GetService("RunService") local plr = Players.LocalPlayer local chr = plr.Character or plr.CharacterAdded:Wait() while not chr:FindFirstChild("HumanoidRootPart") or not chr:FindFirstChild("Humanoid") do chr = plr.Character or plr.CharacterAdded:Wait() wait() end local hum = chr:WaitForChild("Humanoid") local mov, mov2 = {}, {} local offset, speed, height = 10, 0.5, 0 local angular = Vector3.new(0,0,0) local toggle, rainbow = true, false local followTarget = chr local spread, mode = 360, 1 local hoverHeight, smoothSpeed = 8, 0.4 local randomModeActive = false local function ftp(str) local pt = {} if str ~= "me" and str ~= "random" then for _, v in pairs(Players:GetPlayers()) do if v.Name:lower():find(str:lower()) then table.insert(pt, v) end end elseif str == "me" then table.insert(pt, plr) elseif str == "random" then table.insert(pt, Players:GetPlayers()[math.random(1, #Players:GetPlayers())]) end return pt end for _, v in pairs(hum:GetAccessories()) do local b = v.Handle b.Anchored = false b.CanCollide = false b.Massless = true b.CustomPhysicalProperties = PhysicalProperties.new(0,0,0,0,0) b:BreakJoints() for _, k in pairs(v:GetChildren()) do if not k:IsA("SpecialMesh") and not k:IsA("Part") then k:Destroy() end end local a0 = Instance.new("Attachment", b) local a1 = Instance.new("Attachment", chr.Head) local align = Instance.new("AlignPosition", b) align.Attachment0 = a0 align.Attachment1 = a1 align.MaxForce = 1e7 align.MaxVelocity = math.huge align.Responsiveness = 200 align.RigidityEnabled = true local still = Instance.new("BodyAngularVelocity", b) still.MaxTorque = Vector3.new(math.huge, math.huge, math.huge) still.AngularVelocity = Vector3.new(0,0,0) table.insert(mov, a1) table.insert(mov2, still) end RunService.RenderStepped:Connect(function() if not toggle then return end for i, v in pairs(mov) do local indexAngle = (i-1)*(spread/#mov) local fixedHeight = height local orbitPos if mode == 1 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.cos(tick()*speed + indexAngle)*offset, fixedHeight, math.sin(tick()*speed + indexAngle)*offset) elseif mode == 2 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(offset, fixedHeight, offset) elseif mode == 3 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.sin(tick()*speed + indexAngle)*offset, fixedHeight, math.sin(tick()*speed + indexAngle)*offset) elseif mode == 4 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.cos(tick()*i)*offset, fixedHeight, math.sin(tick()*i)*offset) elseif mode == 5 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.random(-offset, offset), fixedHeight, math.random(-offset, offset)) elseif mode == 6 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(indexAngle, fixedHeight, 0) elseif mode == 7 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(0, fixedHeight, indexAngle) elseif mode == 8 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.cos(tick()*i)*offset*2, fixedHeight, math.sin(tick()*i)*offset*2) elseif mode == 9 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.sin(tick() + i)*offset, fixedHeight, math.cos(tick() + i)*offset) elseif mode == 10 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(0, fixedHeight + 5, 0) elseif mode == 11 then orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(plr:GetMouse().Hit.p.X, plr:GetMouse().Hit.p.Y + 5, plr:GetMouse().Hit.p.Z) else orbitPos = followTarget.HumanoidRootPart.Position + Vector3.new(math.cos(tick()*speed + indexAngle)*offset, fixedHeight, math.sin(tick()*speed + indexAngle)*offset) end local currentPos = followTarget.HumanoidRootPart.CFrame:ToWorldSpace(CFrame.new(v.Position)).Position local finalPos = currentPos:Lerp(orbitPos, 0.4) v.Position = followTarget.HumanoidRootPart.CFrame:ToObjectSpace(CFrame.new(finalPos)).Position mov2[i].AngularVelocity = angular end if rainbow then for _, acc in pairs(hum:GetAccessories()) do if acc.Handle:IsA("BasePart") then acc.Handle.Color = Color3.fromHSV(tick()%1,1,1) end end end end) plr.Chatted:Connect(function(msg) local args = msg:split(" ") local cmd = args[1]:lower() if cmd == ".orbit" then local targets = ftp(args[2]) if targets[1] then followTarget = targets[1].Character end elseif cmd == ".speed" then speed = tonumber(args[2]) or speed elseif cmd == ".mode" then mode = tonumber(args[2]) or 1 elseif cmd == ".offset" then offset = tonumber(args[2]) or offset elseif cmd == ".angular" or cmd == ".spin" then angular = Vector3.new(tonumber(args[2]) or 0, tonumber(args[3]) or 0, tonumber(args[4]) or 0) elseif cmd == ".toggle" then toggle = not toggle elseif cmd == ".height" then height = tonumber(args[2]) or height elseif cmd == ".rainbow" then rainbow = args[2] == "on" elseif cmd == ".reset" then followTarget = chr for _, v in pairs(mov) do v.Parent = chr.Head; v.Position = Vector3.new(0,0,0) end elseif cmd == ".spread" then spread = tonumber(args[2]) or spread elseif cmd == ".randommode" then randomModeActive = true spawn(function() while randomModeActive do mode = math.random(1, 11) print("Random mode switched to:", mode) wait(0.5) end end) elseif cmd == ".stoprandom" then randomModeActive = false print("Random mode deactivated") end end) end; task.spawn(C_2); return G2L["1"], require;