Assuming you'll be using sprites for the player and the item, to check if the player is contacting an item and make them pick it up, you can just use the command SPRITE COLLISION, using the player sprite and the item sprite as the parameters.
If there aren't going to be many items, you can just use a variable for each item.
For example, if there were two items:
do
`=========
`Insert player movement code here
`=========
if sprite collision(PlayerSprite,ItemSprite1)=1
Item1=1
delete sprite ItemSprite1
endif
if sprite collision(PlayerSprite,ItemSprite2)=1
Item2=1
delete sprite ItemSprite2
endif
loop
Then, when the player tries to complete one of the puzzles, you make sure he has the item needed first, with:
If Item1=1
`=======
`Insert puzzle here
`=======
endif
And take it away when he or she finishes the puzzle by setting Item1 back to 0.
If you don't get this, check out this tutorial:
http://forum.thegamecreators.com/?m=forum_view&t=116567&b=7
Actually, check out the tutorial anyway. It'll help
.