-- Macw1u's Touch Fling v7 (LocalScript only) - cooler UI, no emojis, drawn icons local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local CONFIG = { Density = math.huge, PhaseTime = 2, ToggleKey = Enum.KeyCode.RightControl, } local state = { touch = false, hitbox = false, selected = nil, busy = false, power = 1 } local M = { density = true, linear = true, angular = true, bodyVel = true, bodyAng = true, predict = true, jitter = true, multipart = true, spin = true, safety = true, } local function getStrength() return 10 ^ (3 + 6 * state.power) end ---------------------------------------------------------------- -- Helpers ---------------------------------------------------------------- local function getRoot(char) return char and (char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")) end local function getHum(char) return char and char:FindFirstChildOfClass("Humanoid") end local function new(class, props, parent) local o = Instance.new(class) for k, v in pairs(props) do o[k] = v end o.Parent = parent return o end local function corner(o, r) new("UICorner", { CornerRadius = UDim.new(0, r) }, o) end local function setBoost(char, on) if not char then return end for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then p.CustomPhysicalProperties = on and PhysicalProperties.new(CONFIG.Density, 0.3, 0.5) or nil end end end -- click "pop" animation for any button local function animateClick(btn, baseSize) btn.MouseButton1Down:Connect(function() TweenService:Create(btn, TweenInfo.new(0.08, Enum.EasingStyle.Quad), { Size = baseSize - UDim2.new(0, 4, 0, 4) }):Play() end) local function restore() TweenService:Create(btn, TweenInfo.new(0.15, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Size = baseSize }):Play() end btn.MouseButton1Up:Connect(restore) btn.MouseLeave:Connect(restore) end ---------------------------------------------------------------- -- Theme ---------------------------------------------------------------- local C = { bg1 = Color3.fromRGB(14, 14, 20), bg2 = Color3.fromRGB(24, 20, 36), panel = Color3.fromRGB(30, 27, 44), panelHi = Color3.fromRGB(42, 37, 60), item = Color3.fromRGB(40, 36, 56), accent1 = Color3.fromRGB(150, 90, 255), accent2 = Color3.fromRGB(90, 160, 255), on = Color3.fromRGB(70, 220, 140), off = Color3.fromRGB(70, 68, 90), text = Color3.fromRGB(240, 240, 250), sub = Color3.fromRGB(165, 160, 190), danger = Color3.fromRGB(255, 80, 100), } local FULL_H = 430 local W = 280 ---------------------------------------------------------------- -- GUI shell ---------------------------------------------------------------- local gui = new("ScreenGui", { Name = "Macw1usTouchFling", ResetOnSpawn = false, ZIndexBehavior = Enum.ZIndexBehavior.Sibling }, player:WaitForChild("PlayerGui")) local frame = new("Frame", { Size = UDim2.new(0, W, 0, 0), Position = UDim2.new(0, 20, 0.5, -FULL_H / 2), BackgroundColor3 = C.bg1, BorderSizePixel = 0, ClipsDescendants = true, ZIndex = 1, }, gui) -- soft drop shadow, parented to the frame so it drags and resizes with it local shadow = new("Frame", { Size = UDim2.new(1, 16, 1, 16), Position = UDim2.new(0, -8, 0, -8), BackgroundColor3 = Color3.new(0, 0, 0), BackgroundTransparency = 0.65, BorderSizePixel = 0, ZIndex = 0, }, frame) corner(shadow, 20) corner(frame, 14) local grad = new("UIGradient", { Color = ColorSequence.new(C.bg1, C.bg2), Rotation = 60 }, frame) local glowStroke = new("UIStroke", { Color = C.accent1, Thickness = 2, Transparency = 0.2 }, frame) new("UIGradient", { Color = ColorSequence.new(C.accent1, C.accent2), Rotation = 60 }, glowStroke) -- open animation TweenService:Create(frame, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Size = UDim2.new(0, W, 0, FULL_H) }):Play() -- animated glowing border loop task.spawn(function() while frame.Parent do TweenService:Create(glowStroke, TweenInfo.new(1.4, Enum.EasingStyle.Sine), { Transparency = 0.55 }):Play() task.wait(1.4) TweenService:Create(glowStroke, TweenInfo.new(1.4, Enum.EasingStyle.Sine), { Transparency = 0.1 }):Play() task.wait(1.4) end end) local header = new("Frame", { Size = UDim2.new(1, 0, 0, 40), BackgroundColor3 = C.panel, BorderSizePixel = 0, ZIndex = 2 }, frame) corner(header, 14) local headerGrad = new("UIGradient", { Color = ColorSequence.new(C.accent1, C.panel), Rotation = 90, Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.75), NumberSequenceKeypoint.new(1, 1), }) }, header) -- slow sweeping shimmer across the header task.spawn(function() while header.Parent do TweenService:Create(headerGrad, TweenInfo.new(3, Enum.EasingStyle.Sine), { Rotation = 180 }):Play() task.wait(3) TweenService:Create(headerGrad, TweenInfo.new(3, Enum.EasingStyle.Sine), { Rotation = 90 }):Play() task.wait(3) end end) local dot = new("Frame", { Size = UDim2.new(0, 8, 0, 8), Position = UDim2.new(0, 14, 0.5, -4), BackgroundColor3 = C.on, BorderSizePixel = 0 }, header) corner(dot, 4) task.spawn(function() while dot.Parent do TweenService:Create(dot, TweenInfo.new(0.6, Enum.EasingStyle.Sine), { BackgroundTransparency = 0.7 }):Play() task.wait(0.6) TweenService:Create(dot, TweenInfo.new(0.6, Enum.EasingStyle.Sine), { BackgroundTransparency = 0 }):Play() task.wait(0.6) end end) local titleLbl = new("TextLabel", { Size = UDim2.new(1, -100, 1, 0), Position = UDim2.new(0, 28, 0, 0), BackgroundTransparency = 1, Text = "Macw1u's Touch Fling", TextColor3 = C.text, Font = Enum.Font.GothamBold, TextSize = 14, TextXAlignment = Enum.TextXAlignment.Left, }, header) local function headerBtnShell(xOff) local b = new("TextButton", { Size = UDim2.new(0, 28, 0, 28), Position = UDim2.new(1, xOff, 0, 6), BackgroundColor3 = C.item, Text = "", BorderSizePixel = 0, }, header) corner(b, 8) animateClick(b, b.Size) b.MouseEnter:Connect(function() TweenService:Create(b, TweenInfo.new(0.1), { BackgroundColor3 = C.panelHi }):Play() end) b.MouseLeave:Connect(function() TweenService:Create(b, TweenInfo.new(0.1), { BackgroundColor3 = C.item }):Play() end) return b end local minBtn = headerBtnShell(-34) local minusBar = new("Frame", { Size = UDim2.new(0, 12, 0, 2), Position = UDim2.new(0.5, -6, 0.5, -1), BackgroundColor3 = C.text, BorderSizePixel = 0 }, minBtn) corner(minusBar, 1) local plusBar = new("Frame", { Size = UDim2.new(0, 2, 0, 12), Position = UDim2.new(0.5, -1, 0.5, -6), BackgroundColor3 = C.text, BorderSizePixel = 0, Visible = false }, minBtn) corner(plusBar, 1) -- gear/mechanics icon drawn as a hamburger-style trio of bars local gearBtn = headerBtnShell(-68) for idx = 1, 3 do local bar = new("Frame", { Size = UDim2.new(0, 14, 0, 2), Position = UDim2.new(0.5, -7, 0.5, -7 + (idx - 1) * 6), BackgroundColor3 = C.text, BorderSizePixel = 0, }, gearBtn) corner(bar, 1) end local body = new("Frame", { Size = UDim2.new(1, 0, 1, -40), Position = UDim2.new(0, 0, 0, 40), BackgroundTransparency = 1 }, frame) -- Mechanics side panel local mech = new("Frame", { Size = UDim2.new(0, 240, 0, FULL_H), Position = UDim2.new(1, 10, 0, 0), BackgroundColor3 = C.bg1, BorderSizePixel = 0, Visible = false, }, frame) corner(mech, 14) new("UIStroke", { Color = C.accent2, Thickness = 2, Transparency = 0.3 }, mech) new("TextLabel", { Size = UDim2.new(1, 0, 0, 36), BackgroundTransparency = 1, Text = "Mechanics", TextColor3 = C.text, Font = Enum.Font.GothamBold, TextSize = 14, }, mech) gearBtn.MouseButton1Click:Connect(function() mech.Visible = not mech.Visible end) local minimized = false minBtn.MouseButton1Click:Connect(function() minimized = not minimized if minimized then mech.Visible = false end local targetSize = minimized and UDim2.new(0, W, 0, 40) or UDim2.new(0, W, 0, FULL_H) TweenService:Create(frame, TweenInfo.new(0.25, Enum.EasingStyle.Quad), { Size = targetSize }):Play() body.Visible = true task.wait(minimized and 0 or 0.25) body.Visible = not minimized plusBar.Visible = minimized end) UserInputService.InputBegan:Connect(function(input, gp) if not gp and input.KeyCode == CONFIG.ToggleKey then frame.Visible = not frame.Visible end end) -- Window dragging do local dragging, dragStart, startPos header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging, dragStart, startPos = true, input.Position, frame.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local d = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) end ---------------------------------------------------------------- -- Switch rows with glow + pop animation ---------------------------------------------------------------- local function makeSwitch(parent, label, y, callback, startsOn) local row = new("Frame", { Size = UDim2.new(1, -20, 0, 34), Position = UDim2.new(0, 10, 0, y), BackgroundColor3 = C.panel, BorderSizePixel = 0 }, parent) corner(row, 10) row.ClipsDescendants = false local stroke = new("UIStroke", { Color = C.accent1, Thickness = 1, Transparency = 1 }, row) new("TextLabel", { Size = UDim2.new(1, -70, 1, 0), Position = UDim2.new(0, 12, 0, 0), BackgroundTransparency = 1, Text = label, TextColor3 = C.text, Font = Enum.Font.GothamMedium, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, }, row) local track = new("TextButton", { Size = UDim2.new(0, 46, 0, 24), Position = UDim2.new(1, -56, 0.5, -12), BackgroundColor3 = C.off, Text = "", AutoButtonColor = false, BorderSizePixel = 0, }, row) corner(track, 12) local knob = new("Frame", { Size = UDim2.new(0, 18, 0, 18), Position = UDim2.new(0, 3, 0.5, -9), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0 }, track) corner(knob, 9) new("UIStroke", { Color = Color3.new(0,0,0), Transparency = 0.9 }, knob) local on = false local function set(v) on = v TweenService:Create(track, TweenInfo.new(0.18, Enum.EasingStyle.Quad), { BackgroundColor3 = v and C.on or C.off }):Play() TweenService:Create(knob, TweenInfo.new(0.18, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Position = v and UDim2.new(1, -21, 0.5, -9) or UDim2.new(0, 3, 0.5, -9) }):Play() TweenService:Create(stroke, TweenInfo.new(0.2), { Transparency = v and 0.4 or 1 }):Play() callback(v) end track.MouseButton1Click:Connect(function() knob.Size = UDim2.new(0, 14, 0, 14) knob.Position = on and UDim2.new(1, -19, 0.5, -7) or UDim2.new(0, 5, 0.5, -7) set(not on) end) if startsOn then set(true) end return set end makeSwitch(body, "Touch Fling", 10, function(v) state.touch = v if not state.busy then setBoost(player.Character, v and M.density) end end) makeSwitch(body, "Show Hitbox", 50, function(v) state.hitbox = v end) local mechList = { { "density", "1 · Super density" }, { "linear", "2 · Velocity spike" }, { "angular", "3 · Spin spike" }, { "bodyVel", "4 · BodyVelocity (pass 2)" }, { "bodyAng", "5 · BodyAngular (pass 2)" }, { "predict", "6 · Motion prediction" }, { "jitter", "7 · Jitter sandwich" }, { "multipart", "8 · Cycle body parts" }, { "spin", "9 · CFrame spin" }, { "safety", "10 · Self-protect + return" }, } for idx, m in ipairs(mechList) do makeSwitch(mech, m[2], 44 + (idx - 1) * 36, function(v) M[m[1]] = v if m[1] == "density" and not state.busy then setBoost(player.Character, state.touch and v) end end, true) end ---------------------------------------------------------------- -- Power slider with glowing fill ---------------------------------------------------------------- local powerRow = new("Frame", { Size = UDim2.new(1, -20, 0, 48), Position = UDim2.new(0, 10, 0, 92), BackgroundColor3 = C.panel, BorderSizePixel = 0 }, body) corner(powerRow, 10) -- small accent dot in place of an icon local powerDot = new("Frame", { Size = UDim2.new(0, 8, 0, 8), Position = UDim2.new(0, 14, 0, 11), BackgroundColor3 = C.accent1, BorderSizePixel = 0, Rotation = 45, }, powerRow) corner(powerDot, 2) local powerLabel = new("TextLabel", { Size = UDim2.new(1, -92, 0, 18), Position = UDim2.new(0, 30, 0, 6), BackgroundTransparency = 1, Text = "Power: 100%", TextColor3 = C.text, Font = Enum.Font.GothamMedium, TextSize = 13, TextXAlignment = Enum.TextXAlignment.Left, }, powerRow) local maxBtn = new("TextButton", { Size = UDim2.new(0, 48, 0, 20), Position = UDim2.new(1, -58, 0, 5), BackgroundColor3 = C.danger, Text = "MAX", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 11, BorderSizePixel = 0, }, powerRow) corner(maxBtn, 6) animateClick(maxBtn, maxBtn.Size) local ptrack = new("Frame", { Size = UDim2.new(1, -24, 0, 8), Position = UDim2.new(0, 12, 0, 32), BackgroundColor3 = C.off, BorderSizePixel = 0 }, powerRow) corner(ptrack, 4) local pfill = new("Frame", { Size = UDim2.new(1, 0, 1, 0), BackgroundColor3 = C.accent1, BorderSizePixel = 0 }, ptrack) corner(pfill, 4) new("UIGradient", { Color = ColorSequence.new(C.accent1, C.accent2) }, pfill) local pknob = new("Frame", { Size = UDim2.new(0, 16, 0, 16), AnchorPoint = Vector2.new(0.5, 0.5), Position = UDim2.new(1, 0, 0.5, 0), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, }, ptrack) corner(pknob, 8) new("UIStroke", { Color = C.accent1, Thickness = 2 }, pknob) local phit = new("TextButton", { Size = UDim2.new(1, -16, 0, 26), Position = UDim2.new(0, 8, 0, 22), BackgroundTransparency = 1, Text = "" }, powerRow) local function setPower(p) state.power = math.clamp(p, 0.01, 1) TweenService:Create(pfill, TweenInfo.new(0.05), { Size = UDim2.new(state.power, 0, 1, 0) }):Play() TweenService:Create(pknob, TweenInfo.new(0.05), { Position = UDim2.new(state.power, 0, 0.5, 0) }):Play() powerLabel.Text = "Power: " .. math.floor(state.power * 100 + 0.5) .. "%" TweenService:Create(maxBtn, TweenInfo.new(0.15), { BackgroundColor3 = (state.power >= 0.995) and C.on or C.danger }):Play() end local sliding = false local function updateFromInput(input) setPower((input.Position.X - ptrack.AbsolutePosition.X) / ptrack.AbsoluteSize.X) end phit.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliding = true TweenService:Create(pknob, TweenInfo.new(0.1), { Size = UDim2.new(0, 20, 0, 20) }):Play() updateFromInput(input) end end) UserInputService.InputChanged:Connect(function(input) if sliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateFromInput(input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliding = false TweenService:Create(pknob, TweenInfo.new(0.1), { Size = UDim2.new(0, 16, 0, 16) }):Play() end end) maxBtn.MouseButton1Click:Connect(function() setPower(1) end) setPower(1) ---------------------------------------------------------------- -- Search + list ---------------------------------------------------------------- local search = new("TextBox", { Size = UDim2.new(1, -20, 0, 30), Position = UDim2.new(0, 10, 0, 148), BackgroundColor3 = C.panel, Text = "", PlaceholderText = "Search players...", PlaceholderColor3 = C.sub, TextColor3 = C.text, Font = Enum.Font.Gotham, TextSize = 13, ClearTextOnFocus = false, BorderSizePixel = 0, }, body) corner(search, 10) new("UIPadding", { PaddingLeft = UDim.new(0, 30) }, search) -- magnifier icon drawn with a ring + handle local magRing = new("Frame", { Size = UDim2.new(0, 10, 0, 10), Position = UDim2.new(0, 10, 0, 10), BackgroundTransparency = 1, }, search) new("UIStroke", { Color = C.sub, Thickness = 1.5 }, magRing) corner(magRing, 5) local magHandle = new("Frame", { Size = UDim2.new(0, 2, 0, 6), Position = UDim2.new(0, 18, 0, 18), Rotation = 45, BackgroundColor3 = C.sub, BorderSizePixel = 0, }, search) corner(magHandle, 1) local searchStroke = new("UIStroke", { Color = C.accent2, Thickness = 1, Transparency = 1 }, search) search.Focused:Connect(function() TweenService:Create(searchStroke, TweenInfo.new(0.15), { Transparency = 0.3 }):Play() end) search.FocusLost:Connect(function() TweenService:Create(searchStroke, TweenInfo.new(0.15), { Transparency = 1 }):Play() end) local list = new("ScrollingFrame", { Size = UDim2.new(1, -20, 0, 118), Position = UDim2.new(0, 10, 0, 184), BackgroundColor3 = C.panel, BorderSizePixel = 0, ScrollBarThickness = 3, ScrollBarImageColor3 = C.accent1, CanvasSize = UDim2.new(), AutomaticCanvasSize = Enum.AutomaticSize.Y, }, body) corner(list, 10) new("UIListLayout", { Padding = UDim.new(0, 4) }, list) new("UIPadding", { PaddingTop = UDim.new(0, 5), PaddingLeft = UDim.new(0, 5), PaddingRight = UDim.new(0, 5) }, list) local speedLabel = new("TextLabel", { Size = UDim2.new(1, -20, 0, 16), Position = UDim2.new(0, 10, 0, 306), BackgroundTransparency = 1, Text = "Target speed: -", TextColor3 = C.sub, Font = Enum.Font.Gotham, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, }, body) local flingBtn = new("TextButton", { Size = UDim2.new(1, -20, 0, 42), Position = UDim2.new(0, 10, 0, 326), BackgroundColor3 = C.accent1, Text = "FLING", TextColor3 = Color3.new(1, 1, 1), Font = Enum.Font.GothamBold, TextSize = 16, BorderSizePixel = 0, }, body) corner(flingBtn, 12) new("UIGradient", { Color = ColorSequence.new(C.accent1, C.accent2) }, flingBtn) animateClick(flingBtn, flingBtn.Size) flingBtn.MouseEnter:Connect(function() TweenService:Create(flingBtn, TweenInfo.new(0.15), { Size = UDim2.new(1, -16, 0, 44) }):Play() end) flingBtn.MouseLeave:Connect(function() TweenService:Create(flingBtn, TweenInfo.new(0.15), { Size = UDim2.new(1, -20, 0, 42) }):Play() end) local status = new("TextLabel", { Size = UDim2.new(1, -20, 0, 18), Position = UDim2.new(0, 10, 0, 374), BackgroundTransparency = 1, Text = "Select a player", TextColor3 = C.sub, Font = Enum.Font.Gotham, TextSize = 12, }, body) local function setStatus(t, color) status.Text = t status.TextColor3 = color or C.sub status.TextTransparency = 1 TweenService:Create(status, TweenInfo.new(0.2), { TextTransparency = 0 }):Play() end local function refreshList() for _, c in ipairs(list:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end local q = string.lower(search.Text) for _, plr in ipairs(Players:GetPlayers()) do if plr ~= player and (q == "" or string.find(string.lower(plr.Name), q, 1, true) or string.find(string.lower(plr.DisplayName), q, 1, true)) then local selectedNow = (plr == state.selected) local b = new("TextButton", { Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = selectedNow and C.accent1 or C.item, Text = "", BorderSizePixel = 0, AutoButtonColor = false, }, list) corner(b, 8) if selectedNow then new("UIGradient", { Color = ColorSequence.new(C.accent1, C.accent2) }, b) end local img = new("ImageLabel", { Size = UDim2.new(0, 30, 0, 30), Position = UDim2.new(0, 4, 0.5, -15), BackgroundColor3 = C.bg1, BorderSizePixel = 0, Image = "rbxthumb://type=AvatarHeadShot&id=" .. plr.UserId .. "&w=48&h=48", }, b) corner(img, 15) new("TextLabel", { Size = UDim2.new(1, -46, 0, 16), Position = UDim2.new(0, 40, 0, 4), BackgroundTransparency = 1, Text = plr.DisplayName, TextColor3 = C.text, Font = Enum.Font.GothamBold, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, }, b) new("TextLabel", { Size = UDim2.new(1, -46, 0, 14), Position = UDim2.new(0, 40, 0, 20), BackgroundTransparency = 1, Text = "@" .. plr.Name, TextColor3 = selectedNow and Color3.new(1,1,1) or C.sub, Font = Enum.Font.Gotham, TextSize = 11, TextXAlignment = Enum.TextXAlignment.Left, TextTruncate = Enum.TextTruncate.AtEnd, }, b) b.MouseEnter:Connect(function() if plr ~= state.selected then TweenService:Create(b, TweenInfo.new(0.1), { BackgroundColor3 = C.panelHi }):Play() end end) b.MouseLeave:Connect(function() if plr ~= state.selected then TweenService:Create(b, TweenInfo.new(0.1), { BackgroundColor3 = C.item }):Play() end end) b.MouseButton1Click:Connect(function() state.selected = plr setStatus("Selected: " .. plr.Name) refreshList() end) end end end refreshList() search:GetPropertyChangedSignal("Text"):Connect(refreshList) Players.PlayerAdded:Connect(refreshList) Players.PlayerRemoving:Connect(function(p) if p == state.selected then state.selected = nil end task.defer(refreshList) end) ---------------------------------------------------------------- -- Hitbox, target outline, speed readout ---------------------------------------------------------------- local hitbox = new("BoxHandleAdornment", { AlwaysOnTop = true, ZIndex = 5, Transparency = 0.55, Color3 = C.danger }, gui) local targetBox = new("SelectionBox", { Color3 = C.accent1, LineThickness = 0.06 }, gui) RunService.RenderStepped:Connect(function() local root = getRoot(player.Character) if state.hitbox and root then hitbox.Adornee = root hitbox.Size = root.Size + Vector3.new(1.5, 1.5, 1.5) else hitbox.Adornee = nil end local sel = state.selected targetBox.Adornee = sel and sel.Character or nil local tRoot = sel and getRoot(sel.Character) speedLabel.Text = tRoot and string.format("Target speed: %d", tRoot.AssemblyLinearVelocity.Magnitude) or "Target speed: -" end) ---------------------------------------------------------------- -- Respawn handling ---------------------------------------------------------------- player.CharacterAdded:Connect(function(char) char:WaitForChild("HumanoidRootPart", 10) task.wait(0.3) if state.touch and M.density and not state.busy then setBoost(char, true) end end) ---------------------------------------------------------------- -- Touch fling loop ---------------------------------------------------------------- task.spawn(function() local flip = 0.1 while true do RunService.Heartbeat:Wait() local root = getRoot(player.Character) if state.touch and not state.busy and root and root.Parent then local S = getStrength() local vel = root.AssemblyLinearVelocity if M.linear then root.AssemblyLinearVelocity = vel * math.min(S / 100, 1e5) + Vector3.new(0, S, 0) end if M.angular then root.AssemblyAngularVelocity = Vector3.new(0, S, 0) end if M.safety then RunService.RenderStepped:Wait() if root.Parent then root.AssemblyLinearVelocity = vel root.AssemblyAngularVelocity = Vector3.zero end RunService.Stepped:Wait() if root.Parent then root.AssemblyLinearVelocity = vel + Vector3.new(0, flip, 0) flip = -flip end end end end end) ---------------------------------------------------------------- -- Direct fling (10 mechanics, two escalating passes) ---------------------------------------------------------------- local offsets = { Vector3.new(0, 1.5, 0), Vector3.new(0, -1.5, 0), Vector3.new(2.25, 1.5, -2.25), Vector3.new(-2.25, -1.5, 2.25), Vector3.new(2.25, 0, 2.25), Vector3.new(-2.25, 0, -2.25), } local function directFling(target) if state.busy then return end local myChar = player.Character local myRoot, myHum = getRoot(myChar), getHum(myChar) local tChar = target and target.Character local tRoot, tHum = getRoot(tChar), getHum(tChar) if not (myRoot and myHum and tRoot and tHum) or tHum.Health <= 0 then setStatus("Target unavailable", C.danger) return end state.busy = true local S = getStrength() local origin = myRoot.CFrame local cam = workspace.CurrentCamera cam.CameraSubject = tHum if M.density then setBoost(myChar, true) end local noclip if M.safety then myHum.PlatformStand = true noclip = RunService.Stepped:Connect(function() for _, p in ipairs(myChar:GetDescendants()) do if p:IsA("BasePart") and p ~= myRoot then p.CanCollide = false end end end) end local cand = {} for _, n in ipairs({ "HumanoidRootPart", "Head", "UpperTorso", "LowerTorso", "Torso" }) do local p = tChar:FindFirstChild(n) if p and p:IsA("BasePart") then table.insert(cand, p) end end local success, startPos, i = false, tRoot.Position, 0 local huge = Vector3.new(math.huge, math.huge, math.huge) for pass = 1, 2 do if success then break end local bv, bav if pass == 2 then if not (M.bodyVel or M.bodyAng) then break end if M.bodyVel then bv = new("BodyVelocity", { Velocity = Vector3.new(S, S, S), MaxForce = huge }, myRoot) end if M.bodyAng then bav = new("BodyAngularVelocity", { AngularVelocity = Vector3.new(S, S, S), MaxTorque = huge, P = math.huge }, myRoot) end end setStatus("Pass " .. pass .. "/2 on " .. target.Name, C.accent1) local t0 = tick() while tick() - t0 < CONFIG.PhaseTime do RunService.Heartbeat:Wait() if not (myRoot.Parent and tRoot.Parent and tHum.Parent) or tHum.Health <= 0 then break end if tRoot.AssemblyLinearVelocity.Magnitude > 450 or (tRoot.Position - startPos).Magnitude > 150 then success = true break end i += 1 local part = (M.multipart and #cand > 0) and cand[(i % #cand) + 1] or tRoot local pos = part.Position if M.predict then pos = pos + tRoot.AssemblyLinearVelocity * 0.1 end if M.jitter then pos = pos + offsets[(i % #offsets) + 1] end local rot = M.spin and CFrame.Angles(math.rad(i * 53), math.rad(i * 29), 0) or CFrame.identity myRoot.CFrame = CFrame.new(pos) * rot if M.linear then myRoot.AssemblyLinearVelocity = Vector3.new(S, S, S) end if M.angular then myRoot.AssemblyAngularVelocity = Vector3.new(S, S, S) end if pass == 1 and M.safety then RunService.RenderStepped:Wait() if myRoot.Parent then myRoot.AssemblyLinearVelocity = Vector3.zero myRoot.AssemblyAngularVelocity = Vector3.zero end end end if bv then bv:Destroy() end if bav then bav:Destroy() end end if noclip then noclip:Disconnect() end if M.safety and myRoot.Parent then for _ = 1, 15 do myRoot.AssemblyLinearVelocity = Vector3.zero myRoot.AssemblyAngularVelocity = Vector3.zero myRoot.CFrame = origin RunService.Heartbeat:Wait() end end if myChar and myChar.Parent then myHum.PlatformStand = false for _, p in ipairs(myChar:GetDescendants()) do if p:IsA("BasePart") and p ~= myRoot then p.CanCollide = true end end setBoost(myChar, state.touch and M.density) end cam.CameraSubject = getHum(player.Character) or myHum if success then setStatus("Flung " .. target.Name .. "!", C.on) else setStatus("No movement on either pass", C.danger) end state.busy = false end flingBtn.MouseButton1Click:Connect(function() if not state.selected then setStatus("Pick a player first", C.danger) return end directFling(state.selected) end)