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. Yara Eilde

    Yara Eilde Superstar

    Beiträge:
    1.587
    Zustimmungen:
    2.228
    Punkte für Erfolge:
    124
    Ich habe voller Verzweiflung heute auf der Testsim gestanden und wollte mein Animesh auch zum Tanzen bringen. Er stand stocksteif da und ich zweifelte an meinen kaum vorhandenen Scriptkenntnissen. Bis Natascha mir den Hinweis gab das man das Animesh mit rechts anklicken muss und dann Berühren. Und Tara... es tanzte.
    Ein einfaches Klicken reicht nicht, aber ich hatte nicht dran gedacht.
     
  2. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    huhu,

    aus diesem Grund haben wir beim Script-Kurs einen einfachen Prim Wuerfel als Root angelinkt, damit es einfach mit linker Maustaste klickbar ist.

    LG
    Dae
     
  3. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    huhu ihr suessen,

    im vergangenen Kurs haben wir uns ausschliesslich mit AniMesh beschaeftigt.
    Beim aktuellen Script verwenden wir 2 Animationen.
    Bei der ersten Animation handelt es sich um eine Stand-Ani, welche die ganze Zeit abgespielt wird.
    Die zweite Animation ist lediglich eine kurze Ani, die abgespielt wird, wenn jemand fremdes das AniMesh anklickt.

    Hier nun das aktuelle Script:
    Code:
    key owner; // Besitzer-Key
    integer Schalter = FALSE; // Globale Variable fuer den Schalter (Status aus).
    string Animation = ""; // Global angelegter Name fuer die Animation.
    string Anim2 = "dz427-Jump.N"; // Global angelegter Name fuer eine zweite Animation.
    
    default
    {
        state_entry() // Eingang, wird bei jedem Reset oder Speichern ausgefuehrt.
        {
            owner = llGetOwner();
            if(llGetInventoryNumber(INVENTORY_ANIMATION) > 0) // Abfrage ob mehr als keine Animation im Objekt liegt.
            {
                // Setzt hier den Namen der ersten Animation in die globale Variable ein.
                Animation = "*DS* male stand3"; //llGetInventoryName(INVENTORY_ANIMATION,0);
            }
        }
    
        touch_start(integer total_number) // Wird beim klicken ausgefuehrt
        {
            key avatar = llDetectedKey(0); // Erkennt den Key desjenigen der klickt
            if(avatar == owner) // Vergleicht den key mit dem Besitzer
            {
                if(Animation != "") // Prueft ob ein Name in der globalen Variable eingetragen ist.
                {
                    if(Schalter == FALSE) // prueft Schalter ( Status aus? )
                    {
                        Schalter = TRUE; // setzt den Status des Schalters auf an.
                        llStartObjectAnimation(Animation); // Startet die Animation im AniMesh.
                    }
                    else if(Schalter == TRUE) // prueft Schalter ( Status an? )
                    {
                        Schalter = FALSE; // setzt den Status des Schalters auf aus.
                        llStopObjectAnimation(Animation); // Stopt die Animation im AniMesh.
                    }
                }
            }
            else if(avatar != owner) // Vergleicht den key mit dem Besitzer
            {
                llSay(0, "Pfoten weg du Ferkel");
                llStartObjectAnimation(Anim2); // Startet die Animation im AniMesh.
                llSetTimerEvent(2); // Startet einen 2 Secunden Timer fuer die ungefaehre Dauer der zweiten Animation.
            }
        }
       
        timer()
        {
            llSetTimerEvent(0); // Stoppt den Timer wieder
            llStopObjectAnimation(Anim2); // Stopt die Animation im AniMesh.
        }
       
        changed(integer ch) // Wird immer ausgefuehrt, wenn sich am Object irgend etwas aendert.
        {
            if(ch & CHANGED_INVENTORY) // Prueft ob sich der Inhalt des Objects aendert.
            {
                llResetScript(); // resettet das Script.
            }
        }
       
        on_rez(integer Dae) // Wird immer ausgefuehrt, wenn das Object gerezzt wird, auch als Attachment.
        {
            llResetScript(); // resettet das Script.
        }
    }
    Wer das Script und die hier verwendeten Animationen haben moechte, kann sich den Deadpool 2 in der Script Schule kopieren.

    Nun aber zum kommenden Kurs.
    Jetzt wird es absolut Fortgeschritten, dennoch moechte ich nicht, das sich Anfaenger nun abgeschreckt fuehlen.

    Weil wir im Kurs noch nicht so Umfangreiche und erst recht nicht so komplexe Scripte geschrieben haben, werde ich das Script vorbereiten und wir gehen es inhaltlich Schitt fuer Schitt durch, weil ich weiss das wir das definitiv nicht in 2 Stunden geschrieben bekommen.

    Aktuell belegt das Script 308 Zeilen Script Code doch ich bin noch nicht ganz fertig.
    Mal sehen, vielleicht wird es auch wieder etwas weniger. ;)

    Der naechste Kurs findet am Sonntag den 20.01.2019 um 20 Uhr auf Bay of Surreality statt.

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

    Wolwaner Jervil Freund/in des Forums

    Beiträge:
    717
    Zustimmungen:
    69
    Punkte für Erfolge:
    38
    Ahhhhh - Zähmung der Monster ist angesagt :)
     
  5. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    Zwischenstand

    huhu,

    langsam nimmt es Formen an, bis jetzt bin ich bei 274 Zeilen Script Code.

    Bei dieser Gelegenheit moechte ich eindringlich davon abraten, die Scripte der Freebies die man auf den Animesh Regionen bekommt, in eigenen Objecten zu verwenden.
    Zu diesem Schluss bin ich gekommen, als ich saemtliche Funktionen der Scripte zerlegt habe.
    Ja zerlegen kann man sagen, ich habe vieles verschrottet. ;)

    Fazit:
    Die Scripte Funktionieren, aber das war es auch schon.
    Im grossen Ganzen sind die Scripte total unuebersichtlich und beinhalten einiges totes Material, was die Scripte nur unnoetig aufblaeht.

    Zudem habe ich festgestellt, das AniMesh nicht gleich AniMesh ist.
    Wie bei Vehiclen (Motoraeder / Autos & Co) ist der Aufwand fuer jedes AniMesh individuell.
    Das heisst, man kann zwar die Scripte in eigene Objecte kopieren, doch wuerde das Ergebniss mit hoher Wahrscheinlichkeit ehr suboptimal.
    Genauer gesagt, wie bei Fahrzeugen muss man die Scripte individuell auf jedes einzelne Object anpassen, wobei die Groesse ebenfalls eine Rolle spielt.

    Unglaublich, aber man muss dem Script wirklich den Unterschied zwischen Mensch und Tier bei bringen.

    Das war es erst einmal, bis zum naechsten mal.

    LG
    Dae
     
    Yara Eilde gefällt das.
  6. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
  7. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    huhu ihr suessen,

    fuer den naechsten Kurs plane ich erneut die Grundlagen fuer Anfaenger durch zu gehen.

    Am kommenden Sonntag den 17.02.2019 um 20Uhr findet der Grundkurs fuer Anfaenger statt. (Voice hoeren erforderlich)
    Damit zwischendurch Neueinsteiger dazu stossen koennen und sich nicht verloren vor kommen, werden wir diesen Kurs von Zeit zu Zeit wiederholen.

    Natuerlich sind wieder alle eingeladen, auch jene die eine Auffrischung moechten. ;)
    SLURL: Script-Schule auf Bay of Surreality

    LG
    Dae
     
    aviva Sparta gefällt das.
  8. Petra Dharnen

    Petra Dharnen Neuer Nutzer

    Beiträge:
    2
    Zustimmungen:
    2
    Punkte für Erfolge:
    3
    Bin auch dabei....... wenn ichnicht wieder vergesse :)
     
  9. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    huhu ihr suessen,

    kommenden Sonntag den 03.03.2019 um 20 Uhr auf Bay of Surreality ist es wieder so weit.
    Fuer den naechsten Kurs habe ich mir etwas neues ausgedacht, naemlich das ihr euch das Lernmaterial schon vorab ansehen koennt.
    Zu diesem Zweck habe ich extra eine neue Seite in der SL-Wiki veroeffentlicht: Schalter

    Eigentlich ist der Schalter die Grundlage fuer all unsere Scripte.
    Ihr werdet euch wundern, wie oft wir einen Schalter schreiben und es nicht mal merken.
    Ich bin davon ueberzeugt, das der ein oder andere nach diesem Kurs wieder einen Aha-Moment hat. ;)

    LG
    Dae
     
    surini gefällt das.
  10. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    llResetScript();

    Kleiner Befehl, grosse Wirkung.
    Was macht dieser Befehl eigentlich?
    Ich meine, man kann ja auch uebers Baumenue resetten, oder das Script oeffnen und auf Zuruecksetzen druecken.
    Manchen wird es vielleicht auch schon aufgefallen sein, das ich diesen Befehl ganz gern im on_rez Event verwende.
    Wenn ich das Inventar eines Objects neu auslesen moechte, verwende ich diesen Befehl auch gern mal im Changed Event, wenn ich den Inhalt veraendere.

    Ich unterscheide immer zwischen Soft-Reset und Hard-Reset.
    Jeder Reset der nicht mit Hilfe dieses Befehls ausgefuehrt wird, verstehe ich als Hard-Reset.
    Bei einem Hard-Reset wird das Script so gesehen mit Brachial-Gewalt zurueck gesetzt.

    Der Soft-Reset mittels llResetScript kann nur durchgefuehrt werden, wenn das Script noch irgendwie funktionsfaehig ist.
    Wird nun ein Script mittels Script Fehler Stack Heap Collision angehalten, bleibt nur noch Hard-Reset oder wegschmeissen, wenn das Object und das Script no mod ist.

    OK, was passiert denn nun eigentlich genau?
    • Saemtliche temporaeren Daten gehen in diesem Augenblick verloren.
    • Saemtliche veraenderten Variablen werden auf die gespeicherte Version zurueck gesetzt.
    • Alle globalen Variablen (falls vorhanden) werden komplett neu eingelesen.
    • Der State default wird als aktiver State gesetzt (falls man im andern State haengt, nuetzlich)
    • Ist der Event State-Entry vorhanden, werden alle Befehle darin augenblicklich ausgefuehrt.

    Dann gibt es noch den llResetOtherScript("name des gewuenschten Scripts im Objekt");
    Wichtig, das Script was hier resettet werden soll, muss im Object bei dem Script liegen, von wo aus dieser Befehl ausgefuehrt wird.
    Der Name kann nicht das Script sein welches den Befehl ausfuehren soll.

    Ich hoffe ich konnte mit dieser Erklaerung helfen zu verstehen, das ein Reset als Schleife fuer Script-Wiederholungen ungeeignet ist.
    Falls es zu diesen beiden Befehlen hier noch Fragen gibt, duerfen sie gerne hier diskutiert werden. :)

    LG
    Dae
     
  11. Wolwaner Jervil

    Wolwaner Jervil Freund/in des Forums

    Beiträge:
    717
    Zustimmungen:
    69
    Punkte für Erfolge:
    38
    irgendwie hab ich das aus den Augen verloren - findet der Kurs noch statt?
     
  12. Daemonika Nightfire

    Daemonika Nightfire Forumsgott/göttin

    Beiträge:
    7.699
    Zustimmungen:
    952
    Punkte für Erfolge:
    123
    Guten morgen, ja der Kurs findet noch Statt.
    Nur letzten Sonntag ist ausgefallen, weil ich zur Archons Gedenkfeier ging.
    Regulaer ist der naechste Kurs wieder am 9.6.2019 um 20 Uhr.

    LG
    Dae
     
    Cryogen Crimson gefällt das.
  13. Wolwaner Jervil

    Wolwaner Jervil Freund/in des Forums

    Beiträge:
    717
    Zustimmungen:
    69
    Punkte für Erfolge:
    38
    Danke mal für die Info, 9.6. wird sich nicht ausgehen (entweder DJ oder Geburtstagsfeier). Ich melde mich Inworld zwischendurch.
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung 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