Full script:
local d = false
local maxDistance = 250
local PathfindingService = game:GetService("PathfindingService")
while wait() do
local nearestCharacter, nearestDistance
for i, v in pairs(workspace:GetChildren()) do
if v:FindFirstChild("Humanoid") and v:FindFirstChild("HumanoidRootPart") and v ~= script.Parent and v.Name ~= script.Parent.Name and v.Humanoid.Health > 0 then
character = v
local distance = (script.Parent.HumanoidRootPart.Position - v.HumanoidRootPart.Position).magnitude
if not character or distance > maxDistance or (nearestDistance and distance >= nearestDistance)
then
continue
end
nearestDistance = distance
nearestCharacter = v
local path = PathfindingService:CreatePath()
path:ComputeAsync(script.Parent.PrimaryPart.Position, nearestCharacter.PrimaryPart.Position)
local waypoints = path:GetWaypoints()
for i, waypoint in pairs(waypoints) do
if waypoint.Action == Enum.PathWaypointAction.Jump then
script.Parent.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
script.Parent.Humanoid:MoveTo(waypoint.Position)
script.Parent.Humanoid.MoveToFinished:Wait(1)
if (script.Parent.HumanoidRootPart.Position - nearestCharacter.HumanoidRootPart.Position).magnitude < 6 then
if not d then
d = true
nearestCharacter.Humanoid:TakeDamage(10)
script.Parent.Humanoid:MoveTo(script.Parent.HumanoidRootPart.Position)
wait(1.5)
d = false
end
end
end
if (script.Parent.HumanoidRootPart.Position - nearestCharacter.HumanoidRootPart.Position).magnitude < 6 then
if not d then
d = true
nearestCharacter.Humanoid:TakeDamage(10)
script.Parent.Humanoid:MoveTo(script.Parent.HumanoidRootPart.Position)
wait(1.5)
d = false
end
end
end
end
if script.Parent.Humanoid.Health == 0 then
break
end
end
script.Parent.FollowAndAttack:Destroy()
Where I think the problem is:
local path = PathfindingService:CreatePath()
path:ComputeAsync(script.Parent.PrimaryPart.Position, nearestCharacter.PrimaryPart.Position)
local waypoints = path:GetWaypoints()
for i, waypoint in pairs(waypoints) do
if waypoint.Action == Enum.PathWaypointAction.Jump then
script.Parent.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
script.Parent.Humanoid:MoveTo(waypoint.Position)
script.Parent.Humanoid.MoveToFinished:Wait(1)
if (script.Parent.HumanoidRootPart.Position - nearestCharacter.HumanoidRootPart.Position).magnitude < 6 then
if not d then
d = true
nearestCharacter.Humanoid:TakeDamage(10)
script.Parent.Humanoid:MoveTo(script.Parent.HumanoidRootPart.Position)
wait(1.5)
d = false
end
end
end
Tried putting that code in a loop but it didn't work, please help me.
