Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

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

Asked by 5 years ago

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:

01local player = game.Players.LocalPlayer.Name
02local frame = script.Parent.Frame
03local tool = game.Lighting.Crisps
04 
05for i,v in pairs(frame:GetChildren()) do
06    frame:TweenPosition(UDim2.new(0.113, 0,0.141, 0))
07    v.MouseButton1Click:Connect(function()
08    local flavour = v
09    print(flavour)
10        for i,v in pairs(tool:GetChildren()) do
11            if v.Name == flavour then
12                print("Hello")             
13            end
14        end    
15    end)
16end

1 answer

Log in to vote
0
Answered by
Unhumanly 152
5 years ago
Edited 5 years ago

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.

01local player = game.Players.LocalPlayer.Name
02local frame = script.Parent.Frame
03local tool = game.Lighting.Crisps
04 
05for i,v in pairs(frame:GetChildren()) do
06    frame:TweenPosition(UDim2.new(0.113, 0,0.141, 0))
07    v.MouseButton1Click:Connect(function()
08    local flavour = v
09    print(flavour)
10        for i,v in pairs(tool:GetChildren()) do
11            if v.Name == flavour.Name then
12                print("Hello")             
13            end
14        end    
15    end)
16end
1
Ah, thanks for the answer and the added explanation. That makes sense as to why it didn't work now. RyanTheLion911 195 — 5y
Ad

Answer this question