i assume youve figured this out, but for just a few items you could use global variables, after all, an array just stores variables on an axis. a numerical global variable is a 2 axis array. so you can say, { Player - on collision - item - { Destroy item, add 1 to itemVariable}}
for this, i suggest you call your item variables '0','1','2','3', etc. you can create a note in your code to remind you what is what
to show what item is currently selected, create a numerical global variable called 'Selected". create a sprite with all item possibilities. then, you would want your code to read along the lines of {every tick - sprite.uid# - set animation frame - Selected} . to cycle back and forth, you would only have to say, {On left press - -1 from selected} {On right press - +1 to selected}
from here, you would want a safeguard in place, that would say, if selected < max, set selected to 0. this would create a loop, so once you got to the end you could continue cycling.
how do i know whether i want to cycle left or right?
you can make 2 copies of your item sprite, one on the left, one on the right.
{every tick - sprite.uid# (sprite on left) - set animation frame - selected -1}
and {every tick - sprite.uid#(on right) - set animation frame - selected +1}
again, you have that bit of safeguard, to keep from max+1 or 0-1.
Max +1 is an easy fix, as you just add a copy of your sprite in the 0 slot of your animation into your last frame, and set your max(return to 0) to 1 number less than your actual max frame count(or animation count).
the 0 is a bit trickier, however, still simple. {If Selected =0,Sprite.uid#(onleft) -Set animation frame - Max
this shouldnt be too hard to implement, and should only take up 2 or 3 events.
i almost forgot,
as far as knowing how many of each item you have
If Selected = x, set text.uid to x. what this would do, is if Item displayed in middle box is item "1" , the text becomes the value of variable "1" which would be the amount of that item you have, while setting the animation frame in the middle box to match (assuming your frames match your item number variables)
because you named your items '0','1','2','3, etc, you can use the same variable to call on all instances of the item, from your inventory count, to the frame displayed in your selection sprites. if you were to name your items "hammer" etc in your variables, you would have to code out each one instead of using math, such as selected+1. if you dont like having raw numbers as variable names, id suggest item0 item1 item2, and then call on them as "item"&selected
its 230 am, so im not my sharpest, i may have overlooked a thing or two, but that should assemble most of a working basic inventory.