So im making a game and im making the inventory system depending on how many items there are on the items folder and their type, and i want that the buttons shown up in the inventory are group color coded, like first i want the type 1 item buttonss then the type 2 item buttons and so on. But im struggling to make it so ill be very grateful if you guys help me with it.
Here is the code:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local items = ReplicatedStorage:WaitForChild("Items")
local itemsTable = items:GetChildren()
local itemsTableName = {}
local InventoryStuff = script.Parent.InventoryStuff
local ButtonScript = script.PlaceItem
local Y = 0
local CurrentPosY = UDim.new(0, Y)
local PosX = UDim.new(0.034, 0)
local size = UDim2.new(0.9, 0, 0, 50)
local addY = 100
local function GetColorButton(ItemType)
local ButtonColor = nil
if ItemType == 1 then
ButtonColor = Color3.fromRGB(170, 255, 255)
elseif ItemType == 2 then
ButtonColor = Color3.fromRGB(255, 255, 127)
elseif ItemType == 3 then
ButtonColor = Color3.fromRGB(255, 0, 0)
elseif ItemType == 4 then
ButtonColor = Color3.fromRGB(255, 170, 0)
end
return ButtonColor
end
local function CreateButton(Name, ItemType)
local GuiButton = Instance.new("TextButton")
local Round = Instance.new("UICorner", GuiButton)
local ButtonColor = GetColorButton(ItemType)
GuiButton.Text = Name
GuiButton.TextScaled = true
GuiButton.Name = Name
GuiButton.Size = size
GuiButton.Position = UDim2.new(0.034,0,0, Y)
GuiButton.BackgroundColor3 = ButtonColor
Y += addY
GuiButton.Parent = InventoryStuff
end
for i = 1, # itemsTable do
itemsTableName[itemsTable[i].Name] = itemsTable[i].Type.Value
end
print(table.concat(itemsTableName, ", "))
table.sort(itemsTableName, function(a,b)
return a < b
end)
print(table.concat(itemsTableName, ", "))
table.foreach(itemsTableName, function(key,value)
local CurrenItemName = key
local CurrentItem = items:FindFirstChild(CurrenItemName)
local ItemType = CurrentItem:FindFirstChild("Type")
if not ItemType then
warn("no item type")
end
CreateButton(CurrenItemName, ItemType.Value)
end)
for i = 1, #InventoryStuff:GetChildren() do
local Buttons = InventoryStuff:GetChildren()
ButtonScriptClone = ButtonScript:Clone()
ButtonScriptClone.Parent = Buttons[i]
ButtonScriptClone.Disabled = false
end
