@Mak7ka Your script almost worked. I think this is a working version detecting correctly people leaving as well.
float timer_interval =10.0;// how often to scan the area
list im_recipients =[];// a list of the keys of the people who will get IMed, if blank owner is set
list current_visitors;// keeps a list of current and previous people who were in the area, global values to preserve them between scans
list previous_visitors;
string region_name;default{
on_rez (){
llResetScript();}
changed (integer changed){if(changed & CHANGED_OWNER){
llResetScript();}}
state_entry (){if(im_recipients ==[]){
im_recipients = llGetOwner();}
region_name = llGetRegionName();
llSetTimerEvent (timer_interval);// start the timer (and wait for it to trigger)}
timer (){
list arrivals;
list departures;
integer count;
current_visitors = llGetAgentList (AGENT_LIST_PARCEL,[]);// get the list of who's here now
count = llGetListLength (current_visitors);while(count)// for each current visitor (if any), working backwards through the list (beacuse it's easier){
key visitor = llList2Key (current_visitors,--count);// decrement the counter (to convert it to a list index, and also set it up for the while loop test next iteration) and get the visitor's keyif(llListFindList (previous_visitors,[visitor])==-1)// are they in the list of people who were here last time?{
arrivals += llGetDisplayName (visitor);// if not, add their name to the list of new arrivals
llInstantMessage (im_recipients,"Arrival of "+ visitor +" at "+ region_name);}}
count = llGetListLength (previous_visitors);while(count)// for each visitor who was here last time{
key visitor = llList2Key (previous_visitors,--count);if(llGetAgentSize (visitor)== ZERO_VECTOR){
departures += llGetDisplayName (visitor);// if not, add their name to the list of departures
llInstantMessage (im_recipients,"Departure of "+ visitor +" from "+ region_name);// Note that avatar names not present can not be resolved}}
previous_visitors = current_visitors;// save the list of current visitors for next time;}}
Notify when visitor arrives and leaves area
in LSL Scripting
Posted
@Mak7ka Your script almost worked. I think this is a working version detecting correctly people leaving as well.