I have a script that checks leaderboard stats and fills up to 8 slots with their appropriate icons, however, the script only seems to be able to delete icons properly about half of the time. It's a very sloppy setup but other than deletion problems it's served me well.
This is a module script in ReplicatedStorage
Deletion lines start at line 20, and everything else in the script works perfectly fine.
demonstration video: https://streamable.com/9w8fds
local module = { SortInventory = function(player) wait(0.1) print("sort activated") local leaderstats = player.leaderstats local supplies = leaderstats.Supplies.Value local tactical = leaderstats.Tactical.Value local initiative = leaderstats.Initiative.Value local research = leaderstats.Research.Value local slotsUsed = supplies + tactical + initiative + research local inventory = player.PlayerGui.Inventory.InventoryFrame if slotsUsed > 8 then --idk lol end local slots = {inventory.Slot1, inventory.Slot2, inventory.Slot3, inventory.Slot4, inventory.Slot5, inventory.Slot6, inventory.Slot7, inventory.Slot8} for index = 1, #slots do print("delete") for i,index in pairs(slots[index]:GetChildren()) do index:Destroy() end local slots = {inventory.Slot1, inventory.Slot2, inventory.Slot3, inventory.Slot4, inventory.Slot5, inventory.Slot6, inventory.Slot7, inventory.Slot8} for index = 1, #slots do slots[index]:ClearAllChildren() slots[index]:ClearAllChildren() end end local debounce = 0 local sorter local slotsRemoved = 0 print(slotsRemoved.. "slots removed3") while slotsUsed > slotsRemoved do print("while do passed") wait(0.05) while supplies > slotsRemoved do print(slotsUsed.. "slots used") print(slotsRemoved.. "slots removed") print("supply add icon check passed") sorter = game.ReplicatedStorage.Supplies:Clone() sorter.Parent = slots[1] table.remove(slots,1) slotsRemoved = slotsRemoved + 1 print(slotsRemoved.. "slots removed2") wait(0.05) end while tactical > slotsRemoved - supplies do sorter = game.ReplicatedStorage.Tactical:Clone() sorter.Parent = slots[1] table.remove(slots,1) slotsRemoved = slotsRemoved + 1 print(slotsRemoved.. "slots removed2") print(slots) wait(0.05) end while initiative > slotsRemoved - supplies - tactical do sorter = game.ReplicatedStorage.Initiative:Clone() sorter.Parent = slots[1] table.remove(slots,1) slotsRemoved = slotsRemoved + 1 print(slotsRemoved.. "slots removed2") wait(0.05) end while research > slotsRemoved - supplies - tactical - initiative do sorter = game.ReplicatedStorage.Research:Clone() sorter.Parent = slots[1] table.remove(slots,1) slotsRemoved = slotsRemoved + 1 print(slotsRemoved.. "slots removed2") wait(0.05) end if slotsUsed <= slotsRemoved then break end end end, } return module