
Key Required

-- 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)
Script is bad
@Cursedpryaa can you tell me the problem? so i can make a better version? I always advocate that if you think that you can make it better yourself then go for it.
make it so u jump then the shoot/pass the ball not tp to them