Brigitt Loening
Superstar
@Marian Dufaux, überlegs Dir. Es ist nicht so schlimm, wie es hier grad aussieht.
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
@Brigitt Loening, das ist leichter gesagt als getan. Dae hat sich 2 mal die Zeit genommen und ist mit mir alles durchgegangen. Für den Moment verstehe ich einiges auch aber sobald ich dann selbst versuche es umzusetzen, stehe ich wieder am Anfang.@Marian Dufaux, überlegs Dir. Es ist nicht so schlimm, wie es hier grad aussieht.
Das ist immer so - was man gesagt bekommt hört sich immer einfacher an als es dann ist. Schrittweise weiter machen, wenn was unklar ist, fragen - ich helfe gerne mit. Inworld IM geht an meine E-Mail oder wir können uns einen Termin ausmachen.das ist leichter gesagt als getan. Dae hat sich 2 mal die Zeit genommen und ist mit mir alles durchgegangen. Für den Moment verstehe ich einiges auch aber sobald ich dann selbst versuche es umzusetzen, stehe ich wieder am Anfang.
Danke für das Angebot. Dae hat sich an mir auch schon die Zähne ausgebissen. Aber ich bedanke mich ganz herzlich bei ihr, dass sie so viel Geduld hatte.Das ist immer so - was man gesagt bekommt hört sich immer einfacher an als es dann ist. Schrittweise weiter machen, wenn was unklar ist, fragen - ich helfe gerne mit. Inworld IM geht an meine E-Mail oder wir können uns einen Termin ausmachen.
ich bin ja froh das uli mitfilmt
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
}
}
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();
}
}
integer Gesuchte_Link_Nummer;
Suchen()
{
integer Anzahl_Links = llGetNumberOfPrims();
integer i = 1;
do
{
string Link_Name = llGetLinkName(i);
if(Link_Name == "test")
{
Gesuchte_Link_Nummer = i;
}
}
while(++i <= Anzahl_Links);
}
default
{
state_entry()
{
Suchen();
llSay(0,"Dein Link namens \"" + llGetLinkName(Gesuchte_Link_Nummer) + "\" \nhat die Link-Nummer (" + (string)Gesuchte_Link_Nummer + ")");
}
changed(integer change)
{
if(change & CHANGED_LINK)
{
Suchen();
llSay(0,"Dein Link namens \"" + llGetLinkName(Gesuchte_Link_Nummer) + "\" hat die Link-Nummer (" + (string)Gesuchte_Link_Nummer + ")");
}
}
}
integer Gesuchte_Link_Nummer; // leerer integer fuer unsere unbekannte Link_Nummer
Suchen() // start unserer globalen Such-Funktion
{
integer Anzahl_Links = llGetNumberOfPrims(); // Speicherort fuer die Gesamt_Anzahl Links im LINK_SET
integer i = 1; // Startpunkt fuer den Counter in der "do while" Schleife (0 waere Sinnlos, da ein LINK_SET mit mehr als 1 Link immer mit 1 beginnt)
do // Anfang der "do while" Schleife
{
string Link_Name = llGetLinkName(i); // Fragt den Namen des aktuell gewaehlten Links nach (i wird mit jedem Durchlauf um 1 erhoeht)
if(Link_Name == "test") // Vergleicht den Link_Namen mit dem hier festgelegten Namen
{
Gesuchte_Link_Nummer = i; // Fuellt die globale Variable mit der Link_Nummer (i) wenn der Name ueberein stimmt
}
}
while(++i <= Anzahl_Links); // wiederholt hier den gesamten Vorgang, bis die letzte Link_Nummer erreicht wurde
}
default
{
state_entry() // loest aus, sobald das Script gespeichert oder resettet wird
{
Suchen(); // Startet die globale Such-Funktion (beachte das Semicolon am Ende)
// Chat-Meldung zum ueberpruefen, ob das Script alles richtig macht
llSay(0,"Dein Link namens \"" + llGetLinkName(Gesuchte_Link_Nummer) + "\" \nhat die Link-Nummer (" + (string)Gesuchte_Link_Nummer + ")");
}
changed(integer change) // loest immer dann aus, wenn sich am Object irgend etwas aendert
{
if(change & CHANGED_LINK) // loest nur dann aus, wenn sich das LINK_SET aendert ( Link hinzufuegen, entfehrnen oder drauf setzen)
{
Suchen(); // Startet die globale Such-Funktion (beachte das Semicolon am Ende)
// Chat-Meldung zum ueberpruefen, ob das Script alles richtig macht
llSay(0,"Dein Link namens \"" + llGetLinkName(Gesuchte_Link_Nummer) + "\" hat die Link-Nummer (" + (string)Gesuchte_Link_Nummer + ")");
}
}
}
integer Schalter = 0;
integer Gesuchte_Link_Nummer;
Suchen()
{
integer Anzahl_Links = llGetNumberOfPrims();
integer i = 1;
do
{
string Link_Name = llGetLinkName(i);
if(Link_Name == "test")
{
Gesuchte_Link_Nummer = i;
}
}
while(++i <= Anzahl_Links);
}
default
{
state_entry()
{
Suchen();
llSay(0,"Dein Link namens \"" + llGetLinkName(Gesuchte_Link_Nummer) + "\" \nhat die Link-Nummer (" + (string)Gesuchte_Link_Nummer + ")");
llSetLinkColor(Gesuchte_Link_Nummer, <1,0,0>, ALL_SIDES);
}
touch_start(integer NumberOfTouches)
{
if(Schalter == 0)
{
Schalter = 1;
llSetLinkColor(Gesuchte_Link_Nummer, <0,1,0>, ALL_SIDES);
}
else if(Schalter == 1)
{
Schalter = 0;
llSetLinkColor(Gesuchte_Link_Nummer, <1,0,0>, ALL_SIDES);
}
}
changed(integer change)
{
if(change & CHANGED_LINK)
{
Suchen();
llSay(0,"Dein Link namens \"" + llGetLinkName(Gesuchte_Link_Nummer) + "\" hat die Link-Nummer (" + (string)Gesuchte_Link_Nummer + ")");
}
}
}