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

Please help with String Values?

So I have a very simple question but for some reason I am having a hard time on it. I was using this script to change the Drop color of the Drop based on the BrickColorValue. Then I made a model with buttons that when you click it, it changes the BrickColorValue's Value to the color of the Button.

wait(1)
for i,v in pairs(script.Parent.Buttons:GetChildren()) do
	if v:FindFirstChild("ClickDetector") then
		v.ClickDetector.MouseClick:connect(function()
			script.Parent.Color.BrickColor = v.BrickColor
			script.Parent.Parent.Parent.DropColor.Value = v.BrickColor
		end)
	end
end

That works fine and dandy. I then wanted to add the same sorta thing, but to change the Material. I used a String Value for this but when you click on the button it doesn't change the Material at all this is the script I have so far.

wait(1)
for i,v in pairs(script.Parent.Buttons:GetChildren()) do
	if v:FindFirstChild("ClickDetector") then
		v.ClickDetector.MouseClick:connect(function()
			script.Parent.Color.Material = v.Material
			script.Parent.Parent.Parent.DropMaterial.Value = v.Material
		end)
	end
end

Can you please help me figure out the problem?

1 answer

✓ Accepted answer

The Material property of a BasePart is actually an Enum and not a string. If you want to save it in a StringValue you can use the tostring method.

 script.Parent.Parent.Parent.DropMaterial.Value = tostring(v.Material)

Example Value:

Enum.Material.Plastic


If you wanted the value to just be the name of the enum you use the match function. The pattern I used finds any letters that are at the end of the string.

 script.Parent.Parent.Parent.DropMaterial.Value = tostring(v.Material):match("%a+$")

Example Value:

Plastic

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