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

Help With 'Find Torso' and certain players?

Asked by
Scootakip 299 Moderation Voter
8 years ago
while true do
wait(0.1)
local target = findNearestTorso(script.Parent.Torso.Position)
if target ~=nil then
if target.Parent.Name ~= script.Parent.Owner.Value then
script.Parent.Zombie:MoveTo(target.Position, target)
end
end
end

This is part of a Zombie script. I made this script work so that it won't attack the closest player if it's the creator of the zombie. It works well except that it doesn't work the way I need it to and I don't know how to fix it.

Basically, it always locks on the check if the closest player is the owner, and if the closest player is the owner it doesn't attack it. It'll only attack another player as long as that player is closer than the owner. I'd like to fix it so that it'll go for the second closest player if the closest player is the owner. Can someone help me fix it so that it does what it needs to do?

0
Can you provide your findNearestTorso function's sourcecode, please? Goulstem 8144 — 8y

1 answer

Log in to vote
1
Answered by
1waffle1 2908 Trusted Badge of Merit Moderation Voter Community Moderator
8 years ago

The problem is in the findNearestTorso function that you didn't post. The owner is the nearest torso, so you're telling it to do nothing if the owner is the nearest torso, not find the nearest torso that isn't the owner. Here's a solution.

while wait(.1)do
    local dist,target=math.huge
    for _,v in pairs(game.Players:GetPlayers())do
        if v.Name~=script.Parent.Owner.Value then
            local success,torso=pcall(function()
                return v.Character.Humanoid.Health>0 and v.Character.Torso
            end)
            if success and torso then
                local d=(torso.Position-script.Parent.Torso.Position).magnitude
                if dist>d then
                    dist,target=d,torso
                end
            end
        end
    end
    if target then
        script.Parent.Zombie:MoveTo(target.Position,target)
    end
end
Ad

Answer this question