User:Daemonika Nightfire/Scripts/Variable Tutorial

From Second Life Wiki
Jump to: navigation, search

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();
    }
}