local ScreenGui = Instance.new("ScreenGui")
local MainFrame = Instance.new("Frame")
local UICorner = Instance.new("UICorner")
local TopBar = Instance.new("Frame")
local TopBarCorner = Instance.new("UICorner")
local Title = Instance.new("TextLabel")
local CloseButton = Instance.new("TextButton")
local ExecuteButton = Instance.new("TextButton")
local UnflingButton = Instance.new("TextButton")
local UsernameBox = Instance.new("TextBox")
local ButtonCorner = Instance.new("UICorner")
local AntiFlingButton = Instance.new("TextButton")
local SilentFlingButton = Instance.new("TextButton")

local TitleText = Instance.new("TextLabel")
TitleText.Size = UDim2.new(0, 300, 0, 50)
TitleText.Position = UDim2.new(0.5, -150, 0.6, 0)
TitleText.BackgroundTransparency = 1
TitleText.Font = Enum.Font.GothamBold
TitleText.Text = "Troll UI"
TitleText.TextColor3 = Color3.fromRGB(255, 90, 0)
TitleText.TextSize = 48
TitleText.ZIndex = 11
TitleText.Parent = LoadingFrame

spawn(function()
    wait(2)
    local TweenService = game:GetService("TweenService")
    local fadeInfo = TweenInfo.new(1, Enum.EasingStyle.Linear)
    
    local fadeOut = TweenService:Create(LoadingFrame, fadeInfo, {BackgroundTransparency = 1})
    local imageOut = TweenService:Create(ClownImage, fadeInfo, {ImageTransparency = 1})
    local textOut = TweenService:Create(TitleText, fadeInfo, {TextTransparency = 1})
    
    fadeOut:Play()
    imageOut:Play()
    textOut:Play()
    
    wait(1)
    LoadingFrame:Destroy()
end)


local HugButton = Instance.new("TextButton")
HugButton.Name = "HugButton"
HugButton.Parent = MainFrame
HugButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
HugButton.Position = UDim2.new(0.5, -155, 0.9, 0)
HugButton.Size = UDim2.new(0, 70, 0, 30)
HugButton.Font = Enum.Font.GothamBold
HugButton.Text = "Hug (H)"
HugButton.TextColor3 = Color3.fromRGB(255, 255, 255)
HugButton.TextSize = 14

local hugEnabled = false

HugButton.MouseButton1Click:Connect(function()
    hugEnabled = not hugEnabled
    HugButton.BackgroundColor3 = hugEnabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(0, 255, 0)
    
    if hugEnabled then
        loadstring(game:HttpGet("https://[Log in to view URL]"))()
    end
end)

AntiFlingButton.Name = "AntiFlingButton"
AntiFlingButton.Parent = MainFrame
AntiFlingButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
AntiFlingButton.Position = UDim2.new(0.5, -75, 0.9, 0)
AntiFlingButton.Size = UDim2.new(0, 70, 0, 30)
AntiFlingButton.Font = Enum.Font.GothamBold
AntiFlingButton.Text = "Anti-Fling"
AntiFlingButton.TextColor3 = Color3.fromRGB(255, 255, 255)
AntiFlingButton.TextSize = 14

local ChatBypassButton = Instance.new("TextButton")
ChatBypassButton.Name = "ChatBypassButton"
ChatBypassButton.Parent = MainFrame
ChatBypassButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
ChatBypassButton.Position = UDim2.new(0.5, 85, 0.9, 0)
ChatBypassButton.Size = UDim2.new(0, 85, 0, 30)
ChatBypassButton.Font = Enum.Font.GothamBold
ChatBypassButton.Text = "ChatBypass"
ChatBypassButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ChatBypassButton.TextSize = 14

local bypassEnabled = false

ChatBypassButton.MouseButton1Click:Connect(function()
    bypassEnabled = not bypassEnabled
    ChatBypassButton.BackgroundColor3 = bypassEnabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(0, 255, 0)
    
    if bypassEnabled then
        loadstring(game:HttpGet("https://[Log in to view URL]"))()
    end
end)

local PHText = Instance.new("TextLabel")
PHText.Parent = MainFrame
PHText.Size = UDim2.new(1, 0, 1, 0)
PHText.Position = UDim2.new(-0.1, -0, -0.1, 0)
PHText.BackgroundTransparency = 1
PHText.Text = "PHP"
PHText.TextColor3 = Color3.fromRGB(50, 50, 50)  -- Darker shade for subtle look
PHText.TextSize = 120  -- Big size for background effect
PHText.Font = Enum.Font.GothamBold
PHText.ZIndex = 0  -- Places it behind other UI elements

-- Optional: Add rotation for style
PHText.Rotation = 15


local JorkButton = Instance.new("TextButton")
JorkButton.Name = "JorkButton"
JorkButton.Parent = MainFrame
JorkButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
JorkButton.Position = UDim2.new(0.5, -235, 0.7, 0) -- Positioned left of Unfling
JorkButton.Size = UDim2.new(0, 150, 0, 40)
JorkButton.Font = Enum.Font.GothamBold
JorkButton.Text = "Jork"
JorkButton.TextColor3 = Color3.fromRGB(255, 255, 255)
JorkButton.TextSize = 16

-- Add corner to match other buttons
local ButtonCorner4 = ButtonCorner:Clone()
ButtonCorner4.Parent = JorkButton

-- Add click functionality
JorkButton.MouseButton1Click:Connect(function()
    loadstring(game:HttpGet("https://[Log in to view URL]"))()
end)


local antiFlingToggle = {
    CurrentValue = false,
    Flag = "AntiFlingToggle",
    Callback = function(Value)
        if Value then
            AntiFlingButton.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
            loadstring(game:HttpGet("https://[Log in to view URL]"))()
        else
            AntiFlingButton.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
            getgenv().AntiFlingEnabled = false
        end
    end
}

AntiFlingButton.MouseButton1Click:Connect(function()
    antiFlingToggle.CurrentValue = not antiFlingToggle.CurrentValue
    antiFlingToggle.Callback(antiFlingToggle.CurrentValue)
end)

--ADD HERE

local FlingAllButton = Instance.new("TextButton")
FlingAllButton.Name = "FlingAllButton"
FlingAllButton.Parent = MainFrame
FlingAllButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
FlingAllButton.Position = UDim2.new(0.5, 5, 0.9, 0)
FlingAllButton.Size = UDim2.new(0, 70, 0, 30)
FlingAllButton.Font = Enum.Font.GothamBold
FlingAllButton.Text = "Fling All"
FlingAllButton.TextColor3 = Color3.fromRGB(255, 255, 255)
FlingAllButton.TextSize = 14

local isFlingingEnabled = false

FlingAllButton.MouseButton1Click:Connect(function()
    isFlingingEnabled = not isFlingingEnabled
    FlingAllButton.BackgroundColor3 = isFlingingEnabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 90, 0)
    
    if not isFlingingEnabled then
        local Players = game:GetService("Players")
        local Player = Players.LocalPlayer
        if Player.Character and Player.Character:FindFirstChildOfClass("Humanoid") then
            workspace.CurrentCamera.CameraSubject = Player.Character:FindFirstChildOfClass("Humanoid")
            Player.Character:BreakJoints()
        end
        return
    end


    local Targets = {"All"}
    local Players = game:GetService("Players")
    local Player = Players.LocalPlayer
    local AllBool = true
    local SPIN_SPEED = 250

    local function IsVRPlayer(character)
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        return humanoid and humanoid.RigType == Enum.HumanoidRigType.R15
    end

    local function IsPlayerSitting(character)
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        return humanoid and humanoid.Sit
    end

    local function HasBeenFlung(character)
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        local rootPart = humanoid and humanoid.RootPart
        return rootPart and rootPart.Velocity.Magnitude > 500
    end

    local function SkidFling(TargetPlayer)
        if not isFlingingEnabled then return end
        if IsPlayerSitting(TargetPlayer.Character) then
            return true
        end

        if not HasBeenFlung(TargetPlayer.Character) and TargetPlayer.Character and TargetPlayer.Character:FindFirstChildOfClass("Humanoid") then
            workspace.CurrentCamera.CameraSubject = TargetPlayer.Character:FindFirstChildOfClass("Humanoid")
        end
        
        local Character = Player.Character
        local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid")
        local RootPart = Humanoid and Humanoid.RootPart

        local TCharacter = TargetPlayer.Character
        local THumanoid = TCharacter:FindFirstChildOfClass("Humanoid")
        local TRootPart = THumanoid and THumanoid.RootPart

        if Character and Humanoid and RootPart then
            getgenv().OldPos = RootPart.CFrame
            
            local FPos = function(BasePart, Pos, Ang)
                if not isFlingingEnabled then return end
                local TargetCore = BasePart.Position
                local OffsetDistance = 1
                
                if IsVRPlayer(TCharacter) then
                    TargetCore = BasePart.Position + Vector3.new(0, 2, 0)
                end
                
                local SpinPosition = Vector3.new(
                    TargetCore.X + math.cos(math.rad(Ang)) * OffsetDistance,
                    TargetCore.Y,
                    TargetCore.Z + math.sin(math.rad(Ang)) * OffsetDistance
                )
                
                RootPart.CFrame = CFrame.new(SpinPosition) * CFrame.Angles(0, math.rad(Ang), 0)
                Character:SetPrimaryPartCFrame(CFrame.new(SpinPosition) * CFrame.Angles(0, math.rad(Ang), 0))
                RootPart.Velocity = Vector3.new(9e9, 9e9 * 15, 9e9)
                RootPart.RotVelocity = Vector3.new(0, 9e9, 0)
            end
            
            local attempts = 0
            local maxAttempts = 10
            
            local function AttemptFling(BasePart)
                if not isFlingingEnabled then return end
                local TimeToWait = 1.5
                local Time = tick()
                local Angle = 0
                
                repeat
                    if RootPart and THumanoid then
                        Angle = Angle + SPIN_SPEED
                        FPos(BasePart, CFrame.new(0, 0, 0), Angle)
                        task.wait(0.01)
                        
                        if IsPlayerSitting(TCharacter) then
                            return true
                        end
                    end
                until HasBeenFlung(TCharacter) or tick() > Time + TimeToWait or not isFlingingEnabled
                
                return HasBeenFlung(TCharacter)
            end
            
            workspace.FallenPartsDestroyHeight = 0/0
            
            local BV = Instance.new("BodyVelocity")
            BV.Parent = RootPart
            BV.Velocity = Vector3.new(9e9, 9e9, 9e9)
            BV.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
            
            repeat
                if TRootPart and isFlingingEnabled then
                    local success = AttemptFling(TRootPart)
                    if success then break end
                end
                attempts = attempts + 1
                task.wait(0.1)
            until attempts >= maxAttempts or IsPlayerSitting(TCharacter) or not isFlingingEnabled
            
            BV:Destroy()
            
            RootPart.CFrame = getgenv().OldPos
            Character:SetPrimaryPartCFrame(getgenv().OldPos)
            
            return HasBeenFlung(TCharacter)
        end
    end

    local function FlingAllPlayers()
        if not isFlingingEnabled then return end
        local PlayerList = Players:GetPlayers()
        for _, Target in pairs(PlayerList) do
            if Target ~= Player then
                local success = false
                repeat
                    if not isFlingingEnabled then return end
                    success = SkidFling(Target)
                    task.wait(0.1)
                until success or IsPlayerSitting(Target.Character) or not isFlingingEnabled
            end
        end
        workspace.CurrentCamera.CameraSubject = Player.Character:FindFirstChildOfClass("Humanoid")
    end

    spawn(function()
        while isFlingingEnabled do
            if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character.Humanoid.Health > 0 then
                FlingAllPlayers()
            end
            task.wait(0.9)
        end
    end)
end)


ScreenGui.Name = "FlingUI"
ScreenGui.Parent = game:GetService("CoreGui")
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

MainFrame.Name = "MainFrame"
MainFrame.Parent = ScreenGui
MainFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 10)
MainFrame.Position = UDim2.new(0.5, -125, 0.5, -100)
MainFrame.Size = UDim2.new(0, 700, 0.1, 300)
MainFrame.Active = true
MainFrame.Draggable = true

UICorner.Parent = MainFrame
UICorner.CornerRadius = UDim.new(0, 6)

local TweenService = game:GetService("TweenService")

-- Create UIStroke if it doesn't exist
local UIStroke = Instance.new("UIStroke")
UIStroke.Thickness = 5
UIStroke.Parent = MainFrame

local colors = {
    Color3.fromRGB(0, 0, 0),      -- Black
    Color3.fromRGB(128, 128, 128), -- Gray
    Color3.fromRGB(255, 90, 0)     -- Orange
}

local function animateOutline()
    while true do
        for i, color in ipairs(colors) do
            local info = TweenInfo.new(0.5, Enum.EasingStyle.Linear)
            local tween = TweenService:Create(UIStroke, info, {Color = color})
            tween:Play()
            wait(0.5)
        end
    end
end

spawn(animateOutline)


TopBar.Name = "TopBar"
TopBar.Parent = MainFrame
TopBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
TopBar.Size = UDim2.new(1, 0, 0, 30)

TopBarCorner.Parent = TopBar
TopBarCorner.CornerRadius = UDim.new(0, 6)

Title.Name = "Title"
Title.Parent = TopBar
Title.BackgroundTransparency = 1
Title.Position = UDim2.new(0, 10, 0, 0)
Title.Size = UDim2.new(1, -40, 1, 0)
Title.Font = Enum.Font.GothamBold
Title.Text = "Troll UI by PornHub Production"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 14
Title.TextXAlignment = Enum.TextXAlignment.Left

local MinimizeButton = Instance.new("TextButton")
MinimizeButton.Name = "MinimizeButton"
MinimizeButton.Parent = MainFrame
MinimizeButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
MinimizeButton.Position = UDim2.new(1, -50, 0, 2)
MinimizeButton.Size = UDim2.new(0, 25, 0, 25)
MinimizeButton.Font = Enum.Font.GothamBold
MinimizeButton.Text = "-"
MinimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
MinimizeButton.TextSize = 30
MinimizeButton.AutoButtonColor = false

local minimized = false
MinimizeButton.MouseButton1Click:Connect(function()
    minimized = not minimized
    if minimized then
        MainFrame.Size = UDim2.new(0, 600, 0, 35)
        for _, obj in pairs(MainFrame:GetChildren()) do
            if (obj:IsA("TextButton") or obj:IsA("TextBox")) and obj ~= MinimizeButton and obj ~= CloseButton then
                obj.Visible = false
            end
        end
    else
        MainFrame.Size = UDim2.new(0, 600, 0, 400)
        for _, obj in pairs(MainFrame:GetChildren()) do
            if obj:IsA("TextButton") or obj:IsA("TextBox") then
                obj.Visible = true
            end
        end
    end
end)


CloseButton.Name = "CloseButton"
CloseButton.Parent = TopBar
CloseButton.BackgroundTransparency = 1
CloseButton.Position = UDim2.new(1, -25, 0, 5)
CloseButton.Size = UDim2.new(0, 20, 0, 20)
CloseButton.Font = Enum.Font.GothamBold
CloseButton.Text = "X"
CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseButton.TextSize = 14

UsernameBox.Name = "UsernameBox"
UsernameBox.Parent = MainFrame
UsernameBox.BackgroundColor3 = Color3.fromRGB(250, 90, 0)
UsernameBox.Position = UDim2.new(0.5, -75, 0.3, 0)
UsernameBox.Size = UDim2.new(0, 150, 0, 30)
UsernameBox.Font = Enum.Font.GothamBold
UsernameBox.PlaceholderText = "Enter Username"
UsernameBox.Text = ""
UsernameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameBox.TextSize = 14

ExecuteButton.Name = "ExecuteButton"
ExecuteButton.Parent = MainFrame
ExecuteButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
ExecuteButton.Position = UDim2.new(0.5, -75, 0.5, 0)
ExecuteButton.Size = UDim2.new(0, 150, 0, 40)
ExecuteButton.Font = Enum.Font.GothamBold
ExecuteButton.Text = "Fling"
ExecuteButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ExecuteButton.TextSize = 16

local walkflinging = false
local WalkFlingButton = Instance.new("TextButton")
WalkFlingButton.Name = "WalkFlingButton"
WalkFlingButton.Parent = MainFrame
WalkFlingButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
WalkFlingButton.Position = UDim2.new(0.5, 84, 0.5, 0)  
WalkFlingButton.Size = UDim2.new(0, 150, 0, 40)
WalkFlingButton.Font = Enum.Font.GothamBold
WalkFlingButton.Text = "Walk Fling"
WalkFlingButton.TextColor3 = Color3.fromRGB(255, 255, 255)
WalkFlingButton.TextSize = 16

local ButtonCorner5 = ButtonCorner:Clone()
ButtonCorner5.Parent = WalkFlingButton

local walkflinging = false
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer

local function startWalkFling(char)
    local Root = char:WaitForChild("HumanoidRootPart")
    local Humanoid = char:WaitForChild("Humanoid")
    
    Humanoid:SetStateEnabled(Enum.HumanoidStateType.Dead, false)
    Humanoid.BreakJointsOnDeath = false
    
    game:GetService("RunService").Stepped:Connect(function()
        if walkflinging then
            Humanoid.Health = math.huge
            Humanoid.MaxHealth = math.huge
        end
    end)
    
    Root.CanCollide = false
    Humanoid:ChangeState(11)
    
    spawn(function()
        while walkflinging and Root and Root.Parent do
            RunService.Heartbeat:Wait()
            local vel = Root.Velocity
            Root.Velocity = vel * 99999999 + Vector3.new(0, 99999999, 0)
            RunService.RenderStepped:Wait()
            Root.Velocity = vel
            RunService.Stepped:Wait()
            Root.Velocity = vel + Vector3.new(0, 0.1, 0)
        end
    end)
end

WalkFlingButton.MouseButton1Click:Connect(function()
    walkflinging = not walkflinging
    WalkFlingButton.BackgroundColor3 = walkflinging and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 90, 0)
    
    if walkflinging then
        if LocalPlayer.Character then
            startWalkFling(LocalPlayer.Character)
        end
    end
end)

LocalPlayer.CharacterAdded:Connect(function(char)
    if walkflinging then
        startWalkFling(char)
    end
end)

local NoCollideButton = Instance.new("TextButton")
NoCollideButton.Name = "NoCollideButton"
NoCollideButton.Parent = MainFrame
NoCollideButton.BackgroundColor3 = Color3.fromRGB(255, 90, 0)
NoCollideButton.Position = UDim2.new(0.5, 85, 0.7, 0)
NoCollideButton.Size = UDim2.new(0, 150, 0, 40)
NoCollideButton.Font = Enum.Font.GothamBold
NoCollideButton.Text = "No Collide"
NoCollideButton.TextColor3 = Color3.fromRGB(255, 255, 255)
NoCollideButton.TextSize = 16

local ButtonCorner6 = ButtonCorner:Clone()
ButtonCorner6.Parent = NoCollideButton

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local noCollideEnabled = false
local connection

local function restoreCollisions()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character then
            for _, part in pairs(player.Character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = true
                    part.CustomPhysicalProperties = PhysicalProperties.new(0.7, 0.3, 0.5)
                end
            end
        end
    end
end

NoCollideButton.MouseButton1Click:Connect(function()
    noCollideEnabled = not noCollideEnabled
    NoCollideButton.BackgroundColor3 = noCollideEnabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 90, 0)
    
    if connection then connection:Disconnect() end
    
    if noCollideEnabled then
        connection = RunService.Heartbeat:Connect(function()
            for _, player in pairs(Players:GetPlayers()) do
                if player ~= LocalPlayer and player.Character then
                    for _, part in pairs(player.Character:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanCollide = false
                            part.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
                        end
                    end
                end
            end
        end)
    else
        restoreCollisions()
    end
end)


UnflingButton.Name = "UnflingButton"
UnflingButton.Parent = MainFrame
UnflingButton.BackgroundColor3 = Color3.fromRGB(255, 90 ,0 )
UnflingButton.Position = UDim2.new(0.5, -75, 0.7, 0)
UnflingButton.Size = UDim2.new(0, 150, 0, 40)
UnflingButton.Font = Enum.Font.GothamBold
UnflingButton.Text = "Unfling"
UnflingButton.TextColor3 = Color3.fromRGB(255, 255, 255)
UnflingButton.TextSize = 16


ButtonCorner.Parent = ExecuteButton
ButtonCorner.CornerRadius = UDim.new(0, 6)

local ButtonCorner2 = ButtonCorner:Clone()
ButtonCorner2.Parent = UnflingButton

local ButtonCorner3 = ButtonCorner:Clone()
ButtonCorner3.Parent = UsernameBox

-- Variables for fling control
local isFlingEnabled = false
local flingLoop = nil

-- Button functionality
CloseButton.MouseButton1Click:Connect(function()
    if flingLoop then
        flingLoop:Disconnect()
    end
    ScreenGui:Destroy()
end)

ExecuteButton.MouseButton1Click:Connect(function()
    if not isFlingEnabled then
        isFlingEnabled = true
        
        flingLoop = game:GetService("RunService").Heartbeat:Connect(function()
            local targetUsername = UsernameBox.Text
            if targetUsername ~= "" then
                local Players = game:GetService("Players")
                local Player = Players.LocalPlayer

                local GetPlayer = function(Name)
                    Name = Name:lower()
                    for _, x in next, Players:GetPlayers() do
                        if x ~= Player then
                            if x.Name:lower():match("^"..Name) then
                                return x
                            elseif x.DisplayName:lower():match("^"..Name) then
                                return x
                            end
                        end
                    end
                    return nil
                end

                local Message = function(_Title, _Text, Time)
                    game:GetService("StarterGui"):SetCore("SendNotification", {Title = _Title, Text = _Text, Duration = Time})
                end

                local SkidFling = function(TargetPlayer)
                    local Character = Player.Character
                    local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid")
                    local RootPart = Humanoid and Humanoid.RootPart

                    local TCharacter = TargetPlayer.Character
                    local THumanoid
                    local TRootPart
                    local THead
                    local Accessory
                    local Handle

                    if TCharacter:FindFirstChildOfClass("Humanoid") then
                        THumanoid = TCharacter:FindFirstChildOfClass("Humanoid")
                    end
                    if THumanoid and THumanoid.RootPart then
                        TRootPart = THumanoid.RootPart
                    end
                    if TCharacter:FindFirstChild("Head") then
                        THead = TCharacter.Head
                    end
                    if TCharacter:FindFirstChildOfClass("Accessory") then
                        Accessory = TCharacter:FindFirstChildOfClass("Accessory")
                    end
                    if Accessory and Accessory:FindFirstChild("Handle") then
                        Handle = Accessory.Handle
                    end

                    if Character and Humanoid and RootPart then
                        if RootPart.Velocity.Magnitude < 50 then
                            getgenv().OldPos = RootPart.CFrame
                        end
                        if THumanoid and THumanoid.Sit then
                            return Message("Error Occurred", "Target is sitting", 100)
                        end
                        if THead then
                            workspace.CurrentCamera.CameraSubject = THead
                        elseif not THead and Handle then
                            workspace.CurrentCamera.CameraSubject = Handle
                        elseif THumanoid and TRootPart then
                            workspace.CurrentCamera.CameraSubject = THumanoid
                        end
                        if not TCharacter:FindFirstChildWhichIsA("BasePart") then
                            return
                        end
                        
                        local FPos = function(BasePart, Pos, Ang)
                            RootPart.CFrame = CFrame.new(BasePart.Position) * Pos * Ang
                            Character:SetPrimaryPartCFrame(CFrame.new(BasePart.Position) * Pos * Ang)
                            RootPart.Velocity = Vector3.new(9e7, 9e7 * 10, 9e7)
                            RootPart.RotVelocity = Vector3.new(9e8, 9e8, 9e8)
                        end
                        
                        local SFBasePart = function(BasePart)
                            local TimeToWait = 2
                            local Time = tick()
                            local Angle = 0

                            repeat
                                if RootPart and THumanoid then
                                    if BasePart.Velocity.Magnitude < 50 then
                                        Angle = Angle + 100

                                        FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle),0 ,0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(2.25, 1.5, -2.25) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(-2.25, -1.5, 2.25) + THumanoid.MoveDirection * BasePart.Velocity.Magnitude / 1.25, CFrame.Angles(math.rad(Angle), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, 1.5, 0) + THumanoid.MoveDirection,CFrame.Angles(math.rad(Angle), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, 0) + THumanoid.MoveDirection,CFrame.Angles(math.rad(Angle), 0, 0))
                                        task.wait()
                                    else
                                        FPos(BasePart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, -THumanoid.WalkSpeed), CFrame.Angles(0, 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, 1.5, THumanoid.WalkSpeed), CFrame.Angles(math.rad(90), 0, 0))
                                        task.wait()
                                        
                                        FPos(BasePart, CFrame.new(0, 1.5, TRootPart.Velocity.Magnitude / 1.25), CFrame.Angles(math.rad(90), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, -TRootPart.Velocity.Magnitude / 1.25), CFrame.Angles(0, 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, 1.5, TRootPart.Velocity.Magnitude / 1.25), CFrame.Angles(math.rad(90), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(math.rad(90), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(0, 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5 ,0), CFrame.Angles(math.rad(-90), 0, 0))
                                        task.wait()

                                        FPos(BasePart, CFrame.new(0, -1.5, 0), CFrame.Angles(0, 0, 0))
                                        task.wait()
                                    end
                                else
                                    break
                                end
                            until BasePart.Velocity.Magnitude > 500 or BasePart.Parent ~= TargetPlayer.Character or TargetPlayer.Parent ~= Players or not TargetPlayer.Character == TCharacter or THumanoid.Sit or Humanoid.Health <= 0 or tick() > Time + TimeToWait
                        end
                        
                        workspace.FallenPartsDestroyHeight = 0/0
                        
                        local BV = Instance.new("BodyVelocity")
                        BV.Name = "EpixVel"
                        BV.Parent = RootPart
                        BV.Velocity = Vector3.new(9e8, 9e8, 9e8)
                        BV.MaxForce = Vector3.new(1/0, 1/0, 1/0)
                        
                        Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
                        
                        if TRootPart and THead then
                            if (TRootPart.CFrame.p - THead.CFrame.p).Magnitude > 5 then
                                SFBasePart(THead)
                            else
                                SFBasePart(TRootPart)
                            end
                        elseif TRootPart and not THead then
                            SFBasePart(TRootPart)
                        elseif not TRootPart and THead then
                            SFBasePart(THead)
                        elseif not TRootPart and not THead and Accessory and Handle then
                            SFBasePart(Handle)
                        else

                        end
                        
                        BV:Destroy()
                        Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, true)
                        workspace.CurrentCamera.CameraSubject = Humanoid
                        
                        repeat
                            RootPart.CFrame = getgenv().OldPos * CFrame.new(0, .5, 0)
                            Character:SetPrimaryPartCFrame(getgenv().OldPos * CFrame.new(0, .5, 0))
                            Humanoid:ChangeState("GettingUp")
                            table.foreach(Character:GetChildren(), function(_, x)
                                if x:IsA("BasePart") then
                                    x.Velocity, x.RotVelocity = Vector3.new(), Vector3.new()
                                end
                            end)
                            task.wait()
                        until (RootPart.Position - getgenv().OldPos.p).Magnitude < 25
                        workspace.FallenPartsDestroyHeight = getgenv().FPDH
                    else
                    end
                end

                local targetPlayer = GetPlayer(targetUsername)
                if targetPlayer then
                    SkidFling(targetPlayer)
                end
            end
        end)
    end
end)

UnflingButton.MouseButton1Click:Connect(function()
    if isFlingEnabled then
        isFlingEnabled = false
        if flingLoop then
            flingLoop:Disconnect()
            flingLoop = nil
        end
        
        local Player = game:GetService("Players").LocalPlayer
        local Character = Player.Character
        if Character and getgenv().OldPos then
            local Humanoid = Character:FindFirstChildOfClass("Humanoid")
            local RootPart = Humanoid and Humanoid.RootPart
            
            if RootPart then
                RootPart.CFrame = getgenv().OldPos
                Character:SetPrimaryPartCFrame(getgenv().OldPos)
                Humanoid:ChangeState("GettingUp")
            end
        end
    end
end)

-- Variables
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character
local RootPart = Character.HumanoidRootPart
local Humanoid = Character.Humanoid

-- Save original position and properties
getgenv().OldPos = RootPart.CFrame
local OldVelocity = RootPart.Velocity

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: