Difference between revisions of "User:Daemonika Nightfire/Scripts/Liste"

From Second Life Wiki
Jump to navigation Jump to search
Line 185: Line 185:
! '''Bestimmten Inhalt einer Liste loeschen'''
! '''Bestimmten Inhalt einer Liste loeschen'''
|-
|-
||
||<source lang="lsl2">
key owner;
 
list numbers = [1, "eins", 2, "zwei", 3, "drei"];
 
default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03 " + llKey2Name(owner));
    }
 
    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
       
        integer index = llListFindList(numbers, ["zwei"]);
        if(index != -1)
        {
            numbers = llListInsertList(numbers, [1.5, "eineinhalb"], index-1);
            llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
        }
        numbers = [1, "eins", 2, "zwei", 3, "drei"];
    }
   
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
</source>
||<source lang="lsl2">
key owner;
 
//list numbers = [index0, index1, index2, index3, index4, index5] ;
list numbers = [1, "eins", 2, "zwei", 3, "drei"];
 
default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03b " + llKey2Name(owner));
    }


    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
       
        integer index = llListFindList(numbers, [2]);
        if(index != -1)
        {
            //numbers = llDeleteSubList(numbers, 2, 3);
            numbers = llDeleteSubList(numbers, index, index+1);
            llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
        }
        numbers = [1, "eins", 2, "zwei", 3, "drei"];
    }
   
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
</source>
|- {{Hl2}}
|- {{Hl2}}
! '''Bestimmten Bereich einer Liste ersetzen'''
! '''Bestimmten Bereich einer Liste ersetzen'''
! '''Liste sortieren'''
! '''Liste sortieren'''
|-
|-
||
||<source lang="lsl2">
key owner;
 
list numbers = [1, "eins", 2, "zwei", 3, "drei", 4, "vier", 5, "fuenf"];
 
default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03c " + llKey2Name(owner));
    }
 
    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
       
        numbers = llListReplaceList(numbers, ["z", "zett"], 2, 3);
       
        llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
       
        numbers = [1, "eins", 2, "zwei", 3, "drei", 4, "vier", 5, "fuenf"];
    }
   
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
</source>
||<source lang="lsl2">
key owner;
 
list numbers = [2, "eins", 3, "zwei", 1, "drei"];
//list numbers = [1, 2, 3, "zwei", "drei", "eins"];
 
default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03d " + llKey2Name(owner));
    }


    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
       
        numbers = llListSort(numbers, 2, TRUE);
       
        llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
       
        numbers = [1, 2, 3, "zwei", "drei", "eins"];
    }
   
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
</source>
|- {{Hl2}}
|- {{Hl2}}
! '''Liste mischen'''
! '''Liste mischen'''
! '''coming soon'''
! '''coming soon'''
|-
|-
||<source lang="lsl2">
key owner;
list numbers = [1, "eins", 2, "zwei", 3, "drei"];
default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03e " + llKey2Name(owner));
    }
    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
       
        numbers = llListRandomize(numbers, 2);
       
        llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
    }
   
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
</source>
||
||
|}
|}


<div align="center"><font color="red">'''''Under Construction...'''''</font></div>
<div align="center"><font color="red">'''''Under Construction...'''''</font></div>

Revision as of 07:04, 31 December 2019

Under Construction...

Einfache Beispiele fuer die Verarbeitung von Listen

Du wirst bemerken, das alle Beispiele eine Owner Abfrage besitzen und das Object umbenennen. Das dient dem zweck die Beispiele Inworld moeglichst unkompliziert zu unterscheiden und zu erkennen wem das entsprechende Object gehoert.

Im ersten Beispiel sehen wir welche Art Variablen wir in einer Liste eintragen und verarbeiten koennen.
Dabei wird dir auffallen, das eine Variable Fehlt.
Wir koennen zwar Listen zu einer Liste hinzufuegen, jedoch nur die Inhalte und nicht die Liste selbst als ganzes.
List Contents
key owner;

list everything = [
                    "text",                                 // string   (Text)
                    1,                                      // integer  (Ganzzahl)
                    1.0,                                    // float    (Kommazahl)
                    <1.00000,1.00000,1.00000>,              // vector   (Koordinate, Farbe, Offset)
                    <0.00000, 0.00000, 0.00000, 1.00000>,   // rotation (Quaternion)
                    "61ee201a-81cf-4322-b9a8-a5eb8da777c2"  // key      (UUID)
                  ];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 01 " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        // Die Nummerierung am Ende der einzelnen Zeilen entspricht dem Index (Stellenwert) in der Liste.
        string Text = llList2String(everything, 0);
        integer Ganzzahl = llList2Integer(everything, 1);
        float Kommazahl = llList2Float(everything, 2);
        vector KFO = llList2Vector(everything, 3);
        rotation Q = llList2Rot(everything, 4);
        key UUID = llList2Key(everything, 5);
        
        llSay(0, "\nText = " + Text +
                 "\nGanzzahl = " + (string)Ganzzahl +
                 "\nKommazahl = " + (string)Kommazahl +
                 "\nKoordinate = " + (string)KFO +
                 "\nQuaternion = " + (string)Q +
                 "\nUUID = " + (string)UUID);
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Index (Stellenwert)

Bei folgenden Beispielen gehen wir darauf ein, ganze listen oder bestimmte Bereiche einer Liste abzufragen. Fuer die Ausgabe verwenden wir wie gehabt den lokalen Chat. Dabei muessen wir uns merken, das der Index in Listen grundsaetzlich bei 0 (null) beginnt.

llDumpList2String( list Source, string Separator );
/*
    Dieses Beispiel verdeutlicht wie leicht eine ganze Liste mit individuellen Trennzeichen ausgegeben wird.
    Es wird kein spezieller Index festgelegt, sondern die gesamte Liste ausgegeben.
*/

key owner;

list numbers = ["null", "eins", "zwei", "drei", "vier"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 02 " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        llSay(0, llDumpList2String(numbers, " | ")); // als Seperator (Trennzeichen) kann zwischen den Gaensefuessen alles verwendet werden.
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
Index ermitteln Index ermitteln & Bereich festlegen
/*
    In diesem Beispiel verwenden wir llListFindList,
    um den Index eines bestimmten Eintrags in der Liste zu finden.
    Anschliessend lassen wir mittels llList2String den Eintrag des Stellenwertes ausgeben.
*/

key owner;

list numbers = ["null", "eins", "zwei", "drei", "vier"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 02b " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        integer index = llListFindList(numbers, ["zwei"]);
        if(index != -1)
        {
            string output = llList2String(numbers, index);
            
            llSay(0,"mein index = " + (string)index +  " | meine Variable = " + output);
        }
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
/*
    In diesem Beispiel verwenden wir llListFindList,
    um den Index eines bestimmten Eintrags in der Liste zu finden.
    Anschliessend nutzen wir llList2List,
    um einen bestimmten Bereich fuer die Ausgabe mit Hilfe des Index zu selektieren.
*/

key owner;

list numbers = ["null", "eins", "zwei", "drei", "vier"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 02c " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        integer index = llListFindList(numbers, ["zwei"]);
        if(index != -1)
        {
            list output = llList2List(numbers, index, index + 1);
            // index entspricht dem Stellenwert des Eintrages
            
            llSay(0,"index start " + (string)index + " index end " + (string)(index+1) +
            "\n" +  llDumpList2String(output, ","));
        }
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Listen Manipulation

Listen-Inhalt zur bestehenden Liste Hinufuegen Bestimmten Inhalt einer Liste loeschen
key owner;

list numbers = [1, "eins", 2, "zwei", 3, "drei"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03 " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
        
        integer index = llListFindList(numbers, ["zwei"]);
        if(index != -1)
        {
            numbers = llListInsertList(numbers, [1.5, "eineinhalb"], index-1);
            llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
        }
        numbers = [1, "eins", 2, "zwei", 3, "drei"];
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
key owner;

//list numbers = [index0, index1, index2, index3, index4, index5] ;
list numbers = [1, "eins", 2, "zwei", 3, "drei"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03b " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
        
        integer index = llListFindList(numbers, [2]);
        if(index != -1)
        {
            //numbers = llDeleteSubList(numbers, 2, 3);
            numbers = llDeleteSubList(numbers, index, index+1);
            llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
        }
        numbers = [1, "eins", 2, "zwei", 3, "drei"];
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
Bestimmten Bereich einer Liste ersetzen Liste sortieren
key owner;

list numbers = [1, "eins", 2, "zwei", 3, "drei", 4, "vier", 5, "fuenf"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03c " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
        
        numbers = llListReplaceList(numbers, ["z", "zett"], 2, 3); 
        
        llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
        
        numbers = [1, "eins", 2, "zwei", 3, "drei", 4, "vier", 5, "fuenf"];
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
key owner;

list numbers = [2, "eins", 3, "zwei", 1, "drei"];
//list numbers = [1, 2, 3, "zwei", "drei", "eins"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03d " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
        
        numbers = llListSort(numbers, 2, TRUE);
        
        llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
        
        numbers = [1, 2, 3, "zwei", "drei", "eins"];
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
Liste mischen coming soon
key owner;

list numbers = [1, "eins", 2, "zwei", 3, "drei"];

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Liste 03e " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        llSay(0, "vorher: " + llDumpList2String(numbers, ", "));
        
        numbers = llListRandomize(numbers, 2);
        
        llSay(0, "nachher: " + llDumpList2String(numbers, ", "));
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}
Under Construction...