Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einfacher Besucherzähler
#1
Noch was kleines (diesmal hoffentlich im richtigen Forum gg).
Eine Art Besucherzähler, am besten am Landepunkt aufzustellen. Das Land muss aber dem Benutzer gehören, weil die Anwesenheit über eigenes Land ermittelt wird. Ist dann egal, wie weit der Besucher weg ist, nur zum Erfassen muss er im 96 m Umkreis sein.
Bei Klick auf das Objekt startet die Überwachung, bei nochmaligem Klick wird sie wieder angehalten und eine Liste der Besucher mit Zeitangabe von-bis ausgegeben.
LG Reb

Code:
// script copyright by Rebekka Revnik

list Avas;
list Keys;
list TimeOn;
list Report;

string Time()
{
    string s = llGetTimestamp();
    list l = llParseString2List(s, ["-", ":", ".", "T"], []);
    s = llList2String(l, 2)+":"+llList2String(l, 1)+"."+llList2String(l, 0);
    s += " - "+llList2String(l, 3)+":"+llList2String(l, 4);
    return s;
}

default
{
    touch_start(integer total_number)
    {
        if(llGetOwner() != llDetectedKey(0)) return;
        llOwnerSay("Running");
        state On;
    }
}

state On
{
    state_entry()
    {
        Avas = [];
        Keys = [];
        TimeOn = [];
        Report = [];
        llSensorRepeat("", NULL_KEY, AGENT, 96, PI, 60);
    }
    state_exit()
    {
        llSensorRemove();
        llSetTimerEvent(0);
    }
    sensor(integer total_number)
    {
        integer i;
        for(i = total_number - 1; i >= 0; i--)
        {
            if(llOverMyLand(llDetectedKey(i)) && llDetectedKey(i) != llGetOwner())
            {
                if(llListFindList(Avas, [llDetectedName(i)]) == -1)
                {
                    Avas += [llDetectedName(i)];
                    Keys += [llDetectedKey(i)];
                    TimeOn += [Time()];
                }
            }
        }
        for(i = llGetListLength(Avas) - 1; i >= 0; i--)
        {
            if(!llOverMyLand(llList2Key(Keys, i)))
            {
                string s = llList2String(Avas, i)+": "+llList2String(TimeOn, i)+" -> " + Time();
                Report += [s];
                Avas = llDeleteSubList(Avas, i, i);
                Keys = llDeleteSubList(Keys, i, i);
                TimeOn = llDeleteSubList(TimeOn, i, i);
            }
        }
    }
    touch_start(integer total_number)
    {
        if(llGetOwner() != llDetectedKey(0)) return;
        integer i;
        llOwnerSay("Stopped.");
        llOwnerSay("Visitors today: " + (string)llGetListLength(Report));
        for(i = 0; i < llGetListLength(Report); i++) llOwnerSay(llList2String(Report, i));
        llResetScript();
    }
}
Leider ist meine Signatur ausserhalb Sachsens nicht verfügbar.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste