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

Why does the for loop think the workspace stays the same?

Asked by 1 year ago

The for loop in this code prints the same set of items from the workspace even when different items are added or when the items are removed.

The code takes all of the parts attached to the handle and all of the parts attached to those and so on and puts them under the tool, this only happens with parts initially attached and not to parts attached after the game has loaded.

--on click: check all parts
--check if parts are anchored
--check if part is locked
--check if part is welded to handle either directly or remoteley
--if all is true put it under the tool
local Tool = script.Parent
local Handle = script.Parent.Handle

function CheckWelded(part)

    for _,i in pairs(game.Workspace:GetChildren())do
        if i.ClassName == "Part" then
            print("part")
            if i.Anchored == false then
                print("anchor")
                if i.Locked == false then
                    print("lock")
                    if i:FindFirstChild("Weld") then
                        print ("weld?")
                        print (i.Weld.Part1)
                        if i.Weld.Part1 == part then
                            print ("welded")
                            i.Parent = script.Parent
                        CheckWelded(i)
                        end
                    end
                    end
                    end
        end
    end
end

Handle.ClickDetector.MouseClick:Connect(function()
    CheckWelded(script.Parent.Handle)
end)

Answer this question