Target Fling
Key RequiredUniversal

Target Fling

Universal ScriptRubixScriptingsRubixScriptings 622 views 606 executesUpdated Jun 30, 2026
Unrated
00
Lua Script•735 lines (23828 chars)
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

-- Destroy old UI if it exists
if CoreGui:FindFirstChild("TargetFlingUI") then
    CoreGui.TargetFlingUI:Destroy()
end

-- Modern Theme Configurations
local themes = {
    Blue = {
        Main = Color3.fromRGB(25, 25, 35),
        Accent = Color3.fromRGB(35, 90, 190),
        Selected = Color3.fromRGB(50, 120, 220),
        SubBg = Color3.fromRGB(35, 35, 45),
        Text = Color3.fromRGB(240, 240, 245),
        Stroke = Color3.fromRGB(60, 60, 75)
    },
    Red = {
        Main = Color3.fromRGB(40, 25, 25),
        Accent = Color3.fromRGB(190, 35, 35),
        Selected = Color3.fromRGB(220, 50, 50),
        SubBg = Color3.fromRGB(50, 30, 30),
        Text = Color3.fromRGB(245, 240, 240),
        Stroke = Color3.fromRGB(80, 50, 50)
    },
    Green = {
        Main = Color3.fromRGB(25, 40, 25),
        Accent = Color3.fromRGB(35, 190, 35),
        Selected = Color3.fromRGB(50, 220, 50),
        SubBg = Color3.fromRGB(30, 50, 30),
        Text = Color3.fromRGB(240, 245, 240),
        Stroke = Color3.fromRGB(50, 80, 50)
    },
    Purple = {
        Main = Color3.fromRGB(35, 25, 45),
        Accent = Color3.fromRGB(120, 50, 200),
        Selected = Color3.fromRGB(145, 70, 230),
        SubBg = Color3.fromRGB(45, 35, 55),
        Text = Color3.fromRGB(245, 240, 250),
        Stroke = Color3.fromRGB(75, 60, 85)
    },
    Orange = {
        Main = Color3.fromRGB(45, 30, 20),
        Accent = Color3.fromRGB(220, 120, 30),
        Selected = Color3.fromRGB(245, 145, 50),
        SubBg = Color3.fromRGB(55, 40, 30),
        Text = Color3.fromRGB(250, 245, 240),
        Stroke = Color3.fromRGB(85, 65, 45)
    },
    Monochrome = {
        Main = Color3.fromRGB(30, 30, 30),
        Accent = Color3.fromRGB(90, 90, 90),
        Selected = Color3.fromRGB(120, 120, 120),
        SubBg = Color3.fromRGB(40, 40, 40),
        Text = Color3.fromRGB(255, 255, 255),
        Stroke = Color3.fromRGB(60, 60, 60)
    }
}
local themeNames = {"Blue", "Red", "Green", "Purple", "Orange", "Monochrome"}
local currentThemeIndex = 1

-- GUI Setup
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "TargetFlingUI"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = CoreGui

local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 350, 0, 450)
MainFrame.Position = UDim2.new(0.5, -175, 0.5, -225)
MainFrame.BackgroundColor3 = themes.Blue.Main
MainFrame.BackgroundTransparency = 0.1
MainFrame.BorderSizePixel = 0
MainFrame.Parent = ScreenGui

local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 10)
UICorner.Parent = MainFrame

local UIStroke = Instance.new("UIStroke")
UIStroke.Color = themes.Blue.Stroke
UIStroke.Thickness = 1
UIStroke.Transparency = 0.2
UIStroke.Parent = MainFrame

local UIGradient = Instance.new("UIGradient")
UIGradient.Rotation = 45
UIGradient.Color = ColorSequence.new(themes.Blue.Main, themes.Blue.SubBg)
UIGradient.Transparency = NumberSequence.new(0.1, 0.2)
UIGradient.Parent = MainFrame

-- Make GUI Draggable
local dragToggle, dragInput, dragStart, startPos

MainFrame.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragToggle = true
        dragStart = input.Position
        startPos = MainFrame.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragToggle = false
            end
        end)
    end
end)

MainFrame.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragToggle then
        local delta = input.Position - dragStart
        MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)

-- Header
local HeaderFrame = Instance.new("Frame")
HeaderFrame.Size = UDim2.new(1, 0, 0, 45)
HeaderFrame.BackgroundTransparency = 1
HeaderFrame.Parent = MainFrame

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -160, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "Target fling"
Title.TextColor3 = themes.Blue.Text
Title.TextSize = 18
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = HeaderFrame

-- Theme Button (T)
local ThemeBtn = Instance.new("TextButton")
ThemeBtn.Size = UDim2.new(0, 30, 0, 30)
ThemeBtn.Position = UDim2.new(1, -145, 0.5, -15)
ThemeBtn.BackgroundColor3 = themes.Blue.Accent
ThemeBtn.BackgroundTransparency = 0.1
ThemeBtn.Text = "T"
ThemeBtn.TextColor3 = themes.Blue.Text
ThemeBtn.TextSize = 14
ThemeBtn.Font = Enum.Font.GothamBold
ThemeBtn.Parent = HeaderFrame

local UICorner_Theme = Instance.new("UICorner")
UICorner_Theme.CornerRadius = UDim.new(0, 8)
UICorner_Theme.Parent = ThemeBtn

-- Refresh Button (R)
local RefreshBtn = Instance.new("TextButton")
RefreshBtn.Size = UDim2.new(0, 30, 0, 30)
RefreshBtn.Position = UDim2.new(1, -110, 0.5, -15)
RefreshBtn.BackgroundColor3 = themes.Blue.Accent
RefreshBtn.BackgroundTransparency = 0.1
RefreshBtn.Text = "R"
RefreshBtn.TextColor3 = themes.Blue.Text
RefreshBtn.TextSize = 14
RefreshBtn.Font = Enum.Font.GothamBold
RefreshBtn.Parent = HeaderFrame

local UICorner_Refresh = Instance.new("UICorner")
UICorner_Refresh.CornerRadius = UDim.new(0, 8)
UICorner_Refresh.Parent = RefreshBtn

-- Info Button (?)
local InfoBtn = Instance.new("TextButton")
InfoBtn.Size = UDim2.new(0, 30, 0, 30)
InfoBtn.Position = UDim2.new(1, -75, 0.5, -15)
InfoBtn.BackgroundColor3 = themes.Blue.Accent
InfoBtn.BackgroundTransparency = 0.1
InfoBtn.Text = "?"
InfoBtn.TextColor3 = themes.Blue.Text
InfoBtn.TextSize = 14
InfoBtn.Font = Enum.Font.GothamBold
InfoBtn.Parent = HeaderFrame

local UICorner_Info = Instance.new("UICorner")
UICorner_Info.CornerRadius = UDim.new(0, 8)
UICorner_Info.Parent = InfoBtn

-- Close Button (X)
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 30, 0, 30)
CloseBtn.Position = UDim2.new(1, -40, 0.5, -15)
CloseBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
CloseBtn.BackgroundTransparency = 0.1
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.TextSize = 14
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.Parent = HeaderFrame

local UICorner_Close = Instance.new("UICorner")
UICorner_Close.CornerRadius = UDim.new(0, 8)
UICorner_Close.Parent = CloseBtn

CloseBtn.MouseButton1Click:Connect(function()
    ScreenGui:Destroy()
end)

-- Info Panel (About)
local InfoPanel = Instance.new("Frame")
InfoPanel.Size = UDim2.new(1, 0, 1, 0)
InfoPanel.BackgroundColor3 = themes.Blue.Main
InfoPanel.BackgroundTransparency = 0.05
InfoPanel.BorderSizePixel = 0
InfoPanel.Visible = false
InfoPanel.ZIndex = 10
InfoPanel.Parent = MainFrame

local UICorner_InfoPanel = Instance.new("UICorner")
UICorner_InfoPanel.CornerRadius = UDim.new(0, 10)
UICorner_InfoPanel.Parent = InfoPanel

local UIGradient_Info = Instance.new("UIGradient")
UIGradient_Info.Rotation = 45
UIGradient_Info.Color = ColorSequence.new(themes.Blue.Main, themes.Blue.SubBg)
UIGradient_Info.Parent = InfoPanel

local AboutTitle = Instance.new("TextLabel")
AboutTitle.Size = UDim2.new(1, 0, 0, 60)
AboutTitle.Position = UDim2.new(0, 0, 0.3, 0)
AboutTitle.BackgroundTransparency = 1
AboutTitle.Text = "About"
AboutTitle.TextColor3 = themes.Blue.Text
AboutTitle.TextSize = 48
AboutTitle.Font = Enum.Font.GothamBold
AboutTitle.Parent = InfoPanel

local AboutText = Instance.new("TextLabel")
AboutText.Size = UDim2.new(1, -40, 0, 30)
AboutText.Position = UDim2.new(0, 20, 0, 200)
AboutText.BackgroundTransparency = 1
AboutText.Text = "basically a target fling."
AboutText.TextColor3 = themes.Blue.Text
AboutText.TextSize = 16
AboutText.Font = Enum.Font.Gotham
AboutText.Parent = InfoPanel

local InfoCloseBtn = Instance.new("TextButton")
InfoCloseBtn.Size = UDim2.new(0, 100, 0, 35)
InfoCloseBtn.Position = UDim2.new(0.5, -50, 0.8, 0)
InfoCloseBtn.BackgroundColor3 = themes.Blue.Accent
InfoCloseBtn.BackgroundTransparency = 0.1
InfoCloseBtn.Text = "Close"
InfoCloseBtn.TextColor3 = themes.Blue.Text
InfoCloseBtn.TextSize = 14
InfoCloseBtn.Font = Enum.Font.GothamBold
InfoCloseBtn.Parent = InfoPanel

local UICorner_InfoClose = Instance.new("UICorner")
UICorner_InfoClose.CornerRadius = UDim.new(0, 8)
UICorner_InfoClose.Parent = InfoCloseBtn

InfoBtn.MouseButton1Click:Connect(function()
    InfoPanel.Visible = not InfoPanel.Visible
end)

InfoCloseBtn.MouseButton1Click:Connect(function()
    InfoPanel.Visible = false
end)

-- Search Bar
local SearchBox = Instance.new("TextBox")
SearchBox.Size = UDim2.new(1, -30, 0, 35)
SearchBox.Position = UDim2.new(0, 15, 0, 55)
SearchBox.BackgroundColor3 = themes.Blue.SubBg
SearchBox.BackgroundTransparency = 0.1
SearchBox.Text = ""
SearchBox.PlaceholderText = "Search players..."
SearchBox.TextColor3 = themes.Blue.Text
SearchBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150)
SearchBox.TextSize = 14
SearchBox.Font = Enum.Font.Gotham
SearchBox.ClearTextOnFocus = false
SearchBox.Parent = MainFrame

local UICorner_Search = Instance.new("UICorner")
UICorner_Search.CornerRadius = UDim.new(0, 8)
UICorner_Search.Parent = SearchBox

local UIStroke_Search = Instance.new("UIStroke")
UIStroke_Search.Color = themes.Blue.Stroke
UIStroke_Search.Thickness = 1
UIStroke_Search.Transparency = 0.2
UIStroke_Search.Parent = SearchBox

-- Player List Scrolling Frame
local PlayerScroll = Instance.new("ScrollingFrame")
PlayerScroll.Size = UDim2.new(1, -30, 1, -215)
PlayerScroll.Position = UDim2.new(0, 15, 0, 100)
PlayerScroll.BackgroundColor3 = themes.Blue.SubBg
PlayerScroll.BackgroundTransparency = 0.1
PlayerScroll.BorderSizePixel = 0
PlayerScroll.ScrollBarThickness = 4
PlayerScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
PlayerScroll.Parent = MainFrame

local UICorner_Scroll = Instance.new("UICorner")
UICorner_Scroll.CornerRadius = UDim.new(0, 8)
UICorner_Scroll.Parent = PlayerScroll

local UIPadding_Scroll = Instance.new("UIPadding")
UIPadding_Scroll.PaddingTop = UDim.new(0, 8)
UIPadding_Scroll.PaddingBottom = UDim.new(0, 8)
UIPadding_Scroll.PaddingLeft = UDim.new(0, 8)
UIPadding_Scroll.PaddingRight = UDim.new(0, 8)
UIPadding_Scroll.Parent = PlayerScroll

local UIList = Instance.new("UIListLayout")
UIList.SortOrder = Enum.SortOrder.LayoutOrder
UIList.Padding = UDim.new(0, 6)
UIList.Parent = PlayerScroll

-- Select All Button
local SelectAllBtn = Instance.new("TextButton")
SelectAllBtn.Size = UDim2.new(1, -16, 0, 35)
SelectAllBtn.BackgroundColor3 = themes.Blue.Accent
SelectAllBtn.BackgroundTransparency = 0.1
SelectAllBtn.Text = "Select All"
SelectAllBtn.TextColor3 = themes.Blue.Text
SelectAllBtn.TextSize = 14
SelectAllBtn.Font = Enum.Font.GothamBold
SelectAllBtn.LayoutOrder = -1
SelectAllBtn.Parent = PlayerScroll

local UICorner_SelectAll = Instance.new("UICorner")
UICorner_SelectAll.CornerRadius = UDim.new(0, 6)
UICorner_SelectAll.Parent = SelectAllBtn

-- Status Label
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Size = UDim2.new(1, -30, 0, 20)
StatusLabel.Position = UDim2.new(0, 15, 1, -95)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = "Idle"
StatusLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
StatusLabel.TextSize = 12
StatusLabel.Font = Enum.Font.Gotham
StatusLabel.TextXAlignment = Enum.TextXAlignment.Left
StatusLabel.Parent = MainFrame

-- Start Button
local StartBtn = Instance.new("TextButton")
StartBtn.Size = UDim2.new(1, -30, 0, 40)
StartBtn.Position = UDim2.new(0, 15, 1, -55)
StartBtn.BackgroundColor3 = themes.Blue.Accent
StartBtn.BackgroundTransparency = 0.1
StartBtn.Text = "Start"
StartBtn.TextColor3 = themes.Blue.Text
StartBtn.TextSize = 16
StartBtn.Font = Enum.Font.GothamBold
StartBtn.Parent = MainFrame

local UICorner_Start = Instance.new("UICorner")
UICorner_Start.CornerRadius = UDim.new(0, 8)
UICorner_Start.Parent = StartBtn

-- Logic Variables
local selectedPlayers = {}
local playerButtons = {}
local allSelected = false
local isFlinging = false

-- Apply Theme Function
local function applyTheme()
    local theme = themes[themeNames[currentThemeIndex]]
    
    MainFrame.BackgroundColor3 = theme.Main
    UIGradient.Color = ColorSequence.new(theme.Main, theme.SubBg)
    UIStroke.Color = theme.Stroke
    
    InfoPanel.BackgroundColor3 = theme.Main
    UIGradient_Info.Color = ColorSequence.new(theme.Main, theme.SubBg)
    AboutTitle.TextColor3 = theme.Text
    AboutText.TextColor3 = theme.Text
    InfoCloseBtn.BackgroundColor3 = theme.Accent
    InfoCloseBtn.TextColor3 = theme.Text
    
    PlayerScroll.BackgroundColor3 = theme.SubBg
    SearchBox.BackgroundColor3 = theme.SubBg
    UIStroke_Search.Color = theme.Stroke
    
    SelectAllBtn.BackgroundColor3 = theme.Accent
    StartBtn.BackgroundColor3 = theme.Accent
    ThemeBtn.BackgroundColor3 = theme.Accent
    RefreshBtn.BackgroundColor3 = theme.Accent
    InfoBtn.BackgroundColor3 = theme.Accent
    
    Title.TextColor3 = theme.Text
    ThemeBtn.TextColor3 = theme.Text
    RefreshBtn.TextColor3 = theme.Text
    InfoBtn.TextColor3 = theme.Text
    CloseBtn.TextColor3 = theme.Text
    SelectAllBtn.TextColor3 = theme.Text
    StartBtn.TextColor3 = theme.Text
    SearchBox.TextColor3 = theme.Text
    
    for player, btn in pairs(playerButtons) do
        if selectedPlayers[player] then
            btn.BackgroundColor3 = theme.Selected
        else
            btn.BackgroundColor3 = theme.Main
        end
        btn.UIStroke.Color = theme.Stroke
        btn.TextColor3 = theme.Text
    end
end

ThemeBtn.MouseButton1Click:Connect(function()
    currentThemeIndex = (currentThemeIndex % #themeNames) + 1
    applyTheme()
end)

-- Notification Function
local function notify(text, isSuccess)
    local notifGui = Instance.new("ScreenGui")
    notifGui.Name = "FlingNotification"
    notifGui.Parent = CoreGui
    
    local notifFrame = Instance.new("Frame")
    notifFrame.Size = UDim2.new(0, 250, 0, 60)
    notifFrame.Position = UDim2.new(0.5, -125, 0, -100)
    notifFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    notifFrame.BackgroundTransparency = 0.1
    notifFrame.BorderSizePixel = 0
    notifFrame.Parent = notifGui
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 8)
    corner.Parent = notifFrame
    
    local stroke = Instance.new("UIStroke")
    stroke.Color = isSuccess and Color3.fromRGB(50, 200, 50) or Color3.fromRGB(200, 50, 50)
    stroke.Thickness = 2
    stroke.Parent = notifFrame
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -10, 1, -10)
    label.Position = UDim2.new(0, 5, 0, 5)
    label.BackgroundTransparency = 1
    label.Text = text
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.TextSize = 15
    label.Font = Enum.Font.GothamBold
    label.TextWrapped = true
    label.Parent = notifFrame
    
    TweenService:Create(notifFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0.5, -125, 0, 20)}):Play()
    
    task.delay(3, function()
        TweenService:Create(notifFrame, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {Position = UDim2.new(0.5, -125, 0, -100)}):Play()
        task.wait(0.5)
        notifGui:Destroy()
    end)
end

local function updateCanvasSize()
    task.defer(function()
        PlayerScroll.CanvasSize = UDim2.new(0, 0, 0, UIList.AbsoluteContentSize.Y + 16)
    end)
end

local function filterPlayers(searchText)
    for player, btn in pairs(playerButtons) do
        if player.Name:lower():match(searchText:lower()) then
            btn.Visible = true
        else
            btn.Visible = false
        end
    end
    updateCanvasSize()
end

SearchBox:GetPropertyChangedSignal("Text"):Connect(function()
    if not isFlinging then
        filterPlayers(SearchBox.Text)
    end
end)

local function updateButton(btn, player)
    local theme = themes[themeNames[currentThemeIndex]]
    if selectedPlayers[player] then
        btn.Text = "[X] " .. player.Name
        btn.BackgroundColor3 = theme.Selected
        btn.UIStroke.Color = theme.Accent
    else
        btn.Text = "[ ] " .. player.Name
        btn.BackgroundColor3 = theme.Main
        btn.UIStroke.Color = theme.Stroke
    end
end

local function createPlayerButton(player)
    if player == LocalPlayer then return end
    
    local theme = themes[themeNames[currentThemeIndex]]
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, 0, 0, 35)
    btn.BackgroundColor3 = theme.Main
    btn.BackgroundTransparency = 0.1
    btn.TextColor3 = theme.Text
    btn.TextSize = 14
    btn.Font = Enum.Font.Gotham
    btn.TextXAlignment = Enum.TextXAlignment.Left
    btn.Parent = PlayerScroll
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 6)
    corner.Parent = btn
    
    local stroke = Instance.new("UIStroke")
    stroke.Color = theme.Stroke
    stroke.Thickness = 1
    stroke.Transparency = 0.2
    stroke.Name = "UIStroke"
    stroke.Parent = btn
    
    local padding = Instance.new("UIPadding")
    padding.PaddingLeft = UDim.new(0, 10)
    padding.Parent = btn
    
    selectedPlayers[player] = false
    updateButton(btn, player)
    
    btn.MouseButton1Click:Connect(function()
        if isFlinging then return end
        selectedPlayers[player] = not selectedPlayers[player]
        updateButton(btn, player)
    end)
    
    playerButtons[player] = btn
    filterPlayers(SearchBox.Text)
    updateCanvasSize()
end

local function refreshPlayers()
    for p, btn in pairs(playerButtons) do
        if btn and btn.Parent then
            btn:Destroy()
        end
    end
    playerButtons = {}
    selectedPlayers = {}
    allSelected = false
    SelectAllBtn.Text = "Select All"
    
    for _, p in pairs(Players:GetPlayers()) do
        createPlayerButton(p)
    end
    filterPlayers(SearchBox.Text)
    updateCanvasSize()
end

RefreshBtn.MouseButton1Click:Connect(refreshPlayers)

-- Populate Player List initially
refreshPlayers()

Players.PlayerAdded:Connect(createPlayerButton)
Players.PlayerRemoving:Connect(function(player)
    if playerButtons[player] then
        playerButtons[player]:Destroy()
        playerButtons[player] = nil
        selectedPlayers[player] = nil
        updateCanvasSize()
    end
end)

SelectAllBtn.MouseButton1Click:Connect(function()
    if isFlinging then return end
    allSelected = not allSelected
    for p, btn in pairs(playerButtons) do
        if btn.Visible then
            selectedPlayers[p] = allSelected
            updateButton(btn, p)
        end
    end
    if allSelected then
        SelectAllBtn.Text = "Deselect All"
    else
        SelectAllBtn.Text = "Select All"
    end
end)

-- Check if target has been flung
local function checkFlingState(targetChar)
    if not targetChar then return false end
    local hum = targetChar:FindFirstChildOfClass("Humanoid")
    local hrp = targetChar:FindFirstChild("HumanoidRootPart")
    if not hum or not hrp then return false end
    
    if hum:GetState() == Enum.HumanoidStateType.FallingDown then return true end
    if hrp.AssemblyLinearVelocity.Magnitude > 150 then return true end
    if hrp.AssemblyAngularVelocity.Magnitude > 150 then return true end
    if hum.Health <= 0 then return true end
    
    return false
end

-- Improved Fling Sequence
local function startFling()
    if isFlinging then return end
    isFlinging = true
    StartBtn.Text = "Flinging..."
    StartBtn.BackgroundColor3 = Color3.fromRGB(150, 150, 50)
    StatusLabel.Text = "Preparing to fling..."
    
    local char = LocalPlayer.Character
    local hum = char and char:FindFirstChildOfClass("Humanoid")
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    
    if not hum or not hrp or hum.Health <= 0 then
        notify("failed to fling.", false)
        isFlinging = false
        StartBtn.Text = "Start"
        StatusLabel.Text = "Idle"
        applyTheme()
        return
    end
    
    -- Save current coordinate
    local originalCFrame = hrp.CFrame
    
    -- Gather selected targets
    local targets = {}
    for p, isSelected in pairs(selectedPlayers) do
        if isSelected then
            table.insert(targets, p)
        end
    end
    
    if #targets == 0 then
        notify("failed to fling.", false)
        isFlinging = false
        StartBtn.Text = "Start"
        StatusLabel.Text = "Idle"
        applyTheme()
        return
    end
    
    local success = true
    
    for index, targetPlayer in ipairs(targets) do
        if not success then break end
        
        if not targetPlayer.Parent then continue end
        
        local targetChar = targetPlayer.Character
        local targetHum = targetChar and targetChar:FindFirstChildOfClass("Humanoid")
        local targetHrp = targetChar and targetChar:FindFirstChild("HumanoidRootPart")
        
        if targetChar and targetHum and targetHrp and targetHum.Health > 0 then
            StatusLabel.Text = "Targeting: " .. targetPlayer.Name
            
            local flung = false
            local startTime = tick()
            
            -- Active loop to continuously chase and spin
            local spinConn
            spinConn = RunService.Heartbeat:Connect(function()
                if not targetHrp or not targetHrp.Parent or targetHum.Health <= 0 or not hrp or not hrp.Parent then return end
                -- Stick to target's HRP to maximize collision physics
                hrp.CFrame = targetHrp.CFrame
                hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
                hrp.AssemblyAngularVelocity = Vector3.new(0, 9999, 0)
            end)
            
            -- Wait up to 3 seconds to verify fling
            while tick() - startTime < 3 do
                if hum.Health <= 0 then break end
                if checkFlingState(targetChar) then
                    flung = true
                    break
                end
                task.wait()
            end
            
            if spinConn then spinConn:Disconnect() end
            
            -- Stop our own spin momentarily
            if hrp and hrp.Parent then
                hrp.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
                hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
            end
            
            if not flung then
                success = false
            else
                StatusLabel.Text = "Flung " .. targetPlayer.Name .. " successfully."
                task.wait(0.5) -- Small buffer before next target
            end
        end
    end
    
    -- Return to saved coordinate (spawn)
    StatusLabel.Text = "Returning to spawn..."
    if char and hrp and hrp.Parent then
        hrp.CFrame = originalCFrame
        hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
        hrp.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
    end
    
    if success then
        notify("Success!!!!!!", true)
        StatusLabel.Text = "Success"
    else
        notify("failed to fling.", false)
        StatusLabel.Text = "Failed"
    end
    
    isFlinging = false
    StartBtn.Text = "Start"
    applyTheme()
    
    task.wait(2)
    if not isFlinging then
        StatusLabel.Text = "Idle"
    end
end

StartBtn.MouseButton1Click:Connect(startFling)
applyTheme()

Features & Information

Basically what the title says, FLING!!

Community Comments (1)

Cgxv1254Cgxv1254Jul 12, 2026

Ok

More Scripts for Universal Scripts