/* Simple greeter script that checks for visitors. If a new, previously unseen visitor is found,
it sends a number of commands to an NPC. The commands teleport the NPC in front of the user, and say a welcome message.
*/
list seen = [];
list alreadyGreeted = [];
string vec2str(vector v)
{
return "<"+v.x+","+v.y+","+v.z+">";
}
checkVisitors()
{
list avis = llGetAgentList(AGENT_LIST_REGION, []);
integer howmany = llGetListLength(avis);
integer i;
for ( i = 0; i < howmany; i++ ) {
if ( ! osIsNpc(llList2Key(avis, i)) )
{
key u = llList2Key(avis, i);
if (llListFindList(seen, [u])<0)
{
list ud =llGetObjectDetails(u, [OBJECT_NAME,OBJECT_POS, OBJECT_ROT]);
vector v = llList2Vector(ud, 1);
rotation r = llList2Rot(ud, 2);
string scr;
if ( llListFindList(already, [u])<0)
{
// These are the notecard commands, separated by ';' which position the NPC, and say a welcome message. You can change the commands
scr = "teleport "+vec2str(v+<2,0,0>*r) +"; stop; lookat "+vec2str(v)+"; anim bow; say Welcome to My Region! If you need help, say 'Magnus help'. Enjoy your stay!; wait 50; leave";
llRegionSay(68, "! 00000000-0000-0000-0000-000000000000 magnus magnus batch "+scr);
alreadySeen += u;
}
}
}
}
seen = avis;
}
default
{
state_entry()
{
llSetTimerEvent(30);
checkVisitors();
}
timer()
{
checkVisitors();
}
}