Why is it detecting the local script still?

Cant get a good title for this but

for i, v in ipairs(GunGui:GetChildren()) do
	if v.ClassName == "TextButton" or "ImageButton" then
			GuiClicked(v, v.Gun.Value)

even with the if v.ClassName, it somehow still fires it with the local script thats in the gui
Not sure why this is happening

You have to put v.ClassName again, so it would be this:

if v.ClassName == "TextButton" or v.ClassName == "ImageButton" then

oh, i thought i could just add it on