-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- Configuration Variables local maxReachDistance = 12.0 -- Reach distance cap in studs local extensionMultiplier = 6.0 local isLeftClicking = false -------------------------------------------------------------------------------- -- 1. PITCH-BLACK MINIMALIST UI CREATION -------------------------------------------------------------------------------- local screenGui = Instance.new("ScreenGui") screenGui.Name = "ArmExtensionGui" screenGui.ResetOnSpawn = false screenGui.Enabled = true -- Controls visibility screenGui.Parent = PlayerGui local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 220, 0, 110) mainFrame.Position = UDim2.new(0.05, 0, 0.4, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 10) mainFrame.BorderSizePixel = 1 mainFrame.BorderColor3 = Color3.fromRGB(35, 35, 35) mainFrame.Active = true mainFrame.Draggable = false -- Prevents slider from dragging whole UI mainFrame.Parent = screenGui -- Draggable Title Header (Allows moving UI ONLY via top header) local titleLabel = Instance.new("TextLabel") titleLabel.Name = "TitleHeader" titleLabel.Size = UDim2.new(1, 0, 0, 28) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "ARM EXTENSION" titleLabel.TextColor3 = Color3.fromRGB(240, 240, 240) titleLabel.TextSize = 13 titleLabel.Font = Enum.Font.GothamBold titleLabel.Active = true titleLabel.Parent = mainFrame -- Top Bar Custom Drag Logic local guiDragging = false local dragInput, dragStart, startPos titleLabel.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then guiDragging = true dragStart = input.Position startPos = mainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then guiDragging = false end end) end end) titleLabel.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 guiDragging 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) local valueLabel = Instance.new("TextLabel") valueLabel.Size = UDim2.new(1, -20, 0, 20) valueLabel.Position = UDim2.new(0, 10, 0, 32) valueLabel.BackgroundTransparency = 1 valueLabel.Text = string.format("Reach Offset: %.1fx", extensionMultiplier) valueLabel.TextColor3 = Color3.fromRGB(170, 170, 170) valueLabel.TextSize = 11 valueLabel.Font = Enum.Font.Gotham valueLabel.Parent = mainFrame -- Slider Track Background local sliderTrack = Instance.new("Frame") sliderTrack.Name = "SliderTrack" sliderTrack.Size = UDim2.new(1, -30, 0, 6) sliderTrack.Position = UDim2.new(0, 15, 0, 68) sliderTrack.BackgroundColor3 = Color3.fromRGB(25, 25, 25) sliderTrack.BorderSizePixel = 0 sliderTrack.Active = true sliderTrack.Parent = mainFrame -- Slider Fill Bar local sliderFill = Instance.new("Frame") sliderFill.Name = "SliderFill" sliderFill.Size = UDim2.new(0.5, 0, 1, 0) sliderFill.BackgroundColor3 = Color3.fromRGB(200, 200, 200) sliderFill.BorderSizePixel = 0 sliderFill.Parent = sliderTrack -- Slider Knob local sliderKnob = Instance.new("Frame") sliderKnob.Name = "SliderKnob" sliderKnob.Size = UDim2.new(0, 14, 0, 14) sliderKnob.AnchorPoint = Vector2.new(0.5, 0.5) sliderKnob.Position = UDim2.new(0.5, 0, 0.5, 0) sliderKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255) sliderKnob.BorderSizePixel = 0 sliderKnob.Parent = sliderTrack -------------------------------------------------------------------------------- -- 2. SLIDER LOGIC -------------------------------------------------------------------------------- local isDragging = false local minVal = 0.5 local maxVal = 12.0 local function updateSlider(input) local trackAbsPos = sliderTrack.AbsolutePosition.X local trackAbsSize = sliderTrack.AbsoluteSize.X local mouseX = input.Position.X local alpha = math.clamp((mouseX - trackAbsPos) / trackAbsSize, 0, 1) sliderFill.Size = UDim2.new(alpha, 0, 1, 0) sliderKnob.Position = UDim2.new(alpha, 0, 0.5, 0) extensionMultiplier = minVal + (alpha * (maxVal - minVal)) valueLabel.Text = string.format("Reach Offset: %.1fx", extensionMultiplier) end sliderTrack.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch or input.KeyCode == Enum.KeyCode.ButtonA or input.KeyCode == Enum.KeyCode.ButtonR2 then isDragging = true updateSlider(input) end end) -------------------------------------------------------------------------------- -- 3. INPUT TRACKING & TOGGLES (KEYBOARD: SHIFT+2 | GAMEPAD: DPAD-DOWN) -------------------------------------------------------------------------------- UserInputService.InputBegan:Connect(function(input, gameProcessed) -- Toggle UI using Shift + 2 (Keyboard) OR DPadDown + Select (Gamepad) if input.KeyCode == Enum.KeyCode.Two then local isShiftHeld = UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) or UserInputService:IsKeyDown(Enum.KeyCode.RightShift) if isShiftHeld then screenGui.Enabled = not screenGui.Enabled return end elseif input.KeyCode == Enum.KeyCode.DPadDown then if UserInputService:IsKeyDown(Enum.KeyCode.ButtonSelect) then screenGui.Enabled = not screenGui.Enabled return end end if gameProcessed then return end -- Active Reach/Catch activation check (Mouse Left Click, Screen Touch, OR Gamepad R2) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch or input.KeyCode == Enum.KeyCode.ButtonR2 then isLeftClicking = true end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch or input.KeyCode == Enum.KeyCode.ButtonR2 then if isDragging then isDragging = false end isLeftClicking = false end end) UserInputService.InputChanged:Connect(function(input) if isDragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateSlider(input) end end) -------------------------------------------------------------------------------- -- 4. OPTIMIZED BALL SCANNER -------------------------------------------------------------------------------- local cachedFootball = nil local lastScanTime = 0 local SCAN_INTERVAL = 0.25 local lastBallPosition = nil local function getFootballOptimized() local currentTime = os.clock() if cachedFootball and cachedFootball:IsDescendantOf(Workspace) then return cachedFootball end if currentTime - lastScanTime < SCAN_INTERVAL then return nil end lastScanTime = currentTime cachedFootball = nil for _, obj in ipairs(Workspace:GetDescendants()) do if obj:IsA("BasePart") then local lowerName = obj.Name:lower() if lowerName == "football" or lowerName:find("getfootball") or lowerName:find("ball") then cachedFootball = obj lastBallPosition = obj.Position local conn conn = obj.AncestryChanged:Connect(function(_, parent) if not parent then cachedFootball = nil lastBallPosition = nil if conn then conn:Disconnect() end end end) break end end end return cachedFootball end -------------------------------------------------------------------------------- -- 5. RAYCAST CATCH & SHOULDER EXTENSION EXECUTION -------------------------------------------------------------------------------- local originalC0 = nil local trackedShoulder = nil local function getRightShoulder(character) local shoulder = character:FindFirstChild("Right Shoulder", true) or character:FindFirstChild("RightShoulder", true) or character:FindFirstChild("Right Upper Arm", true) if shoulder and shoulder ~= trackedShoulder then trackedShoulder = shoulder originalC0 = shoulder.C0 end return trackedShoulder end local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Include LocalPlayer.CharacterAdded:Connect(function(char) trackedShoulder = nil originalC0 = nil char:WaitForChild("Humanoid") end) RunService.RenderStepped:Connect(function() local character = LocalPlayer.Character if not character then return end local rightShoulder = getRightShoulder(character) local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Torso") if not rightShoulder or not hrp or not originalC0 then return end local football = getFootballOptimized() if football then local rightHand = character:FindFirstChild("RightHand") or character:FindFirstChild("Right Arm") or character:FindFirstChild("RightLowerArm") if lastBallPosition and rightHand then local currentBallPos = football.Position local ballTravelVector = currentBallPos - lastBallPosition if ballTravelVector.Magnitude > 0.01 then raycastParams.FilterDescendantsInstances = {character} local rayResult = Workspace:Raycast(lastBallPosition, ballTravelVector, raycastParams) local handDistance = (football.Position - rightHand.Position).Magnitude if rayResult or handDistance <= (2.5 * extensionMultiplier) then football.AssemblyLinearVelocity = Vector3.zero football.AssemblyAngularVelocity = Vector3.zero football.CFrame = rightHand.CFrame end end lastBallPosition = currentBallPos else lastBallPosition = football.Position end if isLeftClicking then local distance = (football.Position - hrp.Position).Magnitude if distance <= maxReachDistance then local ballDirection = (football.Position - hrp.Position).Unit local localDir = hrp.CFrame:VectorToObjectSpace(ballDirection) local offsetDist = 1.0 * extensionMultiplier local stretchOffset = CFrame.new(localDir.X * offsetDist, localDir.Y * offsetDist, localDir.Z * offsetDist) rightShoulder.C0 = rightShoulder.C0:Lerp(originalC0 * stretchOffset, 0.5) return end end end rightShoulder.C0 = rightShoulder.C0:Lerp(originalC0, 0.3) end)