Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How to create a loop to check if a part name already exists?

How do you check if a part name exists already? Like how would you create a loop that would constantly run until it finds a part with the name that I want already, but then it checks again if the name I want to change the part to also exists without hardcoding a loop like 50 times. I keep trying to logic through this but then I get stumped and im back to square one.

--What i'm trying to do

local part = Instance.new("Part", game.Workspace) 			--Part we will be checking to see if it exists
part.Name = "IAmAPart"										--The parts name
	
local anotherPart = Instance.new("Part", game.Workspace)	--The other part that will also have the same name
anotherPart.Name = "IAmAPart"								--This new part is also named the same as the first part we created in the beginning of the script

for i,v in ipairs(game.Workspace:GetChildren()) do			--Iterate through all the parts in the workspace
	if v:IsA("BasePart") then
		if v.Name == part.Name then							--Hey, these two parts have the same name!
			part.Name = "IAmAnotherPart"					--No more name conflicts! Huzzah!
		end
	end
end

But what if something like this happens...

--What i'm trying to do

local part = Instance.new("Part", game.Workspace) 			--Part we will be checking to see if it exists
part.Name = "IAmAPart"										--The parts name
	
local anotherPart = Instance.new("Part", game.Workspace)	--The other part that will also have the same name
anotherPart.Name = "IAmAPart"								--This new part is also named the same as the first part we created in the beginning of the script

local theThirdWheel = Instance.new("Part", game.Workspace)	--Oh wait, another part?
theThirdWheel.Name = "IAmAnotherPart"						--But its named what I want to change the first one to...

for i,v in ipairs(game.Workspace:GetChildren()) do			--Iterate through all the parts in the workspace
	if v:IsA("BasePart") then
		if v.Name == part.Name then									--Hey, these two parts have the same name!
			part.Name = "IAmAnotherPart"							--This will clear up the naming conflict with the first two parts, but now the first and third have a naming conflict!
			for a,b in ipairs(game.Workspace:GetChildren()) do		--So how can I have it iterate through the loops again without doing this again?
				if b.Name == part.Name then
					--More loops blah blah
				end
			end
		end
	end
end

1 answer

✓ Accepted answer

You would have that script while defining the part. To elaborate:

local part = Instance.new("Part")
part.Parent = workspace
part.Name = "IAmAPart"

local anotherPart = Instance.new("Part")
anotherPart.Parent = workspace
if workspace:FindFirstChild("IAmAPart") then 
anotherPart.Name = "IAmAnotherPart"
else
anotherPart.Name = "IAmAPart"
end


1 comment

0

I feel so dumb right now

This discussion is preserved as it was. New answers, comments, and votes are closed.