• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Bitte, ueberdenkt eure Giver-Scripte

Daemonika Nightfire

Forumsgott/göttin
huhu,

so schwer kann das doch nicht sein.
Es gibt mehrere moeglichkeiten, gewisse Items aus dem Inhalt einer Box oder aehnlichem nicht mit zu uebergeben. Staendig muss ich Muell aus meinem Inventar aus den einzelnen ordnern heraus suchen und loeschen.

14 jahre SL und immer noch werden Stein alte Freebie Funktionen, oder nicht durchdachte giver verwendet.
Diese Inventar Vermuellung geht mir echt langsam auf die nerven, man kann ja gar nicht mehr ordentlich Shoppen, ohne gleich zur Muelltonne rennen zu muessen.

Darum hier ein beispiel, wie man Scripte nicht ins Inventar schickt.
Code:
key owner;

list inventory = [];
string name;
integer num;

default
{
    state_entry()
    {
        // Speichert den Besitzer-Key (UUID)
        owner = llGetOwner();
       
        num = llGetInventoryNumber(INVENTORY_ALL);
        integer     i;
        // ab hier wird das komplette Inventar des Objects ausgelesen
        for(i = 0; i < num; ++i)
        {
            // liesst die Inventar-Namen aus
            name = llGetInventoryName(INVENTORY_ALL, i);
            // Diese Funktion, sorgt dafuer, das das Script nicht zur Liste hinzu gefuegt wird
            if(name != llGetScriptName())
            {
                // fuegt die ausgelesenen Inventar-Namen in die Liste ein.
                inventory += name;
            }
        }
    }
   
    touch_start(integer total_number)
    {
        // reagiert nur, wenn der Besitzer klickt
        if(llDetectedKey(0) == owner)
        {
            if(llGetListLength(inventory) < 1)
            {
                // bloed wenn die Box leer ist ;)
                llWhisper(0,"No items to offer.");
            }
            else
            {
                // gibt den gelisteten Inhalt aus (es dauert 3 secunden, bis das Script hier nach wieder reagiert)
                llGiveInventoryList(owner, llGetObjectName(), inventory);
            }
        }
    }
   
    changed(integer change)
    {
        // Hinweis:
        // CHANGED_OWNER wird nicht ausgeloest bei Objecten die im Inventar uebergeben werden.
        if(change & CHANGED_OWNER)
        {
            // resettet das Script, sobald der Besitzer wechselt
            llResetScript();
        }
       
        // Ein Reset bei CHANGED_INVENTORY ist in Verbindung mit (no copy) Items nicht zu empfehlen.
        //if(change & CHANGED_INVENTORY)
        //{
            // resettet das Script, sobald sich der Inhalt des Objects aendert
            //llResetScript();
        //}
    }
   
    on_rez(integer Dae)
    {
        // resettet das Script, sobald es auf dem Boden gerezzt wird
        llResetScript();
    }
}


Hier ein Schnipsel, wie man zugleich die Animation einer Einkaufstuete in der Tuete laesst.
Code:
key owner;
string anim = "*DS* Shopping Bag anim.";

list inventory = [];
string name;
integer num;
 
default
{
    state_entry()
    {
        owner = llGetOwner();
        num = llGetInventoryNumber(INVENTORY_ALL);
        integer i;
        for(i = 0; i < num; ++i)
        {
            name = llGetInventoryName(INVENTORY_ALL, i);
            if(name != llGetScriptName())
            {
                if(name != anim)
                {
                    inventory += name;
                }
            }
        }
    }


Zu diesem Zweck habe ich vor Jahren schon ein Tutorial in der Wiki veroeffentlicht.
http://wiki.secondlife.com/wiki/User:Daemonika_Nightfire/Scripts/Giver_Tutorial
LG
Dae
 
Zuletzt bearbeitet:
Also, was das Scripten betrifft, bin ich ein echter Noob und ich frage mich, warum das erste Script das Inventar "vermüllt" bzw. was das für Auswirkungen hat.
Für mich als absoluter Script-Laie kann ich nur erkennen, dass das zweite Script kürzer ist.
 
/me lacht

Ich könnts auch nicht selbst. Hab mir bisher damit geholfen, indem ich das was ich nicht ausgeben wollte, auf nocopy gesetzt habe.

Vielen Dank @Daemonika Nightfire
Ich hoffe, das verbreitet sich, mich nerven die ganzen unerwünschten Anis auch.
 
OK ihr suessen,

ich mach euch einen Vorschlag, sagt mir was fuer einen Giver ihr braucht und ich poste ihn euch hier im Thread.
Wenn ihr moechtet, koennen wir auch gern einzelne Giver Komplett aufdroeseln und entschluesseln welche Funktionen notwendig sind und wofuer sie sind.

@Niani
Du hast da etwas uebersehen, das zweite Script ist nicht kuerzer, es ist sogar bis auf eine kleinigkeit mit dem oberen identisch, es fehlt nur der ganze rest.

Im Grunde koennen Giver total klein sein, es kommt halt darauf an wofuer sie gedacht sind.

LG
Dae
 
huhu,

weil in diesem Thread Inventar Vemuellung thematisiert wurde, haenge ich das mal hier an.

Ich habe nun einen Langzeit Test im Selbstversuch durchgefuehrt und kam zu einem erschreckenden Ergebniss.
Bis vor kurzem hatte ich noch ueber 164000 Items in meinem Inventar.
Nun habe ich mal alles geloescht, wo DEMO dran stand.

Kurze Erklaerung:
Ich habe nun etwa 1 Jahr lang keine einzige DEMO, ganz gleich ob Inworld oder Marketplace aus meinem Inventar geloesch.
Unglaublich wie viel Zeug sich dabei ansammelt.
Bei den reinen Product-Boxen im Ordner "Objekte" und Product-Folder im Ordner "Erhaltene Items" handelte es sich zusammen um rund 1500 Eintraege.
Das erschreckende daran, diese 1500 Eintraege entfalten sich nach dem Auspacken um sage und schreibe 18000 Items.

Nachdem ich diese nun alle geloescht habe, belaeuft sich mein Inventar nun auf rund 146000 Items.
So ganz nebenbei weiss ich nun auch, das der Papierkorb lediglich rund 5000 Items auf einmal fassen kann, bevor es zu einer Fehlermeldung kommt.
Das heisst, ich musste den zwischendurch 3 mal leeren, bevor ich weiter machen konnte.

Wenn ich mir jetzt noch die Arbeit machen wuerde alle Klamotten zu loeschen, welche nicht fuer den Maitreya Body sind, bei allen Produkten die ich gekauft habe, wuerde sich mein Inventar locker auf die haelfte reduzieren.

LG
Dae
 
... ich hab im Moment auch soviel Items wie lange nicht im Inventar. Durch Umbauen,
kopieren oder Zuordnung in einzelne "Projekte" sogar doppelt, dreifach und vierfach...
dntknw.gif


Ich weiß garnicht wohin mit meinen 24000 Items
sorry.gif
 
Mir ist bewusst, dass der größte Inventarmultiplikator meine Outfits sind. Erst recht, wenn ich aus'm Fatpack einzelne Farben extra nochmal speichere, weil manche Ersteller unanständig große Color-HUDs machen.

Keine Outfits machen ist keine Lösung, also leb ich mit der reinen Item-Anzahl. Und nein, ich verrat sie jetzt nicht :o_o:
 

Users who are viewing this thread

Zurück
Oben Unten