So I have a script, and I copied the pathfind script that follows it's enemy. And if it sees it's enemy it's gonna stop itself from walking to the target.
Well, that's what I want it to do, but it doesn't work.
Script (not full script):
local ray1 = Ray.new(script.Parent.M16.Shoot.Position, (v.HumanoidRootPart.Position - script.Parent.M16.Shoot.Position).Unit * 1000)
local hit1, position1 = workspace:FindPartOnRayWithIgnoreList(ray1, {script.Parent})
if not hit1:IsDescendantOf(v) then
local Destination = v.HumanoidRootPart.Position
local Path = PathfindingService:CreatePath()
local NPC = script.Parent
local Humanoid = NPC.Humanoid
Path:ComputeAsync(NPC.PrimaryPart.Position, Destination)
local activeCoroutine = nil
local follow=true
-- Loop update
coroutine.wrap(function()
while (follow) do
if hit1:IsDescendantOf(v) then follow = false break end
wait(1/3)
update()
end
end)()
function update()
if script.Parent.Humanoid.Health ~= 0 then
Path:ComputeAsync(NPC.PrimaryPart.Position, Destination)
end
local Waypoints = Path:GetWaypoints()
table.remove(Waypoints, 1) -- First waypoint seems to always be origin
coroutine.wrap(followPath)(Waypoints) -- Follow new path
if hit1:IsDescendantOf(v) then return end
end
function followPath(waypoints)
activeCoroutine = coroutine.running()
if hit1:IsDescendantOf(v) then return end
if hit1:IsDescendantOf(v) then coroutine.close(activeCoroutine) end
for _, point in ipairs(waypoints) do
if hit1:IsDescendantOf(v) then break end
if activeCoroutine~=coroutine.running() then
return end -- No longer active path
Humanoid:MoveTo(point.Position)
Humanoid.MoveToFinished:Wait()
if point.Action==Enum.PathWaypointAction.Jump then
Humanoid.Jump = true
end
end
end
end
Please help
