SCRIPT HUD /Empfaenger / Kleidungsstueck

key Owner; // definieren der variablen für den UUID des Owners
integer ObjectChannel = -3456451; // über diesne Kanal kommunizieren die Scripte untereinander
string URL = "https://marketplace.secondlife.com/de-DE/stores/30293"; // diese URL wird im Browser geöffnet

default // default state - da startet alles
{
    state_entry() // wenn das script in diesen state kommt, wird das mal ausgeführt
    {
        Owner = llGetOwner(); // wir füllen die Varable Owner mit der UUID des Owners
        if(llGetAttached() != 0) // wir fragen ab, ob der HUD an einem Attachpunkt hängt. 0=gerezzt
        {
            llRequestPermissions(Owner, PERMISSION_ATTACH ); // Abfrage, ob wir Attach/Detach ausführen dürfen.
        }
    }
    
    run_time_permissions(integer perm) // hier kommen wir auf Grund des permission requests
    {
        if(perm & PERMISSION_ATTACH) // wenn die permission (Erlaubnis) erteilt wurde - im Fall von Attach wird das automatisch gegeben.
        {
            llOwnerSay("Betriebsbereit..."); // verständigen wir mal den Owner
        }
    }

    touch_start(integer total_number) // jemand drückte auf die Maustaste (Touch) und dann läufts hier weiter
    {
        integer LinkNumber = llDetectedLinkNumber(0); // die Link Nummer des berühten Objektes im Linkset
        string LinkName = llGetLinkName(LinkNumber); // der Name des berührten Objektes - auch wenn sich bei einem re-link die Nummern ändern, bleibt der Objektname erhalten.
        
        list ParsedName = llParseString2List(LinkName, [" "], []); // Wir nehmen mal an, dass "Stoffe 2" gewählt wurde und zerlegen das in eine Liste, also ["Stoffe", "2"]
        string Name = llList2String(ParsedName, 0); // und jetzt nehmen wir nur den Namen - "Stoffe"
        // string Number = llList2String(ParsedName, 1);
        
        if(Name == "Stoffe") // oder if(Name == "Stoffe" || Name == "Metalle")
        {
            llSay(ObjectChannel, LinkName); // wenn's Stoffe sind, senden wir "Stoffe 2" weiter in den Channel - den ören alle, die ein Listen für diesen channel aufgesetzt haben
        }
        else if(Name == "Metalle") // ebenso mit den Metallen
        {
            llSay(ObjectChannel, LinkName); // auch weiterschicken
        }
        else if(Name == "Werbung") // wenn's der Werbeknopf war, öffnen wir die gewünschte URL im Browser
        {
            llLoadURL(Owner, "Marketplace", URL); // die URL wird am Anfang definiert - das ist besser für die Wartung
        }
        else if(Name == "abnehmen") // wenn wer auf den schließen Knopf gedrückt hat
        {
            if(llGetAttached() != 0) // zuerst mal sicher stellen, dass wir am avatar hängen
            {
                llDetachFromAvatar(); // und dann abnehmen.
            }
        }
    }
    
    attach(key AvatarID) // hierher kommen wir, wenn der HUD angezogen wird
    {
        if(AvatarID != Owner) // wenn der Avatar nicht auch Owner ist
        {
            llResetScript(); // resetten wir mal das script
        }
    }
    
    on_rez(integer Dae) // wenn jemand den HUD rezzt
    {
        llResetScript(); // machen wir auch ein reset für die Grundstellung
    }
}
 
 
 
Empfaenger / Kleidungsstueck 


key Owner; // definieren der variablen für den UUID des Owners
integer ObjectChannel = -3456451; // über diesne Kanal kommunizieren die Scripte untereinander (muss mit dem HUD übereinstimmen)

// Globale variable - auf die kann von überall zugegriffen werden
list StoffTexturen = ["ccf5029d-5133-c17c-90a2-d88a1200d36b",  // Stoff Rot
                      "f6bd619d-aa54-bbaa-dcf5-456e03204071",  // Stoff kleine Maedchen_Farbe
                      "2b9a2897-1ae4-ea2e-5503-ef44fd624477",  // Stoff Blau
                      "e521c76c-5aaa-d726-b640-87e5af0e0bc6",  // Stoff Gruen
                      "131adb45-737a-6257-0142-bf0965588901"]; // Stoff Gelb

list MetallTexturen = ["3d9a54e2-2080-0f8d-b388-b3abcb04f7e3",  // Metall Gold
                       "9e63d7a9-4fce-8c45-03f3-a5eab99c827f",  // Metall Silber
                       "adf02c18-f5ab-2177-dcc5-f7559f4efe9b"]; // Metall Cupfer

default
{
    state_entry()
    {
        Owner = llGetOwner();
        llListen(ObjectChannel, "", "", ""); // wir horchen auf den oben definierten Kanal
    }

    listen(integer channel, string name, key id, string message) // wenn irgendjemand (id) am channel (channel) die Nachricht (message) sendet, hören wir das hier (in unserem Beispiel "Stoffe 2" - wie im HUD definiert
    {
        if(llGetOwnerKey(id) == Owner) // wir wollen nur die Nachrichten vom Owner haben - hören tun wir alle! Den UUID vom Sender bekommen wir in der variablen id
        {
            list ParsedMessage = llParseString2List(message, [" "], []); // Wir zerlegen die Nachricht wieder in die Teile
            string cmd = llList2String(ParsedMessage, 0); // "Stoffe"
            integer num = llList2Integer(ParsedMessage, 1); // 2
            
            if(cmd == "Stoffe") // wenns die Stoffe sind
            {
                llSetLinkTexture(LINK_THIS, llList2String(StoffTexturen, (integer)num), 3); // zeigen wir die ausgewählte Textur Nr. 2 auf der Fläche (Face) 3 an. AUFPASSEN: Listen fangen bei 0 an zu zählen
            }
            else if(cmd == "Metalle") // genauso für Metalle, aber auf der Fläche (Face) 1
            {
                llSetLinkTexture(LINK_THIS, llList2String(MetallTexturen, (integer)num), 1);
            }
        }
    }
    
    attach(key id) // kennen wir schon vom HUD
    {
        if(id != Owner)
        {
            llResetScript();
        }
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Kommentare