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

Using an if statement and for loop doesn't work when comparing?

I want the for loop to list through all of the items in a model, then for the if statement to check whether that is there. If it is, it will print "Hello". However, the two aren't comparing correctly using the if statement. Here is my code:

local player = game.Players.LocalPlayer.Name
local frame = script.Parent.Frame
local tool = game.Lighting.Crisps

for i,v in pairs(frame:GetChildren()) do
	frame:TweenPosition(UDim2.new(0.113, 0,0.141, 0))
	v.MouseButton1Click:Connect(function()
	local flavour = v
	print(flavour)
		for i,v in pairs(tool:GetChildren()) do
			if v.Name == flavour then
				print("Hello")				
			end
		end		
	end)
end

1 answer

✓ Accepted answer

On line 8, you are setting flavour to be equal to v, which is at the time the Instance that the for loop is on.

Let's assume that this Instance is a TextButton. You are setting flavour to an object value, not a string value.

On line 11, you're comparing a string value to an object value.

To fix it, just add a ".Name" to the end of "flavour" on line 11.

local player = game.Players.LocalPlayer.Name
local frame = script.Parent.Frame
local tool = game.Lighting.Crisps

for i,v in pairs(frame:GetChildren()) do
    frame:TweenPosition(UDim2.new(0.113, 0,0.141, 0))
    v.MouseButton1Click:Connect(function()
    local flavour = v
    print(flavour)
        for i,v in pairs(tool:GetChildren()) do
            if v.Name == flavour.Name then
                print("Hello")              
            end
        end     
    end)
end

1 comment

1

Ah, thanks for the answer and the added explanation. That makes sense as to why it didn't work now.

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