Ok this is pretty damn late but i thought i'd answer it incase someone else has the same questions.
You would create a leave_prog and this would transfer the player back into the room where the NPC(mob) is located, example of this is if i created a mob with the vnum of 2341 and the mob was in room 2342 i would transfer the character back to vnum 2342.
But remember to use: mpat 0.$n mptran 2342 this is because mptran is usally used when transfering players from the room the prog is located in.
(Hope all that made sense)
Your best using a prog to do this two because there isn't really a way to make "unlimited" amounts of an item, but you can make out that there is by using: mpoload <vnum> <level>
Once you have invoked the object you then should drop the item or do what you wish to do with the item directly AFTER you have mpoloaded it.
Again, i hope this helps.