local FoundPart = player.Character:FindFirstAncestorOfClass("Part").Name
if FoundPart == "Ring" then
warn(FoundPart)
end
This script in ServerScriptService
and the error --attempt to index nil with ‘Name’
local FoundPart = player.Character:FindFirstAncestorOfClass("Part").Name
if FoundPart == "Ring" then
warn(FoundPart)
end
This script in ServerScriptService
and the error --attempt to index nil with ‘Name’
It means that :FindFirstAncestorOfClass("Part")
function couldn’t find an ancestor with ClassName
property set to Part
so it returned nil
and rest of the line turned into nil.Name
.
Unless you’re checking for any 3D part (which in that case you should switch :FindFirstAncestorOfClass("Part")
with :FindFirstAncestorWhichIsA("BasePart")
) you should check if :FindFirstAncestorOfClass("Part")
is returning nil
or not.
so how will it be. Can you send a sample if possible?
What are you trying to achieve here?
Sure here is 2 examples for each case:
nil
check with :FindFirstAncestorOfClass("Part")
to check for an instance with ClassName
“Part”:
local FoundPart = player.Character:FindFirstAncestorOfClass("Part")
if FoundPart ~= nil and FoundPart.Name == "Ring" then
warn(FoundPart)
end
nil
check with :FindFirstAncestorWhichIsA("BasePart")
to check for an instance which is a 3D rendered object:
local FoundPart = player.Character:FindFirstAncestorWhichIsA("BasePart")
if FoundPart ~= nil and FoundPart.Name == "Ring" then
warn(FoundPart)
end
Reminder that :FindFirstAncestorOfClass("Part")
only checks for an instance with ClassName
property set to “Part” which only includes parts that are either blocks, balls or cylinders like you see on studio toolbar when creating a new part.
:FindFirstAncestorWhichIsA("BasePart")
checks for any instance that is a 3D part which alongside with parts also includes meshparts, wedges, cornerwedges, unions and negativeparts.
Would you try it yourself if possible?because can’t detect
I just realized something that you’re trying to find an ancestor of player’s character model that is a “Part” which makes a lot more sense why this code doesn’t work for you now.
That will always return nil
because player’s character model is parented to Workspace
which is a service and parented to datamodel itself and neither of them are parts.
I have question for you. Are you trying to find a descendant that is named “Ring” instead of ancestor?
yes it is cloned into “player.Character”
Then you should just use :FindFirstChild("Ring", true)
instead:
local FoundPart = player.Character:FindFirstChild("Ring", true)
if FoundPart ~= nil then
warn(FoundPart)
end
but ring is meshpart. Would it be a problem?
No because :FindFirstChild("Ring", true)
tries to find a part that is named “Ring” that is a descendant, it doesn’t care about classes.