At first you have to create a new prim to put these two scripts in, then edit: Range, Rate, BOT_KEY, BOT_GROUP and MASTER to your needs.
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)); } } }