logo

Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden.Neue Registrierungen sind deaktiviert.

Mitteilung

Icon
Error

Einloggen


Optionen
Ansicht
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline MartinRJ Fayray  
#1 Geschrieben : Montag, 6. Oktober 2014 16:20:33(UTC)
MartinRJ Fayray

Rang: Ehrenmitglied

Ansehen:

Mitglied seit: 05.09.2014(UTC)
Beiträge: 84
Germany
Wohnort: Tulln und Rostock

Dankte: 1 mal(e)
Das folgende Skript überwacht die Avatare in der Parzelle, und sendet eine Warnung an alle (außer den Besitzer des Objekts), die mehr als 150 Skripts an ihre Avatare angehängt haben.
Wird auf die Warnung (und auf eine zweite Warnung) nicht reagiert, wird der Avatar rausgeworfen.

Dazu muss das Objekt dem Besitzer der Parzelle gehören.
Code:

list lAVATAR;
list lTIME;
list lSTATE;
float fTIME_WARNING = 300;
float fTIME_KICK = 300; //will be kicked after WARNING + KICK - time
integer iLIMIT = 150;
float fTIMER = 1.0;

string sWARNING = "Bitte reduziere deine angehängten Skripts auf maximal 150!";
string sWARNING_2 = "Letzte Warnung, bitte reduziere die angehängten Skripts, sonst musst du diese Region verlassen!";

integer iSTATE_KICK = 2;
integer iSTATE_WARN = 1;

default
{
    state_entry()
    {
        llSetTimerEvent(fTIMER);
    }

    timer()
    {
        integer i;
        integer f;
        key k;
        list lNEW;
        integer iTimestamp = llGetUnixTime();
        list l = llGetAgentList(AGENT_LIST_PARCEL_OWNER, []);
        for (i = 0; i < llGetListLength(l); i++)
        {
            k = llList2Key(l, i);
            if (k != llGetOwner() && llList2Integer(llGetObjectDetails(k, [OBJECT_TOTAL_SCRIPT_COUNT]),0) > iLIMIT)
            {
                lNEW += [k];
                f = llListFindList(lAVATAR, [k]);
                if (f == -1)
                {
                    llRegionSayTo(k, PUBLIC_CHANNEL, sWARNING);
                    lAVATAR += [k];
                    lTIME += [llGetUnixTime() + (integer)fTIME_WARNING];
                    lSTATE += iSTATE_WARN;
                }
                else
                {
                    if (llList2Integer(lTIME, f) <= llGetUnixTime())
                    {
                        if (llList2Integer(lSTATE, f) == iSTATE_KICK)
                        { //kick
                            lAVATAR = llDeleteSubList(lAVATAR, f, f);
                            lTIME = llDeleteSubList(lTIME, f, f);
                            lSTATE = llDeleteSubList(lSTATE, f, f);
                            llTeleportAgentHome(k);
                        }
                        else if (llList2Integer(lSTATE, f) == iSTATE_WARN)
                        {
                            llRegionSayTo(k, PUBLIC_CHANNEL, sWARNING_2);
                            lTIME = llListReplaceList(lTIME, [llGetUnixTime() + (integer)fTIME_KICK], f, f);
                            lSTATE = llListReplaceList(lSTATE, [iSTATE_KICK], f, f);
                        }
                    }
                }
            }
        }
        
        
        
        //cleanup
        for (i = 0; i < llGetListLength(lAVATAR); i++)
        {
            if (llListFindList(lNEW, [llList2Key(lAVATAR, i)]) == -1)
            { //avatar gone
                lAVATAR = llDeleteSubList(lAVATAR, i, i);
                lTIME = llDeleteSubList(lTIME, i, i);
                lSTATE = llDeleteSubList(lSTATE, i, i);
            }
        }
    }
}

Bearbeitet vom Benutzer Dienstag, 7. Oktober 2014 15:32:39(UTC)  | Grund: Nicht angegeben

It is the mark of an educated mind to be able to entertain a thought without accepting it.

Wanna join the discussion?! Login to your forum account.Neue Registrierungen sind deaktiviert.

Rss Feed  Atom Feed
Benutzer, die gerade dieses Thema lesen
OceanSpiders 2.0
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

Powered by YAF.NET | YAF.NET © 2003-2021, Yet Another Forum.NET
Diese Seite wurde in 0.037 Sekunden generiert.

Datenschutzrichtlinie
Haftungsausschluss
Impressum
Datenschutzerklärung
AGB, ToS
Kontakt