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

Why is this magnitude script not working?

Asked by 8 years ago

I basically made a flamethrower, and I wanted anything near a brick that has fire in it, damage something that is near it, making it seem real. However, it's not returning the humanoid in the findNearestTorso() function, and now I'm stuck! I need help with why it's not returning the humanoid. Here's the Error: 22:37:57.897 - Players.Player.Backpack.Flamethrower.Gun_Control:27: bad argument #2 to '?' (Vector3 expected, got nil) 22:37:57.898 - Script 'Players.Player.Backpack.Flamethrower.Gun_Control', Line 27 - global findNearestTorso 22:37:57.900 - Script 'Players.Player.Backpack.Flamethrower.Gun_Control', Line 55 - global MouseDown 22:37:57.901 - Script 'Players.Player.Backpack.Flamethrower.Gun_Control', Line 79 22:37:57.901 - Stack End

function findNearestTorso(pos)
    local list = game.Workspace:GetChildren()
    local torso = nil
    local dist = 5
    local temp = nil
    local human = nil
    local temp2 = nil
    for x = 1, #list do
        temp2 = list[x]
        if (temp2.className == "Model") and (temp2 ~= script.Parent) and (temp2.Name == "LMADer") or (temp2.Name == "Vaktus") or (temp2.Name == "BC") then
            temp = temp2:findFirstChild("Head")
            human = temp2:findFirstChild("Humanoid")
            local player = game.Players:GetPlayerFromCharacter(temp2)
            if (temp ~= nil) and (human ~= nil) and (human.Health > 0) and not player then
                if (temp.Position - pos).magnitude < dist then
                    torso = temp
                    dist = (temp.Position - pos).magnitude
                end
            elseif (temp ~= nil) and (human ~= nil) and (human.Health > 0) and player.TeamColor ~= BrickColor.new("Bright blue") then
                if (temp.Position - pos).magnitude < dist then
                    torso = temp
                    dist = (temp.Position - pos).magnitude
                end
            end
        end
    end
    return human
end

MouseDown = function(mouse)
    local creator = Instance.new("ObjectValue")
    local plr = game.Players:GetPlayerFromCharacter(script.Parent.Parent)
    creator.Value = plr
    mousedown = true
    if not firing then
        while mousedown do
        wait(1)
        firing = true
        fire1.Enabled = true
        fire2.Enabled = true
        fire3.Enabled = true
        local hum = findNearestTorso(c1.Position)
        creator.Parent = findNearestTorso()
        findNearestTorso():TakeDamage(5)
    end
    firing = false
    end
end

Answer this question