Hi, I’m trying to make an inventory system that is updated whenever a user picks up an item. However, the UI does not update until an item is selected in the explorer pane. I’ve tried several solutions, like changing a property and reverting it, waiting before changing properties, but it hasn’t been working. Below, I’ve attached a video of me attempting to pick up a stick but it not appearing in the inventory.
I’m sure if this is a problem with my programming, as the item shows up in the Roblox explorer and in the table containing the inventory, but it does not show on screen. This could definitely be a Roblox bug.
As a side note, I am supposed to be able to pick up the item in the inventory, but I cannot as the game is not recognizing anything is there.
Is there any solution to my problem, or is this a Roblox bug? Any help is much appreciated!
Myself (and probably others) can not really help you problem solve the issue unless you show us your code. It would be greatly appreciated if you can show some level of code to help diagnosis your issue.
UpdateInventory = function()
print("Update")
ClearInventory()
print("Cleared")
refreshHotbar()
print("Hotbar refresh")
for i, v in pairs(SlotDesignation) do
print(i, v)
local slot = script.Parent.Player.Inventory:FindFirstChild(tostring(i))
print(slot.Name)
wait()
local amount = script.ItemAmount:Clone()
amount.Parent = slot
if ItemsInInventory[v] > 1 then
amount.Text = tostring(ItemsInInventory[v])
else
amount.Text = ""
end
--[[local image = script.Image:Clone()
image.Parent = slot
gotta save stuff for later!
]]
wait()
local image = script.NoImage:Clone()
image.Parent = slot
image.Text = v
end
wait()
end
Clear Inventory function:
local function ClearInventory()
for i = 1, SlotAmount do
local Slot = script.Parent.Player.Inventory:FindFirstChild(tostring(i))
local NoImage = Slot:FindFirstChild("NoImage")
local AmountLabel = Slot:FindFirstChild("ItemAmount")
if NoImage then NoImage:Destroy() end
if AmountLabel then AmountLabel:Destroy() end
end
end
The updateHotbar() function doesn’t have much to do with the inventory itsself. I’m most concerned about the UpdateInventory function. Also, the reason why it’s defined as UpdateInventory = function() is becuase it is defined earlier in the code can it can be used by later functions, and it can use earlier functions than where it is defined.
The only thing that is being handled on the server is the inventory updating. The UI gets refreshed when the inventory changes. The UI is entirely on the client, no server scripts.
Turns out the problem has popped up again, this time with buttons inside of frames. Basically, the same code as the previous problem. I tried the solution that worked last time, but it isn’t working. Yay. Does anyone know how to fix this? Or is this something on Roblox’s end that is completely out of my control?
I feel like this is a roblox bug probably, as I had seen someone else face a pretty similar bug too. And it worked when they selected the item in explorer.