-- AntiFling + RemoveFall (respawn-safe) -- local Players = game:GetService("Players") local RunService = game:GetService("RunService") local StarterGui = game:GetService("StarterGui") if getgenv().AntiFlingRunning then pcall(function() StarterGui:SetCore("SendNotification", { Title = "Anti-Fling", Text = "Script is already running", Duration = 3 }) end) print("[AntiFling] already running, aborting.") return end getgenv().AntiFlingRunning = true print("[AntiFling] executed") local player = Players.LocalPlayer if not player then warn("[AntiFling] LocalPlayer not found.") return end -- weak-key table so parts can GC local lastPositions = setmetatable({}, {__mode = "k"}) local range = 20 -- reusable OverlapParams (we'll update FilterDescendantsInstances when character changes) local overlapParams = OverlapParams.new() overlapParams.FilterType = Enum.RaycastFilterType.Exclude local currentCharacter = player.Character local humanoid local function setupCharacter(char) if not char then return end currentCharacter = char humanoid = char:FindFirstChildOfClass("Humanoid") or char:WaitForChild("Humanoid", 5) overlapParams.FilterDescendantsInstances = {char} -- clear old last positions to avoid stale state from previous character lastPositions = setmetatable({}, {__mode = "k"}) if humanoid then pcall(function() humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false) end) end print("[AntiFling] character set ->", tostring(char.Name)) end -- initial setup (wait if necessary) if not currentCharacter or not currentCharacter.Parent then currentCharacter = player.Character or player.CharacterAdded:Wait() end setupCharacter(currentCharacter) player.CharacterAdded:Connect(function(char) setupCharacter(char) end) -- Anti-Fling loop (Heartbeat) RunService.Heartbeat:Connect(function() local char = player.Character if not char or not char.Parent then return end -- keep overlap filter up to date overlapParams.FilterDescendantsInstances = {char} local cf, size = char:GetBoundingBox() local regionSize = size + Vector3.new(range, range, range) local ok, parts = pcall(function() return workspace:GetPartBoundsInBox(cf, regionSize, overlapParams) end) if not ok or not parts then return end for _, part in ipairs(parts) do if part and part:IsA("BasePart") then -- try modern Assembly velocity resets; fallback to Velocity where needed pcall(function() part.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end) pcall(function() part.AssemblyAngularVelocity = Vector3.new(0, 0, 0) end) -- fallback if executor doesn't support Assembly*: pcall(function() part.Velocity = Vector3.new(0, 0, 0) end) pcall(function() part.RotVelocity = Vector3.new(0, 0, 0) end) local lastPos = lastPositions[part] if lastPos and (part.Position - lastPos).Magnitude > 1 then pcall(function() part.CanCollide = false end) end lastPositions[part] = part.Position end end end) -- Notify once pcall(function() StarterGui:SetCore("SendNotification", { Title = "Anti-Fling", Text = "Protection Enabled", Duration = 3 }) end) -- ===================== Remove Fall UI ===================== local playerGui = player:WaitForChild("PlayerGui") local gui = Instance.new("ScreenGui") gui.Name = "RemoveFallGui" gui.ResetOnSpawn = false -- keep GUI after respawn gui.Parent = playerGui local button = Instance.new("TextButton") button.Size = UDim2.new(0, 170, 0, 48) button.Position = UDim2.new(0.4, 0, 0.2, 0) button.Text = "Remove Fall Damage: OFF" button.BackgroundColor3 = Color3.fromRGB(40, 40, 40) button.TextColor3 = Color3.fromRGB(255, 255, 255) button.Active = true button.Draggable = true button.Parent = gui local RemoveFall = false local loopRunning = false local function getRoot(char) return char and char:FindFirstChild("HumanoidRootPart") end local function startRemoveFall() if loopRunning then return end loopRunning = true print("[RemoveFall] started") task.spawn(function() while RemoveFall do RunService.Heartbeat:Wait() local char = player.Character local root = getRoot(char) local vel, movel = nil, 0.1 if char and char.Parent and root and root.Parent then vel = root.Velocity pcall(function() root.Velocity = Vector3.new(0, 0, 0) end) RunService.RenderStepped:Wait() if player.Character and root and root.Parent then pcall(function() root.Velocity = vel end) end RunService.Stepped:Wait() if player.Character and root and root.Parent then pcall(function() root.Velocity = vel + Vector3.new(0, movel, 0) end) movel = -movel end end end loopRunning = false print("[RemoveFall] stopped") end) end button.MouseButton1Click:Connect(function() RemoveFall = not RemoveFall button.Text = "Remove Fall Damage: " .. (RemoveFall and "ON" or "OFF") print("[RemoveFall] Toggle ->", RemoveFall and "ON" or "OFF") if RemoveFall then startRemoveFall() end end)