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