You can use numbers 0 through num_detected - 1 to get detected agent keys:
default
{
touch_start(integer num_detected)
{
integer i = 0;
for(; i<num_detected; ++i)
llWhisper(0, "Touched by " + llKey2Name(llDetectedKey(i)));
}
}// If using a touch to change states be careful about the touch_ event order...
// On clicking a prim with touch events we trigger touch_start (as), touch (during) and touch_end (as released).
// The chain of events is established in the script as touch_start is triggered that remains intact until either
// touch_end is triggered or a new touch_start (discounting resets, deletions, taking to inventory etc.).
default
{
touch_start(integer nd)
{
llSay(0, "You just started touching me so I'm going to the other state...");
state other;
}
// A very rapid click would (and does if your VERY quick) beat the state change so the script would/does not behave as expected.
}
state other
{
touch_end(integer nd)
{
// The average click will have you catapult through this state with nothing but a chatted message to remember it by.
llSay(0, "The touch that brought you here just ended so I'm going back to default...");
state default;
}
}