New: Nitro Boost our Discord server and receive full donation perks here on the website! Join the Scripting Helpers Discord Server to learn more! You can also Support on Patreon as always.
Still have questions? Join our Discord server and get real time help.
1

How do I fix this script that checks if there is an item in a model?

Teeter11 271
5 years ago

So I am making something that requires access to a model in the players camera. BUT there is multiple items in the characters camera and they are added without a name and I CANT CHANGE THAT!! So I made a script that checks if there is a torso in the model but I get this annoying error.

Things to note : *This is in a localscript

Here is my code:

wait(1)

while wait() do
if script.Parent.WHat.LeopardFedora.Value == true then
camitems = game.Workspace.CurrentCamera:GetChildren()
for i = 1,#camitems do
if camitems[i].Torso ~= nil then -- LINE 7
camitems[i].LeopardFedora.Transparency = 0
if script.Parent.WHat.LeopardFedora.Value == false then
camitems[i].LeopardFedora.Transparency = 1
end
end
end
end
end



ERROR : 01:35:41.857 - Torso is not a valid member of Model 01:35:41.857 - Script 'Players.Player.PlayerGui.Main.GiveWearHat', Line 7 01:35:41.858 - Stack End

Thanks if you can help!

1
Perci1 4928
5 years ago

Well I can't think of any situation that would prevent you from changing the Model's name, but your problem is

camitems[i].Torso


You're trying to check if a Torso exists, but you're already assuming it exists! camitems[i].Torso is trying to access the Torso. You don't even make it to the comparison. When you use a dot, you're making a statement. "Go to camitems[i].Torso, now." It's very direct, like an order. If it doesn't exist, however, the code can not complete your order and throws an error.

What you need is the FindFirstChild() method. It's advantage comes from the fact that it's in method form, so instead of throwing an error if the child doesn't exist, it just returns nil. Instead of, "Go get this!" you're saying something more like, "Alright, go look for this child. If he exists, bring him to me, otherwise bring me nothing."

Just remember that FindFIrstChild() will return nil at times, so it's only useful with an if statement or some other condition.

if camitems[i]:FindFirstChild("Torso") then
--Equivalent to 'if camitems[i]:FindFirstChild("Torso") ~= nil then'. Just quicker.

0
thanks Teeter11 271 — 5y