
KeylessUniversal

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = PlayerGui
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 300, 0, 400)
mainFrame.Position = UDim2.new(0, 50, 0, 50)
mainFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
mainFrame.Parent = screenGui
mainFrame.Active = true
mainFrame.Draggable = true
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 50)
title.BackgroundTransparency = 1
title.Text = "Tornado Player"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.SourceSansBold
title.TextSize = 30
title.Parent = mainFrame
local scrollingFrame = Instance.new("ScrollingFrame")
scrollingFrame.Size = UDim2.new(1, 0, 1, -50)
scrollingFrame.Position = UDim2.new(0, 0, 0, 50)
scrollingFrame.CanvasSize = UDim2.new(0, 0, 2, 0)
scrollingFrame.ScrollBarThickness = 8
scrollingFrame.BackgroundTransparency = 0.2
scrollingFrame.BackgroundColor3 = Color3.fromRGB(30,30,30)
scrollingFrame.Parent = mainFrame
local UIListLayout = Instance.new("UIListLayout")
UIListLayout.Parent = scrollingFrame
UIListLayout.Padding = UDim.new(0,5)
local activePlayer = nil
local tornadoPlate = nil
local spinning = false
local spinConnection = nil
local function createPlate(targetPlayer)
if tornadoPlate then
tornadoPlate:Destroy()
tornadoPlate = nil
end
local plate = Instance.new("Part")
plate.Size = Vector3.new(10, 1, 10)
plate.Anchored = true
plate.Transparency = 1
plate.CanCollide = true
plate.Parent = workspace
tornadoPlate = plate
return plate
end
local function startSpinning(targetPlayer)
if not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
return
end
local root = targetPlayer.Character.HumanoidRootPart
local angle = 0
spinning = true
spinConnection = game:GetService("RunService").Heartbeat:Connect(function(dt)
if tornadoPlate and root and root.Parent then
tornadoPlate.CFrame = root.CFrame * CFrame.new(0,5,0)
angle += dt * 2
local radius = 6
local offset = Vector3.new(math.cos(angle) * radius, 0, math.sin(angle) * radius)
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(tornadoPlate.Position + offset) * CFrame.Angles(0, math.rad(-math.deg(angle) + 90), 0)
end
end
end)
end
local function stopSpinning()
spinning = false
if spinConnection then
spinConnection:Disconnect()
spinConnection = nil
end
if tornadoPlate then
tornadoPlate:Destroy()
tornadoPlate = nil
end
end
local function createPlayerButton(player)
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, -10, 0, 50)
button.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
button.TextColor3 = Color3.fromRGB(255, 255, 255)
button.Text = player.DisplayName
button.Font = Enum.Font.SourceSans
button.TextSize = 24
button.Parent = scrollingFrame
button.MouseButton1Click:Connect(function()
if activePlayer == player then
button.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
activePlayer = nil
stopSpinning()
else
for _, otherButton in ipairs(scrollingFrame:GetChildren()) do
if otherButton:IsA("TextButton") then
otherButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
end
end
activePlayer = player
button.BackgroundColor3 = Color3.fromRGB(0,0,0)
stopSpinning()
createPlate(player)
startSpinning(player)
end
end)
end
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
createPlayerButton(player)
end
end
Players.PlayerAdded:Connect(function(player)
if player ~= LocalPlayer then
createPlayerButton(player)
end
end)
Players.PlayerRemoving:Connect(function(player)
for _, button in ipairs(scrollingFrame:GetChildren()) do
if button:IsA("TextButton") and button.Text == player.DisplayName then
button:Destroy()
end
end
if activePlayer == player then
stopSpinning()
activePlayer = nil
end
end)



Not a script kiddy but I will put your script in my hub.
Nvm
just default orbit from infinite yield