1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. 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.
    Information ausblenden
  3. 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.
    Information ausblenden

Script zum Auspacken in ein Verzeichnis

Dieses Thema im Forum "Scripting" wurde erstellt von Aalyshah Pennell, 6. September 2018.

  1. Aalyshah Pennell

    Aalyshah Pennell Aktiver Nutzer

    Beiträge:
    209
    Zustimmungen:
    4
    Punkte für Erfolge:
    18
    Hallo,
    ich suche ein Script, dass man Sachen beim automatischen Auspacken gleich in passende Verzeichnisse ablegen kann.
    Liebe Grüße
    Lyshah :)
     
  2. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.496
    Zustimmungen:
    622
    Punkte für Erfolge:
    123
    huhu, das einzige was per Script ohne RLV geht ist einen Speziellen Ordner gleich beim Auspacken anzulegen.
    Den Ordner muss man anschliessend immer noch einsortieren.

    Folgendes Script legt einen Ordner an und gibt den kompletten Inhalt der Box aus.
    Das Script selbst jedoch bleibt in der Box, schliesslich will niemand den Muell auch noch entsorgen muessen.

    Code:
    /*
        *DS* Give Inventory ALL 2 Owner by Daemonika Nightfire
     
        Dieses Script gibt bei klick nur dem Besitzer den kompletten Inhalt, mit ausnahme des Scripts aus.
        Anders als bei den aelteren Scripten, wo der Inhalt bei jedem klicken neu ausgelesen wird,
        speichert dieses Script die Namen des Inhalts bereits im State_entry in eine Liste.
    */
    
    
    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 sich der Inhalt des Objects aendert
                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();
        }
    }
    An dieser Stelle "llGiveInventoryList(owner, llGetObjectName(), inventory);" kannst du anstelle von "llGetObjectName()" auch einen eigenen Namen in Gaensefuessen eintragen.
    Beispiel: llGiveInventoryList(owner, "Dein Ordner-Name", inventory);


    Nachtrag:
    Ganz wichtig, das scheinen immer noch einige nicht zu wissen.
    Inventar per Script entpacken funktioniert nicht bei (no copy) Items.
    Immer wieder muss ich Boxen vom Marketplace manuell mit rechter Maustaste oeffnen und auspacken, weil der Inhalt no copy ist und das Script diese einfach nicht ausgibt.

    LG
    Dae
     
    Zuletzt bearbeitet: 7. September 2018
  3. Aalyshah Pennell

    Aalyshah Pennell Aktiver Nutzer

    Beiträge:
    209
    Zustimmungen:
    4
    Punkte für Erfolge:
    18
    ok, erst einmal ein ganz liebes Danke an dich :). So wie ich das aber sehe, geht dann nur ein Verzeichnis, oder geht das auch mit Unterverzeichnisse?
     
  4. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.496
    Zustimmungen:
    622
    Punkte für Erfolge:
    123
    huhu,

    leider kann ein Script keine Unterverzeichnisse erstellen.
    Im Grunde ist es das gleiche wie die Baumenue Option "Oeffnen" um die Box bei linksklick ins Inventar zu entpacken.
    Praktisch ist das nur eine alternative Methode Boxen zu entpacken, bei der man sich den Inhalt und den Namen des Ordners aussuchen kann.

    LG
    Dae
     
    Durandir Darwin gefällt das.

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deinem Erleben anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden