-- The Keybind is B -- Please checkout edit the "Settings" to your liking local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local localPlayer = Players.LocalPlayer local character = localPlayer.Character or localPlayer.CharacterAdded:Wait() local hrp = character:WaitForChild("HumanoidRootPart") --[[SETTINGS]]-- local followEnabled = false -- automatically on or off when executed local currentDistance = 2.5 --studs infront of the player local adjustedDistance = 4 --W.I.P local backwardTimer = 0 --W.I.P local lastPosition = nil local speed = 8 -- Higher = faster follow local function getClosestPlayer() local closest = nil local shortestDist = math.huge for _, player in pairs(Players:GetPlayers()) do if player ~= localPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then local targetHRP = player.Character.HumanoidRootPart local dist = (hrp.Position - targetHRP.Position).Magnitude if dist < shortestDist then shortestDist = dist closest = targetHRP end end end return closest end RunService.RenderStepped:Connect(function(dt) if not followEnabled then return end local targetHRP = getClosestPlayer() if not targetHRP then return end local targetPos = targetHRP.Position local lookVector = targetHRP.CFrame.LookVector local goalOffset = lookVector * currentDistance local goalPos = targetPos + goalOffset goalPos = Vector3.new(goalPos.X, hrp.Position.Y, goalPos.Z) if lastPosition then local movementDir = (hrp.Position - lastPosition) if movementDir.Magnitude > 0.01 then movementDir = movementDir.Unit local facingDir = hrp.CFrame.LookVector local dot = movementDir:Dot(-facingDir) if dot > 0.7 then -- strongly backwards backwardTimer += dt if backwardTimer > 0.5 then currentDistance = adjustedDistance end else backwardTimer = 0 currentDistance = 2.5 end end end lastPosition = hrp.Position -- 💨 Smooth follow + face the player local current = character:GetPivot() local newPos = current.Position:Lerp(goalPos, dt * speed) character:PivotTo(CFrame.lookAt(newPos, targetPos)) end) -- 🎛 Toggle on/off with B UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.B then followEnabled = not followEnabled if followEnabled then print("🟢 Auto Guard ON") else print("🔴 Auto Guard OFF") end end end)