You need to use an pairs loop for it. Pairs loop will help you to do the job for making instances in a table a loop! For example:
- Making a model's every children CanCollide false
- Name every brick in the workspace to "Hello"
- More......
For how to use it, heres an example:
for index, instance in pairs(workspace:GetChildren()) do
print(index)
print(instance.Name)
end
Lets explain first from the first line:
the first word, for is a template of pairs loop, you must type it in
the second word, index, what's index? It's how many times the pairs loop looped through in a table! For example, there is two parts on the workspace that are both named Part, it WILL print this when you play test it:
1
Part
2
Part
What about 10 parts on the workspace that are all named Cheese? Well they result in the same logic:
1
Cheese
2
Cheese
3
Cheese
4
Cheese
5
Cheese
6
Cheese
7
Cheese
8
Cheese
9
Cheese
10
Cheese
Is index important? It depends on the situation, well in this situation, we won't use it
You can directly ignores the index, you will never let him have a name, and you cannot index it! That helps you clean for a bit and more choices of keywords in the same function.
for _, instance in pairs(workspace:GetChildren()) do
print(_)
print(instance.Name)
end
Now for the third keyword, instance, is the instance that the pairs loop is looping on! It's pretty self explanatory from the example here
Now for the third keyword, instance, is the instance that the pairs loop is looping on! It's pretty self explanatory from the example above
Is instance ok to be ignored? Yes, it won't give an error, but it totally ruins the point of pairing since you CAN also do the same thing with for loop. I won't give an example here, but just don't ignore the instance.
You also can change the name of index and instance, you can name any of them dasojkads or afcvifjasjfas, they don't matter as long as YOU DON'T OVERLAP THE SAME VARIABLE NAME, also don't name them random words, that doesn't help you lol
What about the thing inside the pairs loop bracket?
If you are confused, the code inside the pairs loop bracket is workspace:GetChildren(), which you can find a tutorial here; or something longer, https://developer.roblox.com/en-us/api-reference/function/Instance/GetChildren
if you are really scared to go to these links, search it on google about GetChildren and the first result is the same thing of what I gave.
GetChildren returns table (or array, i find array confusing since it's a staff name from some games, so i will use table on the rest of the topic), also you can only put tables inside the bracket
and the rest are template codes
In your situation, you need to collide false an entire model, which need pairs loop:
for _, instance in pairs(model:GetChildren()) do
instance.CanCollide = false
end
What's is the instance? Look at the place where i explain it
Anyway, that's a long topic but skipping to the point: heres the script and it's logic
local tool = script.Parent
local part = tool:WaitForChild("Handle")
tool.Equipped:Connect(function()
for _, instance in pairs(part.Parent:GetChildren()) do
instance.CanCollide = false
end
print("Equipped and removed collisions!")
end)
tool.Unequipped:Connect(function()
for _, instance in pairs(part.Parent:GetChildren()) do
instance.CanCollide = true
end
print("Equipped and added collisions!")
end)
if you really read the explanation you might understand a little, check back soon or bookmark this page if you think it's very hard and really confusing, maybe you will understand someday
bye!!
1 comment
I changed my script, sorry for the bug, I didnt realise that