This is a dirty, dirty hackjob of just that sort of system. If anyone wants to write a cleaner one, please do.
CODE
string notecard;
key user;
default
{
state_entry()
{
notecard = llGetInventoryName(INVENTORY_NOTECARD, 0);
}
touch_start(integer total_number)
{
user = llDetectedKey(0);
if(llSameGroup(user))
{
llListen(9981,"",user,"");
llSetTimerEvent(30);
llDialog(user, "Welcome to the Treve Scribery filing system. This listen will expire in 30 seconds.",["Read", "Write"],9981);
}
else
{
llGiveInventory(user, notecard);
}
}
timer()
{
llListenRemove(0);
llAllowInventoryDrop(FALSE);
llDialog(user, "Time expired. Please touch the system again if you are not finished using it.",[],9981);
}
listen(integer channel, string name, key id, string message)
{
if (message == "Read")
{
llSetTimerEvent(0);
llGiveInventory(user, notecard);
}
else if (message == "Write")
{
llDialog(user, "Please drop the new index into the contents of this scroll rack.",[],9981);
llSetTimerEvent(60);
llAllowInventoryDrop(TRUE);
}
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
{
llRemoveInventory(notecard);
llAllowInventoryDrop(FALSE);
llResetScript();
}
}
}