
KeylessUniversal

--[[
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;



Client sided