1. Untick "allow dragging of items from inventory" option in the main game settings.
2. I assume you have an interface with at least 1 command button, so make sure you go to the "command properties" tab for your default command & set the command can be used on option to objects & characters"
3. Now you need to create some custom cursors that you want to show when an item is being held, so do that.
4. now create an item. In the animation section add a single frame & add the item image to it it. Create a new frame, but leave it empty or link an image file with a transparent background that is the same size as your item images.
5. click on the first frame & click on the edit button. Open up the actions section in the window that pops up & then create an execute a script action part & add something like this inside of it...
if game.UsedItem:getName() == "itm_rock" then
ActiveAnimations["itm_rock"].FirstFrame = 2
ActiveAnimations["itm_rock"].LastFrame = 2
ActiveAnimations["itm_rock"].FirstFrame = 1
ActiveAnimations["itm_rock"].LastFrame = 1
You need to copy the same code into the second frame as well.
6. Go to the actions section for the item & create an executed "command name" (immediate) type command & inside of the action block for that you want to set the item & the cursor that you want to be displayed.
Rinse & repeat for the rest of the items.
I have to be honest though that I much prefer using my command based method for items as it's much cleaner. Quick note: if you are displaying action text, then the text will still be displayed on mouse over of the item even if it's hidden, so you need to kill action text on mouse over if it's set to that state & undo on mouse leave - bit of Lua or if query business would be needed to sort that out.