My script didn't work properly and i don't know why. This is my script.
local ItemId = script.Parent.ItemId local ItemName = script.Parent.ItemName.Value local ItemType = script.Parent.ItemType.Value local ItemValue = script.Parent.ItemValue.Value ItemId.Changed:Connect(function(plr) if ItemId.Value == 1 then ItemName = "Katana" ItemType = "Sword" ItemValue = "n/a" end end)
ItemName, ItemType and ItemValue are StringValues. ItemId is IntValue. Output don't show me any errors.
I think I know what's going on here.
local ItemName = script.Parent.ItemName.Value local ItemType = script.Parent.ItemType.Value local ItemValue = script.Parent.ItemValue.Value
These three lines appear the be the reason this isn't working properly.
You seem like you want to set the variables ItemName, ItemType, and ItemValue to the Value property of the Values, so you can access these values quicker and type less.
What you're actually doing is setting these variables to the value of those values.
Let's assume the following:
ItemName.Value = "Weapon" ItemType.Value = "Gun" ItemValue.Value = 5
You're setting ItemName, ItemType, and ItemValue to be equal to "Weapon", "Gun", and 5, respectively.
You're referencing Values when using these variables, not Instances.
Here's the revised version of the script.
local ItemId = script.Parent.ItemId local ItemName = script.Parent.ItemName local ItemType = script.Parent.ItemType local ItemValue = script.Parent.ItemValue ItemId.Changed:Connect(function(plr) if ItemId.Value == 1 then ItemName.Value = "Katana" ItemType.Value = "Sword" ItemValue.Value = "n/a" end end)
Also, you put "plr" as a parameter for the .Changed listener. The .Changed event, when fired, returns the property that was changed, not a player.