/We're saving the keys to be sure people can only touch once. //To avoid running out of memory, the list must be cleared occassionally or at least trimmed. //This is accomplished, in this script, by resetting after set period of time integer reset_list=86400;//reset list after one day (in seconds) list touched; default{ touch_start(integer total_number){ key id = llDetectedKey(0); if(llListFindList(touched,[id])==-1){ touched+=[id]; llGiveInventory(id,llGetInventoryName(INVENTORY_OBJECT,(integer)llFrand(llGetInventoryNumber(INVENTORY_OBJECT)))); } if(llGetTime()>=reset_list){llResetScript();}//clear list | restart script time } }