The reason you specified is why I dislike the dragged item system. The images are the same size as in your inventory & the interaction position that detects when a scene object, character or item is below the cursor image is in the center of the image sprite rather than the top left.
I highly recommend using a command based inventory system.
1. create a custom cursor for each command & inventory item. This way you can have both an active & inactive image/animation for each command & held item that's also different from the image of the inventory item.
2. create all of your commands inside of a single interface. This includes both general commands (use, take, examine, walk to, etc) & also a command for each & every single inventory item. It's a lot of work sure, but it's worth it in the end.
3. inside of the command properties tab for each of the command buttons types you have just created, assign a cursor & set the "
command can be used on" option to
objects & characters. This is so that the cursor will automatically be set to the relevant cursor each time you change to a new command. Saves a lot of time in the long run. The other option is so that you can use the command on both objects (scene objects, items) & characters.
4. Now go to the items tab & create all of your items if you haven't already done so, assign an image or animation (animation if you want to hide the image when the player is holding the item in hand) to each one. Now inside of the actions tab for each item create an executed command (immediate) take/use (or whatever command you want it to be for setting the item to hand) & now create an action part to change the current command to that of the relevant item command. In-game it should now change to that command & show the custom item cursor you created.
5. Inside of actions tab for scene objects/characters you can now create execute command (at destination) which you can set as one of the item commands you have created.
I admit it probably sounds a bit complicated with text only, but I highly recommend using this method as it allows you to customize easily & looks great.
In regards to hiding the image in the inventory, you could create a 2 frame animation for each item. The first frame would contain the item image, the second frame should be a transparent image with the same size canvas as the frame with the item image. What you would need to do is edit each frame to open up the edit dialog window & then you would create some custom actions for each frame. In the first frame you would create an execute a script action part & then you should add something along the lines of this to it...
if game.CurrentCommand:getName() == "carrot" then
ActiveAnimations["itm_carrot"].AnimationFirstFrame = 2
ActiveAnimations["itm_carrot"].AnimationLastFrame = 2
else
ActiveAnimations["itm_carrot"].AnimationFirstFrame = 1
ActiveAnimations["itm_carrot"].AnimationLastFrame = 1
end
Obviously you will need to replace carrot with the actual name of the relevant command & itm_carrot with the name of the item whose frames you are currently editing. Quick note: names are case sensitive.
For the second frame you would do the exact same thing except you will change the script slightly so that it forces the frame back to frame 1.
if game.CurrentCommand:getName() == "carrot" then
ActiveAnimations["itm_carrot"].AnimationFirstFrame = 1
ActiveAnimations["itm_carrot"].AnimationLastFrame = 1
else
ActiveAnimations["itm_carrot"].AnimationFirstFrame = 2
ActiveAnimations["itm_carrot"].AnimationLastFrame = 2
end
Anyway, hopefully this massive wall of horrible text will be of some help to you. Normally, I'd share some screenshots, but I have nothing at hand at the minute. Though I've posted images in the past of how I setup a command based inventory system. They are floating about on the forum somewhere.
P.S: I recommend using Lua script for the command cycle interface. Would make much less work, however you mentioned that you have no clue how to script with Lua. Instead what you could do when you take an item from the inventory is set a condition to true then when you drop the item set the condition back to false. In the global right mouse button actions you need to wrap all of the action parts inside of an if query that checks if an item is held or not. So that on right click you either cycle through the commands or you drop the current item instead & change back to the default command.