De DigiWiki.
integer filter = 0;
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
vector start = llGetPos();
vector end = start - <0,-25,0>;
if ( filter > 8 )
{
filter = 0;
}
llOwnerSay("Filter " + (string)filter);
list results = llCastRay(start, end, [RC_REJECT_TYPES, filter, RC_MAX_HITS, 4] );
integer hitNum = 0;
// Handle error conditions here by checking llList2Integer(results, -1) >= 0
for ( hitNum = 0; hitNum < llList2Integer(results, -1); hitNum++ )
{
// Stride is 2 because we didn't request normals or link numbers
key uuid = llList2Key(results, 2*hitNum);
string name;
if ( uuid == NULL_KEY )
{
name = "Land";
}
else
{
name = llKey2Name(uuid);
}
llOwnerSay("Hit " + name);
}
filter += 1;
}
}