Difference between revisions of "Visitor Counter Tracker"
Jump to navigation
Jump to search
m |
(Remove Copyright) |
||
(13 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{LSL Header}} | |||
[[Category:LSL_Library]] | [[Category:LSL_Library]] | ||
<div | <div> | ||
[[Teleporter_Anywhere]] | [[Language_Scanner]] | [[Visitor_Counter_Tracker]] | [[User:Luxen_Resident]] | [[Teleporter_Anywhere]] | [[Ultimate_Radar]] | [[Language_Scanner]] | [[Visitor_Counter_Tracker]] | ||
</div> | </div> | ||
<div id="box"> | <div id="box"> | ||
== | ==Summary== | ||
<div style="padding: 0.5em"> | <div style="padding: 0.5em;"> | ||
Track, save and display the list of all the visitors names each day. | |||
* Land wide (scan all your Land | * Daily report | ||
* Fully autonomous | * Land wide (scan all your Land) | ||
* Easy to use, no setup needed | |||
* Fully autonomous. | |||
</div></div> | </div></div> | ||
<div id="box"> | <div id="box"> | ||
== Code: == | == Code: == | ||
< | <div style="padding: 0.5em;"> | ||
<source lang="lsl2"> | <source lang="lsl2"> | ||
////////////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////////////// | ||
// Zx Visitor Counter - Tracker | // Zx Visitor Counter - Tracker v3.1 // | ||
// // | // // | ||
// | // By Luxen - Zonyx Technology // | ||
// // | // // | ||
////////////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////////////// | ||
Line 50: | Line 40: | ||
string Ztext = "[D:" + (string)DCount + " - M:" + (string)NVisits + "]"; | string Ztext = "[D:" + (string)DCount + " - M:" + (string)NVisits + "]"; | ||
llSetPrimitiveParams([PRIM_TEXT, Ztext, <0.667, 0.667, 0.667>, 1.0]); | 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; | |||
} | } | ||
Line 72: | Line 87: | ||
{ | { | ||
if (llDetectedKey(0) == Zowner) | if (llDetectedKey(0) == Zowner) | ||
{ | { | ||
llSleep(0.3); | |||
integer TnumOfAvatars = llGetListLength(NewTab); | integer TnumOfAvatars = llGetListLength(NewTab); | ||
string Vname = | string Vname = "--------------------------" | ||
+ "\n Visitors Today:" | + "\n Visitors Today:" | ||
+ "\n List (" + (string)TnumOfAvatars + "): " + Vname | + "\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 --------------------------"); | |||
} | } | ||
} | } | ||
Line 131: | Line 129: | ||
else if (id != Zowner) | else if (id != Zowner) | ||
{ | { | ||
integer Znew = Zadd(id, llGetUsername(id)); | |||
if ( | if (Znew) | ||
{ | { | ||
UpDate = TRUE; | |||
++DCount; | |||
++NVisits; | |||
} | } | ||
} | } | ||
} | } | ||
AvatarsDetect = []; | AvatarsDetect = []; | ||
Line 165: | Line 153: | ||
} | } | ||
</source> | </source> | ||
</div></div> |
Latest revision as of 16:47, 18 January 2017
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:
//////////////////////////////////////////////////////////////////////////////
// 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();
}
}