checkToys.OnClientEvent:Connect(function(...)
local toysModule = require(replicatedStorage.Toys)
local tuple = {...}
inner:FindFirstChild('Teddy Bear').Quantity.Text = tuple[1]
inner['Teddy Bear'].Price.Text = '$' .. toysModule.Selling['Teddy Bear']
if tuple[1] > 0 then
inner['Teddy Bear'].ImageColor3 = Color3.fromRGB(210, 50, 50)
else
inner['Teddy Bear'].ImageColor3 = Color3.fromRGB(150, 150, 150)
end
inner:FindFirstChild('Ball').Quantity.Text = tuple[2]
inner['Ball'].Price.Text = '$' .. toysModule.Selling['Ball']
if tuple[2] > 0 then
inner['Ball'].ImageColor3 = Color3.fromRGB(210, 50, 50)
else
inner['Ball'].ImageColor3 = Color3.fromRGB(150, 150, 150)
end
inner:FindFirstChild('Yo-Yo').Quantity.Text = tuple[3]
inner['Yo-Yo'].Price.Text = '$' .. toysModule.Selling['Yo-Yo']
if tuple[3] > 0 then
inner['Yo-Yo'].ImageColor3 = Color3.fromRGB(210, 50, 50)
else
inner['Yo-Yo'].ImageColor3 = Color3.fromRGB(150, 150, 150)
end
inner:FindFirstChild('Slinky').Quantity.Text = tuple[4]
inner['Slinky'].Price.Text = '$' .. toysModule.Selling['Slinky']
if tuple[4] > 0 then
inner['Slinky'].ImageColor3 = Color3.fromRGB(210, 50, 50)
else
inner['Slinky'].ImageColor3 = Color3.fromRGB(150, 150, 150)
end
end)
I currently have this script, which looks very ‘ugly’ and is hard to read at most times. Basically when an event fires it should show how much of each toy a player has (being the tuple) but the problem is I have to go through every single toy and set the corresponding tuple to it. Is there a way I can do this using tables or for loops somehow?
Typically when you have a bunch of repeated code like this it is a good clue that you should be using a function. You are doing the same thing for each toy, so you can make a function that takes a toyName and count and then updates the Gui for that toy.
e.g
function updateToyCount(toyName, newCount)
local toyGui = inner:FindFirstChild(toyName)
if toyGui then
toyGui.Quantity.Text = newCount
toyGui.Price.Text = '$' .. toysModule.Selling[toyName]
if newCount > 0 then
toyGui.ImageColor3 = Color3.fromRGB(210, 50, 50)
else
toyGui.ImageColor3 = Color3.fromRGB(150, 150, 150)
end
end
end
checkToys.OnClientEvent:Connect(function(...)
local toysModule = require(replicatedStorage.Toys)
local tuple = {...}
updateToyCount('Teddy Bear', tuple[1])
updateToyCount('Ball', tuple[2])
--- ect.
end)
Another good practice is using local variables to decrease the amount of overly verbose statements. For example in the code above I use toyGui instead of inner[‘Toy name here’] again and again. This makes it easier to read and modify in the future.
5 Likes
You can also turn:
if newCount > 0 then
toyGui.ImageColor3 = Color3.fromRGB(210, 50, 50)
else
toyGui.ImageColor3 = Color3.fromRGB(150, 150, 150)
end
to:
toyGui.ImageColor3 = newCount > 0 and Color3.fromRGB(210, 50, 50) or Color3.fromRGB(150, 150, 150)
2 Likes
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.