Tornado Player
Key RequiredUniversal

Tornado Player

Universal ScriptXE3_XE3_ 17.5K views 1.1K executesUpdated Apr 26, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•163 lines (4609 chars)
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)

Features & Information

THIS IS NOT A FLING SCRIPT --- Gui with players list ---Select and unselect victim ---And spin as some crazy mf around the player
#troll#animation#spin

Community Comments (3)

DevyVaneDevyVaneMay 14, 2025

Not a script kiddy but I will put your script in my hub.

DevyVaneDevyVaneMay 14, 2025

Nvm

kajgorodovartiomkajgorodovartiomJun 26, 2025

just default orbit from infinite yield

More Scripts for Universal Scripts