integer listener=-1; integer channel; default { on_rez(integer n) { } state_entry() { llSetText("your hovertext here", <1,1,1>, 1.0); } touch_start(integer n) { channel = -1 - (integer)("0x" + llGetSubString( (string) llGetKey(), -6, -1) )-393; if (listener <0) { listener=llListen(channel, "", "", ""); } list opts = []; integer i; for (i=0; i < llGetInventoryNumber(INVENTORY_OBJECT); i++) { opts += llGetInventoryName(INVENTORY_OBJECT,i); } opts += "CLOSE"; llDialog(llDetectedKey(0), "Select", opts, channel); llSetTimerEvent(200); } listen(integer c, string n ,key id , string m) { if (m == "CLOSE") { return; } else llRezObject(m, llGetPos() + <-1,0,-1>*llGetRot() , ZERO_VECTOR, ZERO_ROTATION, 1); } timer() { if (listener >0) { llListenRemove(listener); listener = -1; } llSetTimerEvent(0); } }