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
Kommentar veröffentlichen
Danke für deinen Kommentar