Visitor Counter Tracker
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
User:Luxen_Resident | Teleporter_Anywhere | Ultimate_Radar | Language_Scanner | Visitor_Counter_Tracker
Summary
Track, save and display the list of all the visitors names each day.
- Daily report
- Land wide (scan all your Land)
- Easy to use, no setup needed
- Fully autonomous.
Code:
<source lang="lsl2"> ////////////////////////////////////////////////////////////////////////////// // Zx Visitor Counter - Tracker v3.1 // // // // By Luxen - Zonyx Technology // // // //////////////////////////////////////////////////////////////////////////////
key Zowner; integer NVisits; string ZDate; integer DCount = 0; list NewTab = []; list IdTab = [];
string Ztime() {
string DayDate = llGetSubString(llGetDate(), 8, 9); return DayDate;
} Zcount() {
string Ztext = "[D:" + (string)DCount + " - M:" + (string)NVisits + "]"; llSetPrimitiveParams([PRIM_TEXT, Ztext, <0.667, 0.667, 0.667>, 1.0]);
} string Zreport(integer Ztab, integer Tcount) {
string Fname = ""; integer index2; for(index2 = 0; index2 < Tcount ; ++index2) { if (Ztab) Fname += llList2String(NewTab, index2) + ", "; else Fname += "secondlife:///app/agent/" + llList2String(IdTab, index2) + "/username" + ", "; } return llDeleteSubString(Fname, -2, -1);
} integer Zadd(key Zkey, string Zname) {
if (Zname) { if (llListFindList(NewTab, [Zname]) == -1) NewTab += [Zname]; else return FALSE; } else { if (llListFindList(IdTab, [Zkey]) == -1) IdTab += [Zkey]; else return FALSE; } return TRUE;
}
default {
state_entry() { Zowner = llGetOwner(); NVisits = (integer)llGetObjectDesc(); ZDate = Ztime(); Zcount(); llSetTimerEvent(60.0); } on_rez(integer start_param) { llSetObjectDesc("0"); llResetScript(); } touch_start(integer n) { if (llDetectedKey(0) == Zowner) { llSleep(0.3); integer TnumOfAvatars = llGetListLength(NewTab); string Vname = "--------------------------" + "\n Visitors Today:" + "\n List (" + (string)TnumOfAvatars + "): "; if (TnumOfAvatars > 0) Vname += Zreport(TRUE, TnumOfAvatars); else Vname += "nobody"; TnumOfAvatars = llGetListLength(IdTab); if (TnumOfAvatars > 0) Vname += "\n Others (" + (string)TnumOfAvatars + "): " + Zreport(FALSE, TnumOfAvatars); llOwnerSay(Vname + "\n --------------------------"); } } changed(integer change) { if (change & CHANGED_REGION_START) { llSleep(60.0); llSetTimerEvent(60.0); } } timer() { integer UpDate = FALSE; list AvatarsDetect = llGetAgentList(AGENT_LIST_PARCEL, []); integer numOfAvatars = llGetListLength(AvatarsDetect); if (numOfAvatars > 0) { integer ObjectGroup = FALSE; list details = llGetObjectDetails(llGetKey(),[OBJECT_GROUP]); if(llList2Key(details, 0)) ObjectGroup = TRUE; integer index; for (index = 0; index < numOfAvatars; ++index) { key id = llList2Key(AvatarsDetect, index); if (llSameGroup(id) && ObjectGroup) ; else if (id != Zowner) { integer Znew = Zadd(id, llGetUsername(id)); if (Znew) { UpDate = TRUE; ++DCount; ++NVisits; } } } AvatarsDetect = []; } if (ZDate != Ztime()) { llSleep(1.0); ZDate = Ztime(); if (ZDate == "01") llSetObjectDesc("0"); else llSetObjectDesc((string)NVisits); llResetScript(); } else if (UpDate) Zcount(); }
} </source>