local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") -- Added for input detection local LocalPlayer = Players.LocalPlayer local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local HRP = Character:WaitForChild("HumanoidRootPart") -- Toggle variable local isStickyEnabled = false -- Semi-legit nudge settings local balanceRadius = 2.85 -- moderate radius for detection local verticalRangeMin = 0.75 -- vertical range to activate correction local verticalRangeMax = 1.00 local correctionSpeed = 0.50 -- noticeable but smooth nudge -- Listen for the Left Bumper press UserInputService.InputBegan:Connect(function(input, gameProcessed) -- Prevents toggling if you are typing in chat if gameProcessed then return end if input.KeyCode == Enum.KeyCode.ButtonL1 then isStickyEnabled = not isStickyEnabled print("Sticky Nudge Status: " .. (isStickyEnabled and "ON" or "OFF")) end end) local function findClosestHead() local closestHead = nil local shortestDistance = math.huge for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("Head") then local head = player.Character.Head local distance = (head.Position - HRP.Position).Magnitude if distance < balanceRadius and distance < shortestDistance then shortestDistance = distance closestHead = head end end end return closestHead end RunService.Heartbeat:Connect(function() -- Only run the logic if the toggle is ON if not isStickyEnabled then return end local head = findClosestHead() if head then local verticalDiff = HRP.Position.Y - head.Position.Y if verticalDiff > verticalRangeMin and verticalDiff < verticalRangeMax then local targetPos = Vector3.new( head.Position.X + (math.random() - 0.5) * 0.15, -- slightly bigger random offset X HRP.Position.Y, head.Position.Z + (math.random() - 0.5) * 0.15 -- slightly bigger random offset Z ) local newPos = HRP.Position:Lerp(targetPos, correctionSpeed) HRP.CFrame = CFrame.new(newPos, newPos + HRP.CFrame.LookVector) end end end)