Difference between revisions of "User:Daemonika Nightfire/Scripts/Variable Tutorial"

From Second Life Wiki
Jump to navigation Jump to search
Line 2: Line 2:
Das hier ist die gebraeuchlichste Variante eines Hovertextes. Hier bei werden die entsprechenden variablen [[string]] Text, [[vector]] Color und [[float]] Alpha, einfach direkt in den Befehl eingetragen.
Das hier ist die gebraeuchlichste Variante eines Hovertextes. Hier bei werden die entsprechenden variablen [[string]] Text, [[vector]] Color und [[float]] Alpha, einfach direkt in den Befehl eingetragen.


<LSL>
<source lang="lsl2">
default
default
{
{
Line 11: Line 11:
     }
     }
}
}
</LSL>
</source>


==Variable im Event==
==Variable im Event==
Bei dieser Variante stehen die Variablen direkt im selben Event, wo sich der Befehl befindet. Das hat aber einen entscheidenen Nachteil, wenn man die Variablen zusaetzlich in einem anderen Event benoetigt. In dem Fall muesste man sie im entsprechenden Event erneut eintragen. Der vorteil bei dieser Variante ist jedoch, es benoetigt weniger Script-Memory als die Globale Variante.
Bei dieser Variante stehen die Variablen direkt im selben Event, wo sich der Befehl befindet. Das hat aber einen entscheidenen Nachteil, wenn man die Variablen zusaetzlich in einem anderen Event benoetigt. In dem Fall muesste man sie im entsprechenden Event erneut eintragen. Der vorteil bei dieser Variante ist jedoch, es benoetigt weniger Script-Memory als die Globale Variante.


<LSL>
<source lang="lsl2">
default
default
{
{
Line 29: Line 29:
     }
     }
}
}
</LSL>
</source>
  Spaetestens ab diesem Beispiel sollte es verstaendlich sein, weshalb ich immer auf ordentliche Einrueckungen der Klammern bestehe.
  Spaetestens ab diesem Beispiel sollte es verstaendlich sein, weshalb ich immer auf ordentliche Einrueckungen der Klammern bestehe.
  Variablen sind naemlich immer nur auf gleicher hoehe, oder abwaerts ''(nach rechts)'' gueltig, niemals eine Klammer hinauf ''(nach links)''.
  Variablen sind naemlich immer nur auf gleicher hoehe, oder abwaerts ''(nach rechts)'' gueltig, niemals eine Klammer hinauf ''(nach links)''.
Line 39: Line 39:
|-
|-
||
||
<lsl>
<source lang="lsl2">
default
default
{
{
Line 61: Line 61:
     }
     }
}
}
</lsl>
</source>
||
||
<lsl>
<source lang="lsl2">
default
default
{
{
Line 85: Line 85:
     }
     }
}
}
</lsl>
</source>
|-
|-
|}
|}
Line 92: Line 92:
Das hier ist die Globale Variante, wo die Variablen ueber dem Script festgelegt werden. Der Vorteil dieser Variante ist, man kann die Variablen im kompletten Script immer wieder abfragen ohne sie fuer jeden event erneut festlegen zu muessen. Der Nachteil bei dieser Variante waere der erhoehte Memory-Verbrauch, was sich jedoch egalisiert, da man wiederum spart, wenn man es im Script nicht jedesmal fuer jeden Event neu festlegen muss.
Das hier ist die Globale Variante, wo die Variablen ueber dem Script festgelegt werden. Der Vorteil dieser Variante ist, man kann die Variablen im kompletten Script immer wieder abfragen ohne sie fuer jeden event erneut festlegen zu muessen. Der Nachteil bei dieser Variante waere der erhoehte Memory-Verbrauch, was sich jedoch egalisiert, da man wiederum spart, wenn man es im Script nicht jedesmal fuer jeden Event neu festlegen muss.


<LSL>
<source lang="lsl2">
string globalText = "das ist der angegebene text";
string globalText = "das ist der angegebene text";
vector globalColor = <1,1,1>;
vector globalColor = <1,1,1>;
Line 105: Line 105:
     }
     }
}
}
</LSL>
</source>


==Wechselnde Variable==
==Wechselnde Variable==
Dieses Beispiel soll zeigen wie man Globale Variablen waerend eines Script-Verlaufs beeinflussen kann.
Dieses Beispiel soll zeigen wie man Globale Variablen waerend eines Script-Verlaufs beeinflussen kann.


<LSL>
<source lang="lsl2">
integer status = FALSE; // statuswechsel (lol, schon wieder^^)
integer status = FALSE; // statuswechsel (lol, schon wieder^^)


Line 149: Line 149:
     }
     }
}
}
</LSL>
</source>


==Counter==
==Counter==
Klein aber nuetzlich. Dieser kleiner Counter zaehlt einfach jeden klick auf dem Prim. Die Funktionsweise wird sehr oft in den verschiedensten Variationen verwendet, also merken. ;)
Klein aber nuetzlich. Dieser kleiner Counter zaehlt einfach jeden klick auf dem Prim. Die Funktionsweise wird sehr oft in den verschiedensten Variationen verwendet, also merken. ;)


<LSL>
<source lang="lsl2">
integer count = 0; // Zaehler beginnt mit 0
integer count = 0; // Zaehler beginnt mit 0


Line 175: Line 175:
     }
     }
}
}
</LSL>
</source>

Revision as of 08:08, 6 February 2015

Einfacher Hovertext (Variable direkt im Befehl)

Das hier ist die gebraeuchlichste Variante eines Hovertextes. Hier bei werden die entsprechenden variablen string Text, vector Color und float Alpha, einfach direkt in den Befehl eingetragen.

default
{
    state_entry()
    {
        //llSetText(string Text, vector Color, float Alpha);
        llSetText("das ist der angegebene text", <1,1,1>, 1.0);
    }
}

Variable im Event

Bei dieser Variante stehen die Variablen direkt im selben Event, wo sich der Befehl befindet. Das hat aber einen entscheidenen Nachteil, wenn man die Variablen zusaetzlich in einem anderen Event benoetigt. In dem Fall muesste man sie im entsprechenden Event erneut eintragen. Der vorteil bei dieser Variante ist jedoch, es benoetigt weniger Script-Memory als die Globale Variante.

default
{
    state_entry()
    {
        string ImEventText = "das ist der angegebene text";
        vector ImEventColor = <1,1,1>;
        float ImEventAlpha = 1.0;
        
        //llSetText(string Text, vector Color, float Alpha);
        llSetText(ImEventText, ImEventColor, ImEventAlpha);
    }
}
Spaetestens ab diesem Beispiel sollte es verstaendlich sein, weshalb ich immer auf ordentliche Einrueckungen der Klammern bestehe.
Variablen sind naemlich immer nur auf gleicher hoehe, oder abwaerts (nach rechts) gueltig, niemals eine Klammer hinauf (nach links).
Richtig Falsch
default
{
    state_entry()
    {
        string ImEventText = "das ist der angegebene text";
        vector ImEventColor = <1,1,1>;
        float ImEventAlpha = 1.0;
        // ---> Die Variablen gelten ab hier
        {
            {
                {
                    // <--- bis hier
                    //llSetText(string Text, vector Color, float Alpha);
                    llSetText(ImEventText, ImEventColor, ImEventAlpha);
                }
            }
        }
        // <--- bis maximal hier auf gleicher hoehe
        // hier koennte man weitere Befehle mit den Variablen ausfuehren
    }
}
default
{
    state_entry()
    {
        {
            {
                string ImEventText = "das ist der angegebene text";
                vector ImEventColor = <1,1,1>;
                float ImEventAlpha = 1.0;
                // ---> Die Variablen gelten ab hier
                {
                    // <--- bis hier
                }
                // <--- bis maximal hier auf gleicher hoehe
            }
        }
        // Der Hovertext wuerde hier eine Fehlermeldung ausgeben.
        //llSetText(string Text, vector Color, float Alpha);
        llSetText(ImEventText, ImEventColor, ImEventAlpha);
    }
}

Global angelegte Variable

Das hier ist die Globale Variante, wo die Variablen ueber dem Script festgelegt werden. Der Vorteil dieser Variante ist, man kann die Variablen im kompletten Script immer wieder abfragen ohne sie fuer jeden event erneut festlegen zu muessen. Der Nachteil bei dieser Variante waere der erhoehte Memory-Verbrauch, was sich jedoch egalisiert, da man wiederum spart, wenn man es im Script nicht jedesmal fuer jeden Event neu festlegen muss.

string globalText = "das ist der angegebene text";
vector globalColor = <1,1,1>;
float globalAlpha = 1.0;

default
{
    state_entry()
    {
        //llSetText(string Text, vector Color, float Alpha);
        llSetText(globalText, globalColor, globalAlpha);
    }
}

Wechselnde Variable

Dieses Beispiel soll zeigen wie man Globale Variablen waerend eines Script-Verlaufs beeinflussen kann.

integer status = FALSE; // statuswechsel (lol, schon wieder^^)

string globalText = "das ist der global angegebene text"; // global angegebener text
vector globalColor = <1,1,1>; // global weiss angegeben
float globalAlpha = 1.0;

default
{
    state_entry()
    {
        llSetText(globalText, globalColor, globalAlpha); // beim start des scripts werden zuerst die globalen variablen aufgerufen
    }
    
    touch_start(integer total_number)
    {
        if(status == FALSE)
        {
            status = TRUE;
            
            globalText = "gewechselter Text"; // der globbale text geaendert
            globalColor = <1,0,0>; // den globalen weissen code in rot geaendert
        }
        else if(status == TRUE)
        {
            status = FALSE;
            
            globalText = "das ist der global angegebene text"; // der geaenderte text zurueck editiert
            globalColor = <0,1,0>; // den ueberschriebenen roten code in gruen geaendert
        }
        //llSetText(string Text, vector Color, float Alpha);
        llSetText(globalText, globalColor, globalAlpha); // setzt den Hovertext mit geaenderten variablen
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Counter

Klein aber nuetzlich. Dieser kleiner Counter zaehlt einfach jeden klick auf dem Prim. Die Funktionsweise wird sehr oft in den verschiedensten Variationen verwendet, also merken. ;)

integer count = 0; // Zaehler beginnt mit 0

default
{
    state_entry()
    {
        //llSay(0, "Hello, Avatar!");
    }
    
    touch_start(integer total_number)
    {
        count += 1; // Zaehlt bei klick 1 dazu und speichert es in die Variable
        llSay(0,"Touched " + (string)count + " times."); // gibt den Wert im localen Chat wieder.
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}