User:Daemonika Nightfire/Scripts/Funktion

From Second Life Wiki
Jump to navigation Jump to search

Einfache Beispiele fuer globale Funktionen

Die Verwendung globaler Funktionen bietet sich immer dann an, wenn identische Befehle oder ganze Befehlsketten mehr als einmal in einem Script benoetigt werden. Dabei koennen Funktionen von jedem beliebigen Event aus aufgerufen werden. In den nachfolgenden Beispielen verwenden wir den Touch Event um die Funktion auszuloesen. Wie bei Variablen koennen auch hier die Namen der Funktionen individuell bestimmt werden.

Funktion 01

Einfache globale Funktion
key owner;

Funktion() // globale Funktion
{
    llSay(0, "Touched.");
}

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

    touch_start(integer total_number)
    {
        Funktion(); // globale Funktion als Anweisung, beachte das Semikolon
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Funktion 02

Kompletter Touch/Schalter in eine Globale Funktion ausgelagert.
key owner;
integer status = FALSE;

Schalter() // globale Funktion
{
    if(status == FALSE)
    {
        status = TRUE;
        llSay(0, "STATUS_TRUE");
    }
    else if(status == TRUE)
    {
        status = FALSE;
        llSay(0, "STATUS_FALSE");
    }
}

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

    touch_start(integer total_number)
    {
        Schalter(); // globale Funktion als Anweisung, beachte das Semikolon
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Funktion 03

Diese globale Funktion verwendet eine veraenderliche Variable.
key owner;

GetName(key UUID) // globale Funktion mit Variable
{
    llSay(0, llKey2Name(UUID));
}

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

    touch_start(integer total_number)
    {
        key avatar = llDetectedKey(0);
        
        GetName(avatar); // globale Funktion als Anweisung, beachte das Semikolon
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Funktion 04

Diese globale Funktion setzt mehrere dynamische Variablen voraus.
key owner;

integer counter = 0;
Name_Clicks(key UUID, integer number) // globale Funktion
{
    llSay(0, llKey2Name(UUID) + ", clicks total: " + (string)number);
}

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Funktion 04 " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        key avatar = llDetectedKey(0);
        counter++;
        
        Name_Clicks(avatar, counter); // globale Funktion als Anweisung, beachte das Semikolon
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Funktion 05

Globale Funktion als dynamisch verwendete Variable.
key owner;

integer calc(integer num_1, integer num_2) // globale Funktion
{
    return num_1 + num_2;
}

default
{
    state_entry()
    {
        owner = llGetOwner();
        llSetObjectName("Funktion 05 " + llKey2Name(owner));
    }

    touch_start(integer total_number)
    {
        integer number_1 = 2;
        integer number_2 = 3;
        
        llSay(0, "Result: " + (string)calc(number_1, number_2)); // globale Funktion als Variable im Befehl
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}