-- Fling Things and People | Super-Reach -- by Cdrian312 -- Check the Game for Compatibility local targetGameId = 2668101271 print("Current Game ID:", game.GameId) print("Target Game ID:", targetGameId) if game.GameId ~= targetGameId then warn("Game not supported: This script is not in FT&P.") return end print("This script is in FT&P. Starting...") local Players = game:GetService("Players") local ContextActionService = game:GetService("ContextActionService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local mouse = LocalPlayer:GetMouse() -- GUI local playerGui = LocalPlayer:WaitForChild("PlayerGui") local guiName = "FTPSuperReachDisplayBY_Cdrian312" local screenGui = playerGui:FindFirstChild(guiName) if not screenGui then screenGui = Instance.new("ScreenGui") screenGui.Name = guiName screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.Parent = playerGui end local titleHeight = 36 local spacing = 4 local bottomOffset = 18 local highestOffset = bottomOffset for _, child in ipairs(screenGui:GetChildren()) do if child:IsA("TextLabel") and child.Name == "SuperReachTitle" then local offset = child.Position.Y.Offset if offset > highestOffset then highestOffset = offset end end end local label = Instance.new("TextLabel") label.Name = "SuperReachTitle" label.BackgroundTransparency = 1 label.BorderSizePixel = 0 label.AnchorPoint = Vector2.new(1, 1) label.Position = UDim2.new(1, -18, 1, -(highestOffset + titleHeight + spacing)) label.Size = UDim2.new(0, 260, 0, 36) label.Text = "FT&P Super-Reach by Cdrian312" label.TextColor3 = Color3.fromRGB(255, 255, 100) label.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) label.TextStrokeTransparency = 0 label.TextSize = 18 label.Font = Enum.Font.SourceSans label.TextXAlignment = Enum.TextXAlignment.Right label.TextYAlignment = Enum.TextYAlignment.Center label.Parent = screenGui screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -- Settings local distanceMin = 3 local distanceMax = 100000 local initialGrabMax = 35 local scrollStep = 2.5 local baseInterpolationTime = 0.15 local minInterpolationTime = 0.015 local snapRampTime = 2.0 local selected = {} local connections = {} local enabled = true -- Object Controls local function release(part) local data = selected[part] if not data then return end if data.alignPosition then data.alignPosition:Destroy() end if data.attachment then data.attachment:Destroy() end selected[part] = nil end local function releaseAll() local parts = {} for part in pairs(selected) do parts[#parts + 1] = part end for _, part in ipairs(parts) do release(part) end end local function grab(part) if not enabled or not part or not part:IsA("BasePart") then return end if LocalPlayer.Character and part:IsDescendantOf(LocalPlayer.Character) then return end local camera = workspace.CurrentCamera if not camera then return end local actualDistance = (part.Position - camera.CFrame.Position).Magnitude if actualDistance > initialGrabMax then return end local hitPosition = mouse.Hit.Position local clickOffset = part.Position - hitPosition local localOffset = camera.CFrame:VectorToObjectSpace(clickOffset) local attachment = Instance.new("Attachment") attachment.Name = "InfiniteReachAttachment" attachment.Parent = part local alignPosition = Instance.new("AlignPosition") alignPosition.Name = "InfiniteReachAlignPosition" alignPosition.Mode = Enum.PositionAlignmentMode.OneAttachment alignPosition.Attachment0 = attachment alignPosition.Position = part.Position alignPosition.MaxForce = 1000000 alignPosition.MaxVelocity = 1000 alignPosition.Responsiveness = 200 alignPosition.RigidityEnabled = false alignPosition.Parent = part selected[part] = { attachment = attachment, alignPosition = alignPosition, targetPosition = part.Position, localOffset = localOffset, currentDistance = math.clamp( actualDistance, distanceMin, distanceMax ), snapElapsed = 0, } end -- Mouse Controls ContextActionService:BindActionAtPriority( "InfiniteReachClick", function(_, inputState) if not enabled then return Enum.ContextActionResult.Pass end if inputState == Enum.UserInputState.Begin then if next(selected) then releaseAll() else grab(mouse.Target) end end return Enum.ContextActionResult.Pass end, false, Enum.ContextActionPriority.High.Value + 10000, Enum.UserInputType.MouseButton1 ) ContextActionService:BindActionAtPriority( "InfiniteReachRightClick", function(_, inputState) if not enabled then return Enum.ContextActionResult.Pass end if inputState == Enum.UserInputState.Begin then local part = next(selected) if part then release(part) end end return Enum.ContextActionResult.Pass end, false, Enum.ContextActionPriority.High.Value + 10000, Enum.UserInputType.MouseButton2 ) -- Distance Control connections[#connections + 1] = UserInputService.InputChanged:Connect(function(input) if not enabled then return end if input.UserInputType == Enum.UserInputType.MouseWheel then for _, data in pairs(selected) do data.currentDistance = math.clamp( data.currentDistance + input.Position.Z * scrollStep, distanceMin, distanceMax ) end end end) -- Position Updates connections[#connections + 1] = RunService.Heartbeat:Connect(function(dt) if not enabled then return end local camera = workspace.CurrentCamera if not camera then return end local cameraPosition = camera.CFrame.Position local lookVector = camera.CFrame.LookVector for part, data in pairs(selected) do if not part.Parent then release(part) else data.snapElapsed = data.snapElapsed + dt local progress = math.clamp( data.snapElapsed / snapRampTime, 0, 1 ) local easedProgress = progress * progress * (3 - 2 * progress) local interpolationTime = baseInterpolationTime + (minInterpolationTime - baseInterpolationTime) * easedProgress local alpha = 1 - math.exp( -dt / interpolationTime ) local worldOffset = camera.CFrame:VectorToWorldSpace( data.localOffset ) local targetPosition = cameraPosition + lookVector * data.currentDistance + worldOffset data.targetPosition = data.targetPosition:Lerp(targetPosition, alpha) data.alignPosition.Position = data.targetPosition end end end) -- Startup print("Working.") print("Note: This script only works on PC")