Here is the Scanning Script I was looking at:
integer dlgHandle = -1;
integer dlgChannel = -9999;
list avatarList = [];
reset()
{
llSetTimerEvent(0.0);
llListenRemove(dlgHandle);
dlgHandle = -1;
}
default
{
touch_start(integer total_number)
{
llOwnerSay("Scanning..."
;avatarList = [];
// Look for any avatars within 10m.
llSensor("", NULL_KEY, AGENT, 96.0, PI);
}
sensor(integer num_detected)
{
integer i;
while((i < num_detected) && (i < 9))
{
if (llDetectedKey(i) != llGetOwner())
{
avatarList += [llDetectedName(i)];
}
++i;
}
if (llGetListLength(avatarList) > 0)
{
state dialog;
}
}
}
state dialog
{
state_entry()
{
// Set up a listener to detect button clicks.
dlgHandle = llListen(dlgChannel, "", llGetOwner(), ""
;// Start a new timer.
llSetTimerEvent(30.0);
// Add a 'Cancel' button.
avatarList += ["Cancel"];
// Display the dialog.
llDialog(llGetOwner(), "Please select an avatar.", avatarList, dlgChannel);
}
listen(integer channel, string name, key id, string message)
{
// The message parameter holds the caption of the
// button that was clicked. Search the menu options
// list for it.
if ((channel == dlgChannel) && (llListFindList(avatarList, [message]) != -1))
{
if (message != "Cancel"

{
llSay(0, llKey2Name(llGetOwner()) + " pokes " + message);
}
reset();
state default;
}
}
timer()
{
reset();
state default;
}
}
