Einfach ein Prim erstellen und diese zwei Scripte reinlegen, danach noch ggf. die Range anpassen und BOT_KEY und BOT_GROUP ändern.
list visitor_list;
float range = 96.0; // in meters
float rate = 10.0; // in seconds
// Bot_LLUUID (status 3 gives you the Bot-Key)
//
key BOT_KEY=" >>> HERE <<< ";
// Die Gruppe in die der Bot einladen soll, einfach den Bot in die Gruppe einladen und dann "mygroups" aufrufen
//
key BOT_GROUP=" >>> HERE <<< ";
integer isNameOnList( string name )
{
integer len = llGetListLength( visitor_list );
integer i;
for( i = 0; i < len; i++ )
{
if( llList2String(visitor_list, i) == name )
{
return TRUE;
}
}
return FALSE;
}
default
{
state_entry()
{
llSay(0, "Visitor List Maker started...");
llSay(0, "The owner can say 'help' for instructions.");
llSensorRepeat( "", "", AGENT, range, TWO_PI, rate );
llListen(0, "", llGetOwner(), "");
// Eves
//
llMessageLinked(LINK_THIS, 0, (string)BOT_KEY + "|members " + (string)BOT_GROUP, NULL_KEY);
}
sensor( integer number_detected )
{
integer i;
for( i = 0; i < number_detected; i++ )
{
if( llDetectedKey( i ) != llGetOwner() )
{
string detected_name = llDetectedName( i );
if( isNameOnList( detected_name ) == FALSE )
{
visitor_list += detected_name;
// Eves
//
llMessageLinked(LINK_THIS, 0, (string)BOT_KEY +"|invite " + (string)llDetectedKey(i) + " " + (string)BOT_GROUP, NULL_KEY);
}
}
}
}
listen( integer channel, string name, key id, string message )
{
if( id != llGetOwner() )
{
return;
}
if( message == "help" )
{
llSay( 0, "This object records the names of everyone who" );
llSay( 0, "comes within "+ (string)range + " meters." );
llSay( 0, "Commands the owner can say:" );
llSay( 0, "'help' - Shows these instructions." );
llSay( 0, "'say list' - Says the names of all visitors on the list.");
llSay( 0, "'reset list' - Removes all the names from the list." );
}
else
if( message == "say list" )
{
llSay( 0, "Visitor List:" );
integer len = llGetListLength( visitor_list );
integer i;
for( i = 0; i < len; i++ )
{
llSay( 0, llList2String(visitor_list, i) );
}
llSay( 0, "Total = " + (string)len );
}
else
if( message == "reset list" )
{
visitor_list = llDeleteSubList(visitor_list, 0, llGetListLength(visitor_list));
llSay( 0, "Done resetting.");
}
}
}
// InstantMessage per llLinkedMessage
//
integer isKey(key in) {
if (in) return 2;
return (in == NULL_KEY);
}
default
{
link_message(integer sender_num, integer num, string str, key id)
{
if (num != 0) { return; }
list PARS;
PARS = llParseString2List(str, ["|"], []);
if (isKey(llList2Key(PARS,0))) {
// llOwnerSay("debug => " + llList2String(PARS, 0) + " => " + llList2String(PARS, 1));
llInstantMessage(llList2Key(PARS,0), llList2String(PARS, 1));
}
}
}