1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
    Information ausblenden
  3. Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.
    Information ausblenden

Scripten Lernen (Deutsch)

Dieses Thema im Forum "Scripting" wurde erstellt von Daemonika Nightfire, 20. März 2018.

?

Wer hat Interesse, Scripte zu verstehen?

Diese Umfrage wurde geschlossen: 24. März 2018
  1. JA

    100,0%
  2. NEIN

    0 Stimme(n)
    0,0%
  1. Brigitt Loening

    Brigitt Loening Superstar

    Beiträge:
    1.761
    Zustimmungen:
    278
    Punkte für Erfolge:
    83
    @Marian Dufaux, überlegs Dir. Es ist nicht so schlimm, wie es hier grad aussieht.
     
  2. Marian Dufaux

    Marian Dufaux Aktiver Nutzer

    Beiträge:
    331
    Zustimmungen:
    256
    Punkte für Erfolge:
    63
    @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.
     
  3. Wolwaner Jervil

    Wolwaner Jervil Freund/in des Forums

    Beiträge:
    695
    Zustimmungen:
    51
    Punkte für Erfolge:
    38
    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.
     
  4. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    @Marian Dufaux der einfachste Lernprozess ist ausprobieren.
    Darum habe ich die Lektion 4 zerlegt, um auszuprobieren was die einzelnen Funktionen ueberhaupt so machen.
    Wenn du aus Spass einfach mal die Funktions-Seite der Wiki auf machst und dir irgend welche Befehle heraus suchst, die dir optisch zusagen und damit herum experimentierst, werden dir frueher oder spaeter Gemeinsamkeiten auffallen.

    Kleiner Tipp, alle Funktionen folgen dem gleichen Chema.
    Bei den Befehlen mit einem offensichtlich ersichtlichen Namen, was sich dahinter verbergen koennte, kannst du dich zu 90% darauf verlassen, das du sie im touch(... Event ausprobieren kannst.
    Wenn du das Verstaendniss fuer die Klammern und Semicolons trainieren willst, kopiere die Beispiel-Scripte aus der Wiki nicht einfach heraus, sondern schreibe die von oben nach unten einfach ab. ;)

    LG
    Dae
     
    surini gefällt das.
  5. Marian Dufaux

    Marian Dufaux Aktiver Nutzer

    Beiträge:
    331
    Zustimmungen:
    256
    Punkte für Erfolge:
    63
    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.
    @Daemonika Nightfire und ja ich werde es einfach mal ausprobieren. Gestern hatte ich wieder das Problem, dass mein Sender, also der Hud, natürlich nicht funzte. Ich glaube aber, ich habe den Fehler gefunden. Muss ich nachher mal testen.
     
    surini gefällt das.
  6. Wolwaner Jervil

    Wolwaner Jervil Freund/in des Forums

    Beiträge:
    695
    Zustimmungen:
    51
    Punkte für Erfolge:
    38
    Vielleicht noch was aus meiner eigenen Programmier-Erfahrung: Bei Problemen haben wir uns immer jemanden geholt und demjenigen den Ablauf erklärt - auch wenn derjenige sonst nicht beteiligt war, wurde im Normalfall der Fehler gefunden.
    Also nicht ewig und verzweifelt an einem ding stundenlang rumkäämpfen, sondern miteinander reden.
     
  7. surini

    surini Nutzer

    Beiträge:
    42
    Zustimmungen:
    54
    Punkte für Erfolge:
    19
    ich bin ja froh das uli mitfilmt so kann man sich die videos immer wieder anschauen wenn man was vergessen hat . )
     
  8. Uli Jansma

    Uli Jansma Inworld Koordinator Mitarbeiter

    Beiträge:
    7.678
    Zustimmungen:
    2.193
    Punkte für Erfolge:
    154
    Ich werde heute Abend nicht mit dabei sein ... also diesmal kein Video - tut mir Leid :sorry:
     
  9. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    Das ist OK Uli, jeder hat hin und wieder mal was anderes vor, ausserdem machst du das ja auch freiwillig.
    Das muss dir nicht Leid tun, niemand hat Anspruch darauf, das du mitfilmst. :)
    Schade finde ich nur, das du selber den Kurs verpasst hast. Nichts desto Trotz kannst du dir mein Meispiel in der Schule gern kopieren und wir koennen das mal in kleiner Runde durchgehen, wenn du magst.

    Ich habe aber noch vor, das fertige Script und ein kleines Extra hier im Forum zu posten. Das dauert aber noch, da ich diese Woche sehr wenig Zeit habe und erst noch etwas dafuer vorbereiten muss.

    LG
    Dae
     
  10. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    huhu ihr suessen,

    tut mir leid das ich schon wieder so spaet dran bin.

    Zu aller erst moecht ich mich bei Wolwaner bedanken, dafuer das er die tollen Kommentare ins Script eingefuegt hat, welches ich euch natuerlich nicht vorenthalten moechte.

    Im folgenden Script ist es notwendig, die Button der einzelnen Funktionen entsprechend der kategorie alle gleich zu benennen, mit ausnahme der Zahl direkt hinter dem Namen.
    Zum beispiel heissen hier die Button wiefolgt.
    • Stoffe 0 , Stoffe 1 , Stoffe 2 , Stoffe 3 und Stoffe 4
    • Metalle 0 , Metalle 1 und Metalle 2
    • Werbung
    • anbehmen
    Sender / Hud
    Code:
    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

    Code:
    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();
        }
    }
    Das aktuelle Beispiel findet ihr auch noch Inworld in der Script Schule fullperm & free to copy.

    Ich muss sagen, das Script war schon sehr aufwendig und eigentlich nicht mehr Anfaenger Kurs, doch es freut mich sehr, das es doch verstanden wurde.

    Fuer den naechsten Kurs schalten wir wieder einen gang zurueck und witmen uns etwas einfacherem.
    Auf allgemeinen Wunsch befassen wir uns mit Message Linked. Das bedeutet Kommunikation zwischen Scripten innerhalb eines Linksets oder eines Links.

    Der naechste Kurs findet morgen den 24.6.2018 um 20 uhr wieder auf Bay of Surreality statt.

    LG
    Dae
     
    hkalegre Koba, surini und Marian Dufaux gefällt das.
  11. surini

    surini Nutzer

    Beiträge:
    42
    Zustimmungen:
    54
    Punkte für Erfolge:
    19
    Zuletzt bearbeitet: 24. Juni 2018
    Daemonika Nightfire gefällt das.
  12. hkalegre Koba

    hkalegre Koba Aktiver Nutzer

    Beiträge:
    196
    Zustimmungen:
    85
    Punkte für Erfolge:
    29
    Hier eine praktische Anwendung mit deinem Script.
    Btw. Es genügt ein Bild hochzuladen, wenn die Klick-Bereiche transparent gemacht werden.

    MakingOfApplier.png
     
    Daemonika Nightfire gefällt das.
  13. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    Genau, es genuegt ein einziges Bild fuer den ganzen Hud.
    Dabei sind der Fantasie keine Grenzen gesetzt und es funktionieren auch Alpha Texturen, um dem Hud eine beliebige Form bzw. Design zu verpassen.
    Dadurch spart man sich jede menge Ladezeiten und bekommt keine Meldung, das der Hud viel Speicher beansprucht.

    Uebrigens, auf dem Hud kann man mehrere Alpha Texturen uebereinander legen, der Alpha Bug ist dort nicht wirklich existent. ;)

    LG
    Dae
     
    hkalegre Koba gefällt das.
  14. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    huhu ihr suessen,

    fuer den morgigen Kurs haben wir uns auf einen Greeter geeinigt.
    Dabei sehen wir uns folgendes Script an *DS* Greeter (volume_detect) v1.0.05

    Um das Script zu verstehen, befassen wir uns mit den zwei Events timer und collision.

    Der Kurs findet morgen den 8.7.2018 wie ueblich um 20 Uhr auf Bay of Surreality statt.

    LG
    Dae
     
    Brigitt Loening gefällt das.
  15. Wolwaner Jervil

    Wolwaner Jervil Freund/in des Forums

    Beiträge:
    695
    Zustimmungen:
    51
    Punkte für Erfolge:
    38
    Da am letzten Sonntag die Frage war, wozu man einen Timer verwendet - hier mal Beispiele:
    1) Wenn man auf etwas wartet, ist ein timer gut, damit das nicht in alle Ewigkeit passiert. Das gilt für alles, wo der User was tun muss (z.B. Menüauswahl).
    2) Ich habe einen Teleport-Hud gemacht, der nach Ablauf einer Zeitspanne weiter teleportiert.
    3) Für Spiele-Boxen ist ein Timer interessant, falls der Spieler einfach verschwindet und damit das Spiel nie beendet würde und somit kein anderer Spiele drankommt.
     
  16. hkalegre Koba

    hkalegre Koba Aktiver Nutzer

    Beiträge:
    196
    Zustimmungen:
    85
    Punkte für Erfolge:
    29
    4) Bei Verkaufsboxen, die sich nach dem Entpacken von selbst löschen.
     
  17. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    Stimmt, eigentlich benoetigt man immer dann einen Timer, wenn etwas ohne aeussere Einwirkung automatisch ablaufen soll.
    Automatisches Starten/Beenden oder automatisches Wiederholen.

    Der Event bleibt in jedem Fall der selbe, lediglich was abgefragt und was ausgefuehrt werden soll unterscheidet sich in der Funktionsweise des Objects.

    LG
    Dae
     
  18. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.381
    Zustimmungen:
    423
    Punkte für Erfolge:
    93
    huhu ihr suessen,

    bevor ich es wieder vergesse.
    Diesen Sontnag den 22.7.2018 um 20 Uhr findet wieder der ScriptKurs auf Bay of Surreality statt.

    Letztes mal war das Thema doch so Abendfuellend, das wir nicht mehr zum Collisions Event gekommen sind.
    Das holen wir kommenden Sonntag nach.

    LG
    Dae
     
    Brigitt Loening gefällt das.

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deinem Erleben anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden