Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why does my custom inventory only organize icons correctly half the time?

Asked by 2 years ago

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

Answer this question