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.