Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

NPC's movement script is not working or taking priority?

Asked by 6 years ago

I am working on a NPC and I have written some scripts for patrolling and some scripts for chasing a player and doing damage. But when I test it and get close to the NPC, it keeps on patrolling and not chasing me. However, it does do the damage when I get close. Please help me and thank you.

Here is my script:

local npc = script.Parent
local npcHumanoid = npc:WaitForChild("Humanoid")
local PointA = game.Workspace.PointA
local PointB = game.Workspace.PointB

npcHumanoid:MoveTo(PointA.Position)

PointA.Touched:Connect(function(hit)
    if hit.Parent.Name == "NPC" then
        npcHumanoid:MoveTo(PointB.Position)
    end
end)

PointB.Touched:Connect(function(hit)
    if hit.Parent.Name == "NPC" then
        npcHumanoid:MoveTo(PointA.Position)
    end
end)


function findNearestTorso(position)
    local list = game.Workspace:GetChildren()
    local torso = nil
    local humanoid = nil
    local distance = 1000
    local temp = nil
    local temp2 = nil
    local damage = 20
    local check = script.Parent.Check

    for i = 1, #list do
        temp2 = list[i] 
        if temp2.className == "Model" and temp2 ~= script.Parent then 
            temp = temp2:FindFirstChild("Torso") 
            humanoid = temp2:FindFirstChild("Humanoid") 
            if temp and humanoid and humanoid.Health > 0 then 
                if (temp.Position - position).magnitude < distance then
                    torso = temp 
                    distance = (temp.Position - position).magnitude
                end
            end
        end
    end

    if distance <= 4 then 
        humanoid:TakeDamage(damage)
    end
end


while true do
    wait(1)
    local target = findNearestTorso(script.Parent.Torso.Position)
    if target then
        script.Parent.Humanoid:MoveTo(target.Position, target)
    end
end

Answer this question