Overwatch 2

Wir stellen den Overwatch Workshop vor

Blizzard Entertainment

Erschafft mit dem Workshop Spiele, von denen ihr bisher nur träumen konntet! Der Workshop ist ein vereinfachtes Skriptsystem, das die bereits verfügbaren Möglichkeiten, das Spiel im Spielbrowser anzupassen, ergänzt. Im Workshop könnt ihr Skripte erstellen, um Regeln und einzigartige Spielbedingungen hinzuzufügen, die über die vorhandenen Spielmodi von Overwatch hinausgehen. Mit Regeln lassen sich zum Beispiel Bewegungseigenschaften und Fähigkeiten von Helden ändern oder die Art und Weise, wie Spieler Schaden oder Heilung erhalten, modifizieren. Es können sogar unter bestimmten Bedingungen Texte angezeigt werden.

Ein heißer Spielmodus, der sich mit dem Workshop erstellen lässt, ist zum Beispiel Vorsicht Lava: Euer Held wird in Brand gesetzt, wenn er auf dem Boden ist:

Das Workshop-Feature enthält Ausdrücke und Formulierungen, die aus der Programmierung stammen. Aus diesem Grund haben wir uns entschieden, diese Elemente und die Syntax auf Englisch zu belassen. Damit der Workshop aber auch für Programmierneulinge leicht zu nutzen ist, gibt es eine Beschreibung aller Variablen und Werte in eurer Spielsprache.

Wenn ihr Fragen oder Anmerkungen zur Lokalisierung des Workshops habt, könnt ihr gern dazu einen Beitrag im Forum „Übersetzung & Lokalisierung“ verfassen.

Inhaltsverzeichnis

Auf den Workshop zugreifen

Um auf den Workshop zuzugreifen, klickt auf Spielen > Spielbrowser > Erstellen > Einstellungen > Workshop.

Ein Skript erstellen

Um ein Skript zu erstellen, müsst ihr:

  1. eine Regel hinzufügen
  2. ein Event festlegen
  3. eine Bedingung hinzufügen (optional)
  4. eine Aktion hinzufügen

Anschließend könnt ihr so viele Regeln, Bedingungen und Aktionen hinzufügen, wie Platz ist.

Eine Regel hinzufügen

Regeln sind die Teile, aus denen euer Skript besteht. Ihr könnt sie auf vielfältige Arten euren Vorstellungen anpassen. Jedes Skript braucht mindestens eine Regel.

Jede Regel kann mit einem Kommentar versehen werden und enthält:

  • Event: definiert, wann die Regel ausgeführt wird. Weitere Informationen dazu findet ihr unter Ein Event festlegen.
  • Bedingungen: eine optionale Liste von Konditionen, die erfüllt sein müssen, damit die Regel Anwendung findet. Weitere Informationen dazu findet ihr unter Eine Bedingung hinzufügen.
  • Aktionen: eine Liste von Dingen, die sich ereignen, wenn das Event eintrifft und die Bedingungen erfüllt sind. Weitere Informationen dazu findet ihr unter Eine Aktion hinzufügen .

Um eine Regel hinzufügen, klickt auf Regel hinzufügen.

Ein Event festlegen

Ein Event definiert, wann eine Regel ausgeführt wird. Tritt ein Event im Spiel ein, wird eine Instanz der Regel erzeugt. Unabhängig von anderen Instanzen bewertet jede Instanz einer Regel Bedingungen und führt Aktionen aus.

Wenn eine Regel im Editor erstellt wurde, wird ihr automatisch ein Event hinzugefügt. Ihr müsst bestimmen, welchen Eventtyp ihr gerne hättet.

So legt ihr einen Eventtyp fest:

  1. Klickt das Dropdown-Menü neben „Event“ an.
  2. Wählt unter den folgenden Typen aus:

    Eventtyp Kommentar
    Ongoing - Global

    Erzeugt bei Spielbeginn eine einzelne Instanz dieser Regel. Diese Instanz bleibt während des gesamten Spiels aktiv.

    • Da die Instanz während des gesamten Spiels aktiv bleibt, kann eine Bedingung manchmal zutreffen und manchmal nicht. Wenn eine Bedingung das erste Mal erfüllt ist, werden die Aktionen ausgeführt.
    • Immer wenn die Bedingungen nicht erfüllt sind, anschließend aber wieder zutreffen, wird versucht, die Aktionen erneut auszuführen.
    Ongoing - Each Player

    Erzeugt eine Instanz dieser Regel für jeden Spieler, sobald dieser dem Spiel beitritt. Jede dieser Instanzen bleibt aktiv, bis der Spieler das Spiel verlässt oder dieses endet. Jede Instanz verfolgt die Bedingungen für sich und führt Aktionen unabhängig von den anderen Instanzen aus.

    • Da eine solche Instanz aktiv bleibt, solange der Spieler im Spiel ist, kann eine Bedingung manchmal zutreffen und manchmal nicht. Wenn eine Bedingung das erste Mal erfüllt ist, werden die Aktionen ausgeführt.
    • Immer wenn die Bedingungen nicht erfüllt sind, anschließend aber wieder zutreffen, wird versucht, die Aktionen erneut auszuführen.
    Player Earned Elimination

    Die Regel wird immer dann ausgeführt, wenn ein Spieler eine Eliminierung verdient. Für jeden Spieler kann immer nur eine Instanz der Regel aktiv sein.

    • Wenn ein Spieler jemanden eliminiert, werden die Bedingungen überprüft. Ist jede Bedingung erfüllt, werden die Aktionen ausgeführt. Wenn nur eine der Bedingungen nicht erfüllt ist, werden die Aktionen nicht ausgeführt.
    Player Dealt Final Blow

    Die Regel wird immer dann ausgeführt, wenn ein Spieler einen Todesstoß landet. Für jeden Spieler kann immer nur eine Instanz der Regel aktiv sein.

    • Wenn ein Spieler einem Gegner einen Todesstoß versetzt, werden die Bedingungen überprüft. Ist jede Bedingung erfüllt, werden die Aktionen ausgeführt. Wenn nur eine der Bedingungen nicht erfüllt ist, werden die Aktionen nicht ausgeführt.
    Player Dealt Damage

    Die Regel wird immer dann ausgeführt, wenn ein Spieler Schaden verursacht. Für jeden Spieler kann immer nur eine Instanz der Regel aktiv sein.

    • Wenn ein Spieler einem Gegner Schaden zufügt, werden die Bedingungen überprüft. Ist jede Bedingung erfüllt, werden die Aktionen ausgeführt. Wenn nur eine der Bedingungen nicht erfüllt ist, werden die Aktionen nicht ausgeführt.
    Player Took Damage

    Die Regel wird immer dann ausgeführt, wenn ein Spieler Schaden erleidet. Für jeden Spieler kann immer nur eine Instanz der Regel aktiv sein.

    • Wenn ein Spieler Schaden durch einen Gegner erleidet, werden die Bedingungen überprüft. Ist jede Bedingung erfüllt, werden die Aktionen ausgeführt. Wenn nur eine der Bedingungen nicht erfüllt ist, werden die Aktionen nicht ausgeführt.
    Player Died

    Die Regel wird immer dann ausgeführt, wenn ein Spieler stirbt. Für jeden Spieler kann immer nur eine Instanz der Regel aktiv sein.

    • Wenn ein Spieler stirbt, werden die Bedingungen überprüft. Ist jede Bedingung erfüllt, werden die Aktionen ausgeführt. Wenn nur eine der Bedingungen nicht erfüllt ist, werden die Aktionen nicht ausgeführt.
  3. Wählt, wenn nötig, das Team oder den Spieler, für das bzw. den dieses Event gelten soll. Dabei habt ihr folgende Optionen:

    Option Kommentar
    All Das Event gilt für alle Teams, inklusive der Spieler in klassischen Deathmatch-Modi.
    Team 1 (oder derzeitiger Teamname) Das Event gilt nur für Mitglieder dieses Teams.
    Team 2 (oder derzeitiger Teamname) Das Event gilt nur für Mitglieder dieses Teams.
    Option Kommentar
    All Das Event gilt für alle Spieler.
    Slot 0 bis Slot 5 Das Event gilt nur für Spieler im ausgewählten Slot. Im teambasierten Spiel können zwei Spieler gemeinsam einen Slot besetzen (einen für jedes Team).
    Slot 6 bis Slot 11 Das Event gilt nur für Spieler im ausgewählten Slot. Diese Auswahl ist nur in klassischen Deathmatch-Modi verfügbar.
    Heldenname Dieses Event gilt nur für Spieler, die als dieser Held erschienen sind.

Eine Bedingung hinzufügen

Nachdem ihr eine Regel und ein Event hinzugefügt habt, könnt ihr eine oder mehrere Bedingungen festlegen. Bedingungen sind Umstände, die erfüllt sein müssen, damit die Aktionsliste der Regel ausgeführt wird. Wenn eine Regel den Eventtyp [Ongoing - Global] oder [Ongoing - Each Player] hat, wird laufend geprüft, ob ihre Bedingungen erfüllt sind. Hat die Regel einen anderen Eventtyp, werden die Bedingungen nur dann überprüft, wenn das entsprechende Event eintritt. Wenn eine Regel keine Bedingungen hat, wird sofort bei Eintritt des Events versucht, die Aktionsliste auszuführen. Jede Bedingung besteht aus zwei Werten, die durch einen Operator verglichen werden, um zu bestimmen, ob sie True, also erfüllt, sind oder nicht. Weitere Informationen dazu findet ihr unter Werte.

So fügt ihr eine Bedingung hinzu:

  1. Klickt auf Hinzufügen neben „Bedingungen“.
  2. Füllt die Felder für die Werte aus.
    • Hinweis: Wenn ein Wert selbst eine Eingabe erfordert (wie beispielsweise der Wert [Hero Of], für den ihr angeben müsst, wessen Held genommen werden soll), wird die Eingabe darunter eingerückt angezeigt.
  3. Wählt einen Operator aus. Folgende Operatoren stehen zur Verfügung:
    • == ist gleich
    • != ist ungleich
    • > ist größer als
    • >= ist größer als oder gleich
    • < ist kleiner als
    • <= ist kleiner als oder gleich

So wird überprüft, ob die Anzahl aller Spieler im Spiel gleich der Anzahl der lebenden Spieler ist.

  • Wert: [Number of Living Players]; überprüft, wie viele Spieler am Leben sind
    • Team: [Team]; überprüft alle Spieler eines Teams
    • Team: [All]; überprüft alle Spieler aller Teams
  • Operator: ==; das bedeutet: Der erste Wert muss gleich dem zweiten Wert sein, damit die Bedingung True ist.
  • Wert: [Number of Living Players]; bestimmt die Anzahl der lebenden Spieler
    • Team: [Team]; überprüft alle Spieler eines Teams
    • Team: [All]; überprüft alle Spieler aller Teams

Weitere Beispiele

  • IsFlagBeingCarried(Victim) == False: Der getötete Spieler darf nicht der Flaggenträger gewesen sein.
  • IsCrouching(Event Player) == True: Der Spieler, für den das Event aktiv ist, muss geduckt sein.
  • NumberOfFinalBlows(Attacker) > 10: Der angreifende Spieler muss mehr als 10 Todesstöße haben.

Eine Aktion hinzufügen

Eine Aktion modifiziert das Spiel. Aktionen werden von oben nach unten ausgeführt. Die Aktionsliste wird ausgeführt, wenn Folgendes erfüllt ist:

  • Das mit der Regel verknüpfte Event muss aufgetreten sein.
  • Alle Bedingungen der Regel müssen erfüllt sein (oder es gibt keine Bedingungen).
    • Für die Eventtypen [Ongoing - Global] und [Ongoing - Each Player] wird die Aktionsliste ausgeführt, sobald jede Bedingung erstmals erfüllt ist. Immer wenn die Bedingungen nicht erfüllt sind, anschließend aber wieder zutreffen, wird versucht, die Aktionen erneut auszuführen.

Abgesehen von der Aktion [Wait] (mehr Informationen dazu findet ihr unter Aktion [Wait]) werden alle Aktionen sofort ausgeführt und beendet. Jede Aktion besteht aus 0 oder mehr Eingaben, die beschreiben, wie das Spiel modifiziert wird. Jeder Eingabe wird ein Wert zugewiesen. Dies kann eine Information sein oder auch eine Anweisung, wie an eine Information zu gelangen ist. Weitere Informationen dazu findet ihr unter Werte.

So fügt ihr eine Aktion hinzu:

  1. Klickt auf Hinzufügen neben „Aktionen“.
  2. Wählt eine Aktion aus, die beschreibt, wie das Spiel modifiziert wird.
  3. Wählt für jede neue Eingabe, die erschienen ist, einen Wert aus dem Dropdown-Menü.
    • Hinweis: Einige Aktionen erzeugen ein Objekt oder ein andauerndes Verhalten. Solche Aktionen erfordern möglicherweise eine Eingabe namens [Reevaluation]. Die Eingabe bestimmt, ob die anderen Eingaben für diese Aktion fix (dann bleibt das Objekt oder das andauernde Verhalten unverändert) oder dynamisch sind (dann wird das Objekt oder das andauernde Verhalten geändert, wenn sich der der Eingabe zugewiesene Wert ändert).

Aktionen

  • Pause Match Time: Pausiert die Zeit des aktuellen Matches.
  • Modify the Global Variable(T, Add, 5): Erhöht den Wert der globalen Variable „T“ um 5.
  • Set Invisible(Event Player, Enemies): Macht den Spieler, für den diese Regel ausgeführt wird, für Gegner unsichtbar.

Aktionen mit einer [Reevaluation]-Eingabe

  • Create Icon(All Players(All Teams), Global Variable(P), Alert, Position): Erzeugt ein Alarmsymbol am durch die globale Variable „P“ spezifizierten Ort, das für alle sichtbar ist. Die Position wird kontinuierlich neu bewertet, wenn sich also die globale Variable „P“ später ändert, wird auch die Position des Symbols aktualisiert.
  • Create Icon(All Players(All Teams), Global Variable(P), Alert, None): Erzeugt ein Alarmsymbol am durch die globale Variable „P“ spezifizierten Ort, das für alle sichtbar ist. Es findet keine Neubewertung statt, also selbst wenn sich die globale Variable „P“ später ändert, wird die Position des Symbols nicht aktualisiert.

Aktionstypen

Es gibt sehr viele mögliche Aktionen, doch die folgenden sind besonders interessant für euch:

Loop ist eine Aktion, die die Ausführung der Aktionsliste nach ihrem Ende erneut beginnen lässt. Es gibt vier verschiedene Typen der Aktion [Loop]:

  • Loop: Startet die Aktionsliste immer wieder neu.
  • Loop If: Startet die Aktionsliste neu, wenn die Eingabe für die Bedingung der Aktion nicht den Wert 0 hat oder False ist.
  • Loop if Condition Is True: Startet die Aktionsliste neu, wenn alle Bedingungen der Regel aktuell erfüllt sind.
  • Loop If Condition Is False: Startet die Aktionsliste neu, wenn eine Bedingung der Regel aktuell nicht erfüllt ist.

Eine solche Aktionsschleife ist nur erlaubt, wenn die Aktion [Wait] definitiv vor dem Start der Aktionsliste ausgeführt wird.

Gut Schlecht

Dies ist erlaubt, da vor der Schleife gewartet wird.

Dies ist nicht erlaubt, weil die Schleife endlos ohne Warten ausgeführt würde.

Wait ist eine Aktion, die eine Zeitspanne verstreichen lässt, ehe die nachfolgende Aktion ausgeführt werden kann. Die kleinstmögliche Wartezeit beträgt 0,25 Sekunden.

Es gibt drei Optionen für das Verhalten der Aktion [Wait]:

  • Ignore Condition: Wird diese Option ausgewählt, kann das Ausführen von Aktionen nicht durch Bedingungen oder andere Events unterbrochen werden.
    • Für die Eventtypen [Ongoing - Global] und [Ongoing - Each Player] wird die Veränderung der Bedingungen von „erfüllt“ zu „nicht erfüllt“ keinerlei Auswirkungen haben.
    • Ist der Eventtyp ein anderer und wird ein Event dieses Typs für denselben Spieler aktiv, wird das zweite Event komplett ignoriert.
  • Abort When False: Wird diese Option ausgewählt, dann wird das Ausführen der Aktionsliste beendet, wenn die Bedingungen nicht mehr erfüllt sind.
  • Restart When True: Wird diese Option ausgewählt, dann wird das Ausführen der Aktionen zurückgesetzt und es wird mit dem Ausführen der ersten Aktion fortgefahren, wenn einer der folgenden Umstände eintritt:
    • Der Eventtyp ist [Ongoing - Global] oder [Ongoing - Each Player] und die Bedingungen wechseln von „nicht erfüllt“ zu „erfüllt“.
    • Der Eventtyp ist ein anderer, ein Event tritt ein, das für den gleichen Spieler gilt, und alle Bedingungen sind erfüllt.

Zusätzliche Informationen

Der Wert String erzeugt eine Zeichenfolge. Folgende Eingaben sind möglich:

  • String: Der Text, der angezeigt wird. Enthält der Text eine Ziffer in geschweiften Klammern, wird diese durch den Wert ersetzt, der durch die korrespondierende Eingabe vorgesehen wurde.
  • {0}: Der Wert, der zu Text konvertiert wird, ehe {0} im String ersetzt dadurch wird. Dieser Wert kann jeden Typ annehmen.
  • {1}: Der Wert, der zu Text konvertiert wird, ehe {1} im String dadurch ersetzt wird. Dieser Wert kann jeden Typ annehmen.
  • {2}: Der Wert, der zu Text konvertiert wird, ehe {2} im String dadurch ersetzt wird. Dieser Wert kann jeden Typ annehmen.
  • String(“Hello”, Null, Null, Null): Zeigt den String „Hello“ an.
  • String("{0} vs. {1}", Hero(Ana), Hero(Pharah), Null): Zeigt den String „Ana vs. Pharah“ an.

Ihr könnt Strings kombinieren, um komplexere zu erzeugen:

  • String("{0} vs. {1}", Hero(Ana), String("{0} und {1}", Hero(Pharah), Hero(Genji), Null), Null): Zeigt den String „Ana vs. Pharah und Genji“ an.

Strings können nicht in Bedingungen verwendet oder in Variablen gespeichert werden, da es zu Komplikationen kommen könnte, wenn Spieler im gleichen benutzerdefinierten Spiel verschiedene Sprachen nutzen.

Ein Wert ist eine Information – oder eine Anweisung, wie eine Informationen zu erhalten ist –, die der Eingabe einer Bedingung, einer Aktion oder eines anderen Werts zur Verfügung gestellt wird. Werte können miteinander kombiniert werden.

Es gibt sehr, sehr viele Werte, deswegen werden wir sie hier nicht alle ansprechen können. Sie werden aber im Editor des Workshops definiert. Hier sind einige, denen ihr wahrscheinlich begegnen werdet:

Wert Kommentar
Number Gibt eine reelle Zahl in einem durch die Eingabe festgelegten Bereich aus.
Vector Gibt einen dreidimensionalen Wert in einem durch die Eingabe festgelegten Bereich aus. Solche Werte werden für Positions- und Richtungsangaben benötigt.
Team Gibt ein bestimmtes Team (wie Team 1, Team 2) oder alle Teams an.
Hero Gibt einen bestimmten Helden an.
Null Zeigt die Abwesenheit eines Spielers oder einer Entität an.
True Gibt den Wert True aus.
False Gibt den Wert False aus.
Compare Gibt entweder True oder False aus, abhängig davon, ob der betreffende Vergleich das Ergebnis True (also wahr) liefert oder nicht.
Event Player Gibt den Spieler an, für den die Instanz der Regel ausgeführt wird, oder „Null“, wenn es keinen solchen Spieler gibt.
Attacker Gibt den Angreifer für die Instanz der Regel an oder „Null“, wenn es keinen Angreifer gibt.
Victim Gibt das Opfer für die Instanz der Regel an oder „Null“, wenn es kein Opfer gibt.
Current Array Element Liefert den aktuellen Wert, der herangezogen wird, wenn gleichzeitig einer der Werte [If True For Any], [If True For All], [Filtered Array] oder [Sorted Array] genutzt wird.

Ein Wert kann in einem Array, einer Sammlung mehrerer Werte, gespeichert werden.

  • Es gibt einige Aktionen und Werte, mit denen ein Array erstellt oder modifiziert werden kann.
    • Zum Beispiel gibt der Wert [All Players] ein Array aller derzeit im Spiel befindlicher Spieler zurück.
    • Ihr könnt auch eure eigenen Arrays bilden, indem ihr die Operation [Append To Array] der Aktionen [Modify Global Variable] oder [Modify Player Variable] nutzt.
  • Wenn als Eingabe ein Array erwartet wird, aber eine andere Art Wert zur Verfügung gestellt wird, wird dieser Wert für die Eingabe in ein Array mit einem einzelnen Element kopiert. Wenn umgekehrt ein Wert als Eingabe erwartet wird, aber ein Array empfangen wird, wird der erste Wert des Arrays genutzt (oder 0, wenn das Array leer ist).

In einer Variable kann ein Wert gespeichert werden, um später abgerufen zu werden. Mit Ausnahme von Strings kann jeder Wert in einer Variablen gespeichert werden. Alle Variablen beginnen mit einem Zahlenwert ([Number]) von 0.

Innerhalb eines Skripts gibt es zwei Variablentypen:

  • Global Variable: Es gibt 26 globale Variablen, benannt von A bis Z. Jede Variable beinhaltet einen eigenen Wert oder ein Array an Werten.
  • Player Variable: Jeder Spieler hat 26 Variablen, benannt von A bis Z. Jede Variable beinhaltet einen eigenen Wert oder ein Array an Werten.

Die drei folgenden Operationen können mit einer Variablen durchgeführt werden:

  • "Set": Mit [Set Global Variable] und [Set Player Variable] gebt ihr der Variablen einen neuen Wert, der den alten ersetzt.
  • "Modify": [Modify Global Variable] und [Modify Player Variable] modifizieren den Wert einer Variable mithilfe einer bestimmten arithmetischen Operation ([Add], also addieren, [Multiply], also multiplizieren usw.) oder einer Array-Operation (Append, also anhängen, Remove, also entfernen).
  • Chase: [Chase Global Variable Over Time], [Chase Player Variable Over Time], [Chase Global Variable at Rate] und [Chase Player Variable at Rate] verändern die Variable allmählich – entweder in bestimmten Zeitabständen oder mit einer gewissen Geschwindigkeit.
    • Das Ziel dieser laufenden Veränderung kann eine Zahl oder ein Vektor sein (oder ein Wert, der zu einer Zahl oder einem Vektor führt).
      • Ist das Ziel eine Zahl, muss auch der Wert der Variable eine Zahl sein, ehe die laufende Veränderung beginnt, damit sie korrekt verfolgt werden kann.
      • Ist das Ziel ein Vektor, muss auch der Wert der Variable ein Vektor sein, ehe die laufende Veränderung beginnt, damit sie korrekt verfolgt werden kann.
      • Wenn für das Ziel [Reevaluation] aktiv ist, wird sich [Chase] nach Bedarf aktualisieren, um einen veränderten Zielwert zu verfolgen, selbst wenn der Zielwert vorher erreicht wurde. Weitere Informationen zu [Reevaluation] findet ihr unter Eine Aktion hinzufügen.
    • Mit den Aktionen [Stop Chasing Global Variable] und [Stop Chasing Player Variable] könnt ihr die Operation [Chase] abbrechen.
      • Wird [Chase] abgebrochen, behält die Variable ihren aktuellen Wert, der irgendwo zwischen dem Start- und dem Zielwert der Operation liegt.

Beispiele

Bereit, selbst Hand anzulegen? Dann versucht, einen dieser Spielmodi zu erstellen! Wir begleiten euch dabei und erklären, was ihr hinzufügen müsst und warum.

Wir helfen euch dabei, den Modus „Vorsicht Lava“ zu erstellen, bei dem Helden entflammen und Schaden erleiden, wenn sie den Boden berühren.

  1. Zuerst stellen wir sicher, dass ihr euer Spiel auf der gewünschten Karte bzw. auf den gewünschten Karten spielt.
    • Klickt auf Spielen > Spielbrowser > Erstellen > Einstellungen > Karten.
    • Wählt die Karte aus, auf der ihr das Spiel testen möchtet, und deaktiviert alle anderen.
  2. Jetzt gehen wir in den Workshop.
    • Klickt auf Zurück.
    • Klickt auf Workshop.
  3. Und jetzt ist es an der Zeit, ein Skript zu erstellen! Fügen wir unsere erste Regel hinzu.
    • Klickt auf Regel hinzufügen.
    • Im Kommentarbereich gebt ihr Zu brennen beginnen, falls am Boden ein. So wisst ihr, dass diese Regel dafür verantwortlich ist, dass Spieler in Brand gesetzt werden, wenn sie den Boden berühren.
    • Jetzt verändern wir den Eventtyp, um zu bestimmen, wann diese Regel ausgeführt werden soll.
      • Im Dropdown-Menü für das Event wählt ihr [Ongoing - Each Player]. Das sorgt dafür, dass diese Regel auf jeden Spieler im Spiel einzeln angewendet wird.
      • In den anderen Dropdown-Menüs lassen wir die Standardeinstellungen unverändert.
    • Als Nächstes fügen wir eine Bedingung hinzu. Diese Bedingung bestimmt, ob unsere Regel ausgeführt wird oder nicht. Ihr könnt auch keine Bedingung hinzufügen – dann wird die Regel immer ausgeführt!
      • Unter „Bedingungen“ klickt ihr auf Hinzufügen.
      • Im ersten Dropdown-Menü für den Wert wählt ihr [Is On Ground]. Dieser Wert gibt True zurück, wann immer der Spieler den Boden berührt.
      • In den anderen Dropdown-Menüs lasst ihr die Einstellungen unverändert und klickt einfach auf OK.
        • [Event Player] bezieht sich auf den „Spieler, für den die Regel derzeit gilt“.
    • Und schließlich fügen wir noch eine Aktion hinzu. Aktionen sind das, was passiert, wenn eine Bedingung erfüllt ist.
      • Diese Aktion wird dafür sorgen, dass ein Held entflammt, wenn er den Boden berührt.
        • Klickt unter „Aktionen“ auf Hinzufügen.
        • Im Dropdown-Menü für Aktionen wählt ihr [Set Status] aus.
        • Im Dropdown-Menü für den Status wählt ihr [Burning] aus.
        • Unter [Duration] setzt ihr den Zahlenschieber auf 10000.
        • In den anderen Dropdown-Menüs lasst ihr die Einstellungen unverändert und klickt einfach auf OK.
  4. Probieren wir aus, ob euer Held brennt, während er auf dem Boden steht!
    • Klickt zweimal auf Zurück.
    • Klickt auf dem Bildschirm „Spiel erstellen“ auf Start.
    • Wählt einen Helden aus.
    • Sobald ihr das Spiel betretet, sollte euer Held in Flammen stehen.
    • Drückt Escape und klickt dann auf Workshop Editor öffnen, um weiter an eurem Skript zu arbeiten.
  5. Lasst uns jetzt eine weitere Regel hinzufügen, die dafür sorgt, dass ein Held nicht brennt, während er in der Luft ist oder springt.
    • Wir müssen dafür nicht komplett von vorn anfangen, wir kopieren einfach die letzte Regel, die wir erstellt haben.
    • Dazu klickt ihr einfach neben der schon erstellten Regel auf Kopieren.
      • Jetzt klickt ihr auf Regel einfügen.
      • Die Beschreibung ändert ihr zu Nicht mehr brennen, falls nicht am Boden. So wisst ihr, dass diese Regel dafür sorgt, dass euer Held aufhört, zu brennen, wenn er sich in der Luft befindet oder springt.
      • Den Eventtyp behaltet ihr bei.
      • Jetzt bearbeiten wir die Bedingung. Diese Bedingung bestimmt, ob unsere Regel ausgeführt wird oder nicht.
        • Klickt auf die vorhandene Bedingung, die lautet [Is On Ground(Event Player) == True].
        • Im Dropdown-Menü für den Wert wählt ihr False.
        • In den anderen Dropdown-Menüs lasst ihr die Einstellungen unverändert und klickt einfach auf OK.
      • Als Nächstes bearbeiten wir die Aktion. Diese Aktion wird dafür sorgen, dass euer Held nicht mehr in Flammen steht, wenn er den Boden nicht berührt.
        • Klickt auf die vorhandene Aktion, die lautet [Set Status (Event Player, Null, Burning, 10000)].
        • Im Dropdown-Menü für Aktionen wählt ihr [Clear Status] aus.
        • Im Dropdown-Menü für den Status wählt ihr [Burning] aus.
        • In den anderen Dropdown-Menüs lasst ihr die Einstellungen unverändert und klickt einfach auf OK.
  6. Probieren wir aus, ob euer Held in der Luft aufhört, zu brennen!
    • Klickt zweimal auf Zurück.
    • Sobald ihr das Spiel betretet, sollte euer Held in Flammen stehen. Springt, um zu sehen, ob das Feuer dann erlischt.
    • Drückt Escape und klickt dann auf Workshop Editor öffnen, um weiter an eurem Skript zu arbeiten.
  7. Jetzt kümmern wir uns darum, dass ein Held Schaden erleidet, während er den Boden berührt.
    • Klappt die „Zu brennen beginnen, falls am Boden“-Regel aus.
    • Klickt unter „Aktionen“ auf Hinzufügen. Diese Aktion wird dafür sorgen, dass ein Held Schaden erleidet, während er den Boden berührt.
      • Im Dropdown-Menü für Aktionen wählt ihr [Damage Over Time] aus.
      • Unter [Duration] setzt ihr den Zahlenschieber auf 9999.
      • Unter [Damage Per Second] setzt ihr den Zahlenschieber auf 30.
      • In den anderen Dropdown-Menüs lasst ihr die Einstellungen unverändert und klickt einfach auf OK.
    • Klappt jetzt die „Nicht mehr brennen, falls nicht am Boden“-Regel aus.
      • Klickt unter „Aktionen“ auf Hinzufügen. Diese Aktion wird dafür sorgen, dass ein Held keinen Schaden erleidet, während er den Boden nicht berührt.
      • Im Dropdown-Menü für Aktionen wählt ihr [Stop All Damage Over Time] aus.
  8. Probieren wir aus, ob euer Held Schaden erleidet, während er den Boden berührt, und keinen Schaden erleidet, während er in der Luft ist oder springt.
    1. Klickt zweimal auf Zurück.
    2. Verlasst den Startbereich und überprüft, ob euer Held Schaden erleidet.
    3. Springt, um zu sehen, ob euer Held nun keinen Schaden mehr erleidet.
  9. Ihr habt es geschafft! Der Boden ist jetzt Lava!

Hier findet ihr eine ausführliche Erklärung des Spielmodus „Gespiegeltes Deathmatch“. In diesem Modus gibt es mehrere kurze Runden, in denen jeder denselben Helden spielt. Am Ende jeder Runde erscheint jeder Spieler dort, wo er zuletzt war, als nächster Held aus einer vorherbestimmten zufälligen Liste. Nach der letzten Runde hat der Spieler gewonnen, der die meisten Kills erzielen konnte.

Beispielsweise könnte in einem solchen Match jeder Spieler als McCree beginnen und in der nächsten Runde zu Pharah wechseln. In einem anderen Match beginnt ihr vielleicht als Widowmaker und wechselt in der zweiten Runde zu Ashe. So, wie diese Liste generiert wird, ist es äußerst unwahrscheinlich, dass ihr jemals die gleiche Heldenreihenfolge zweimal spielen werdet!

Also, wagen wir uns an die Erstellung eines Skripts für ein Gespiegeltes Deathmatch!

  • Klickt auf Spielen > Spielbrowser > Erstellen > Einstellungen > Workshop.
  • Zuerst erstellen wir die Regel, die eine Heldenliste erzeugt, die gespielt werden kann.
    • Diese Liste wird in der globalen Variable „L“ als Array gespeichert.
      • Arrays können alles Mögliche sein: eine Liste von Spielern, eine Heldenliste, eine Zahlenreihe, ein einzelner Wert – ein Array kann auch keine Werte beinhalten (das nennt man ein „leeres“ Array).
      • Jeder Wert in einem Array wird unter einem einzigartigen Index gespeichert, beginnend bei 0 und dann aufwärtszählend. Einen Index und seinen zugehörigen Wert nennt man auch Element des Arrays.
      • Die Reihenfolge innerhalb eines Arrays ist von Bedeutung, [Reaper, Winston, Mercy] ist also ein anderes Array als [Mercy, Winston, Reaper].
      • In einem Array kann es verschiedene Typen von Werten geben. So ist zum Beispiel folgendes Array denkbar: [123, Reaper, True, -4.5].
      • Wenn als Eingabe ein Array erwartet wird, aber ein einzelner Wert zur Verfügung gestellt wird, wird dieser Wert als einziges Element eines Arrays verstanden und ein Array erstellt.
      • Wenn umgekehrt ein einzelner Wert als Eingabe erwartet wird, aber ein Array empfangen wird, wird der erste Wert des Arrays als Eingabe genutzt (oder 0, wenn das Array leer ist).
    • Fügt eine Regel hinzu und gebt einen Kommentar ein, damit ihr wisst, was diese Regel tut.
    • Setzt den Eventtyp auf [Ongoing - Global]. Das bedeutet, dass nur eine einzelne Instanz dieser Regel ausgeführt werden wird.
    • Da wir dieser Regel keine Bedingungen hinzufügen, wird sie ausgeführt, sobald das Spiel beginnt.
    • Jetzt fügt wie folgt eine Aktion hinzu:
      • Aktion: Set Global Variable
        • Variable: L
      • Wert: Hero
        • Held: Wählt einen Helden aus, der im Spiel verfügbar sein soll.
      Damit wird das Helden-Array erstellt. Die Aktion [Set Global Variable] setzt für „L“ den ersten Helden auf der Liste fest.
    • Es wäre allerdings langweilig, wenn ihr nur einen spielbaren Helden hättet, also fügen wir noch mehr hinzu! Ergänzt wie folgt euer Skript um so viele Helden, wie ihr wollt:
      • Aktion: Modify Global Variable
        • Variable: L
      • Operation: Append
      • Wert: Hero
        • Held: Wählt einen Helden aus, der im Spiel verfügbar sein soll.
      Dadurch fügt ihr dem Array, das wir zuvor in „L“ erstellt haben, weitere Helden hinzu. Wenn unsere erste Aktion auch mit [Modify Global Variable] anstelle von [Set Global Variable] begonnen hätte, würde das Array mit 0 beginnen, da alle Variablen zunächst auf 0 gesetzt sind. Wenn ihr euren ersten Wert also nicht auf irgendetwas anderes setzt, habt ihr nachher ein Array, das zum Beispiel so aussieht: [0, Pharah, Hanzo, Ana, …] .
    • Fügen wir dieser Regel nun die letzte Aktion hinzu. Diese Aktion wird eine zufällig sortierte Kopie der globalen Variable „L“ (des Helden-Arrays) erstellen, einen Teil dieses nun zufällig sortierten Arrays kopieren (beginnend an Position 0) und dabei so viele Helden umfassen, wie dieser Spielmodus haben soll. Diese Kopie wird dann wieder in der globalen Variable „L“ abgespeichert, sodass wir dort nun eine zufällig sortierte Auswahl unserer ursprünglich festgelegten Heldenliste haben.
      • Ein Beispiel: Unsere ursprüngliche Heldenliste war [Ashe, Doomfist, Hanzo, McCree, Pharah, Soldier: 76, Zenyatta, Widowmaker, Ana]. Dann könnte das zufällige Array Folgendes sein: [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist, Soldier: 76, Zenyatta, McCree] und der ausgewählte Teil [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist].
  • Die nächste Regel wird garantieren, dass alle Spieler zu jeder Zeit sicher den gleichen Helden spielen.
    • Fügt eine Regel hinzu und gebt einen Kommentar ein, damit ihr wisst, was diese Regel tut.
    • Setzt den Eventtyp auf [Ongoing - Each Player]. Das sorgt dafür, dass für jeden Spieler eine eigene Instanz der Regel ausgeführt wird.
    • Fügt zwei Bedingungen hinzu, die beide erfüllt sein müssen, damit ein Held zugeteilt wird:
      • Die Nummer der Runde, die globale Variable „R“, muss kleiner sein als die Anzahl aller Helden in der Heldenliste. Ist das nicht der Fall, wird das Spiel beendet, es wird kein Held mehr zugeteilt. Die Rundennummer beginnt bei 0 und wird aufwärtsgezählt, bei 6 Runden ist die letzte also Runde Nummer 5. Die globale Variable „R“ muss dazu nicht extra auf 0 gesetzt werden, da alle Variablen anfangs auf den Standardwert 0 gesetzt sind.
        • Wert: Global Variable
          • Variable: R
        • Operator: <
        • Wert: Count Of
          • Array: Global Variable
            • Variable: L
      • Hiermit wird überprüft, ob der Held, der derzeit von einem bestimmten Spieler gespielt wird, ein anderer ist als der gewünschte Held für diese Runde. Der „bestimmte“ Spieler ist der [Event Player], ein Wert, der sich auf den Spieler bezieht, für den aktuell eine Instanz der Regel ausgeführt wird. Der „gewünschte“ Held der aktuellen Runde ist der Held, der im entsprechenden Index der Heldenliste (globale Variable „L“) gespeichert ist. Da die Nummer der aktuellen Runde in der globalen Variable „R“ gespeichert ist, kann der gewünschte Held über [Value In Array] abgerufen werden.
        • Wert: Hero Of
          • Spieler: Event Player
        • Operator: !=
        • Wert: Value in Array
          • Array: Global Variable
            • Variable: L
          • Index: Global Variable
            • Variable: R
    • Sobald wir wissen, dass ein Spieler den Helden wechseln muss, werden zwei noch hinzuzufügende Aktionen ausgeführt:
      • Die erste Aktion wird dem [Event Player] den gewünschten Helden zuteilen. Die erste Eingabe für diese Aktion ist der Spieler, dessen Held ausgetauscht werden soll. Die zweite Eingabe ist der nächste Held, also wird der gewünschte Held zur Verfügung gestellt.
        • Aktion: Start Forcing Player To Be Hero
        • Spieler: Event Player
        • Held: Value In Array
          • Array: Global Variable
            • Variable: L
          • Index: Global Variable
            • Variable: R
      • Die zweite Aktion lädt schon einmal den nächsten Helden der Liste, damit der Spieler keine Verzögerung erlebt, während sein Held ausgetauscht wird. Der Held wird für jeden Spieler einzeln geladen, auch wenn jeder den gleichen Helden spielen wird. Das liegt daran, dass für die Spieler möglicherweise verschiedene Skins für den Helden geladen werden müssen. Der Wert [Add], mit dem die globale Variable „R“ um 1 erhöht wird, weist die Aktion an, den nächsten und nicht den aktuellen Helden zu laden. In der letzten Runde führt dies zu einem Index für das Array, der außerhalb der globalen Variable „L“ liegt. Das ist nicht problematisch, da alle Werte, die außerhalb des Arrays liegen, als 0 betrachtet werden. Jede Aktion, die einen Helden erwartet, aber 0 bekommt, tut also einfach nichts.
        • Aktion: Preload Hero
        • Spieler: Event Player
        • Held: Value In Array
          • Array: Global Variable
            • Variable: L
          • Index: Add
            • Wert: Global Variable
              • Variable: R
            • Wert: Number
              • Zahl: 1.00
  • Die nächste Regel startet jede Runde, wenn diese noch nicht initialisiert wurde.
    • Fügt eine Regel hinzu und gebt einen Kommentar ein, damit ihr wisst, was diese Regel tut.
    • Setzt den Eventtyp auf [Ongoing - Global]. Das bedeutet, dass nur eine einzelne Instanz dieser Regel ausgeführt werden wird.
    • Jetzt fügt ihr drei Bedingungen hinzu, die erfüllt sein müssen, damit die Runde beginnt:
      • Das Spiel muss im Gange sein. Das bedeutet, dass die Teamzusammenstellung schon stattgefunden hat und die Aufstellungszeit abgelaufen ist, das Spiel aber noch nicht beendet ist.
        • Wert: Is Game In Progress
        • Operator: ==
        • Wert: True
      • Die globale Variable „I“ muss False sein. Mit dieser Variable wird angezeigt, ob die aktuelle Runde schon initialisiert wurde. Wurde die globale Variable „I“ nicht gesetzt, hat sie automatisch den Wert 0, was bei Vergleichen wie diesem gleichbedeutend mit False ist.
        • Wert: Global Variable
          • Variable: I
        • Operator: ==
        • Wert: False
      • Die Nummer der Runde, die globale Variable „R“, muss kleiner sein als die Anzahl aller Helden in der Heldenliste.
        • Wert: Global Variable
          • Variable: R
        • Operator: <
        • Wert: Count Of
          • Array: Global Variable
            • Variable: L
    • Sobald wir wissen, dass alle Bedingungen erfüllt sind, muss die Runde initialisiert werden. Fügt folgende Aktionen hinzu, die das übernehmen:
      • Die erste Aktion teilt dem ursprünglichen Spielmodus mit, dass das Match nicht aufgrund seiner normalen Kriterien enden sollte. Für ein Deathmatch bedeutet das, dass das Spiel nicht endet, weil die Zeit abläuft oder jemand die festgesetzte Punktzahl erreicht. Wenn diese Aktion ausgeführt wird, wird das Match erst beendet, wenn das Skript den Abschluss durch Spielmodus-Kriterien wieder aktiviert oder jemand explizit zum Sieger erklärt wird.
        • Aktion: Disable Built-in Game Mode Completion
      • Die nächste Aktion stellt den aktuellen Timer des Spielmodus auf die Länge einer Runde.
        • Aktion: Set Match Time
        • Zeit: Number
        • Zahl: 60.00
      • Diese Aktion setzt die globale Variable „I“ auf True, sodass erst dann wieder initialisiert wird, wenn die globale Variable „I“ zurück auf False gesetzt wird.
        • Aktion: Set Global Variable
        • Variable: I
        • Wert: True
  • Diese Regel wartet darauf, dass die Zeit der aktuellen Runde abläuft, um dann mit der nächsten Runde weiterzumachen.
    • Fügt eine Regel hinzu und gebt einen Kommentar ein, damit ihr wisst, was diese Regel tut.
    • Setzt den Eventtyp auf [Ongoing - Global]. Das bedeutet, dass nur eine einzelne Instanz dieser Regel ausgeführt werden wird.
    • Jetzt fügt ihr zwei Bedingungen hinzu, die beide erfüllt sein müssen, damit das Spiel zur nächsten Runde übergeht:
      • Das Spiel muss im Gange sein. Das bedeutet, dass die Teamzusammenstellung schon stattgefunden hat und die Aufstellungszeit abgelaufen ist, das Spiel aber noch nicht beendet ist.
        • Wert: Is Game In Progress
        • Operator: ==
        • Wert: True
      • Die aktuelle Matchzeit muss 0 betragen, die Zeit der aktuellen Runde muss also abgelaufen sein.
        • Wert: Match Time
        • Operator: ==
        • Wert: Number
          • Zahl: 0.00
    • Sind beide Bedingungen erfüllt und ist die Runde beendet, wird das Match zur nächsten Rundennummer übergehen und die Runde wird als nicht initialisiert markiert. Damit das geschieht, fügt ihr die folgenden zwei Aktionen hinzu:
      • Diese Aktion meldet den anderen Regeln, dass das Match zur nächsten Runde übergegangen ist.
        • Aktion: Modify Global Variable
        • Variable: R
        • Operation: Add
        • Wert: Number
          • Zahl: 1.00
      • Diese Aktion setzt die globale Variable „I“ auf False, was den anderen Regeln signalisiert, dass eine neue Runde initialisiert werden muss.
        • Aktion: Set Global Variable
        • Variable: I
        • Wert: False
  • Die letzte Regel beendet das Match, nachdem alle Runden gespielt wurden.
    • Fügt eine Regel hinzu und gebt einen Kommentar ein, damit ihr wisst, was diese Regel tut.
    • Setzt den Eventtyp auf [Ongoing - Global]. Das bedeutet, dass nur eine einzelne Instanz dieser Regel ausgeführt werden wird.
    • Fügt eine Bedingung hinzu, die überprüft, ob die globale Variable „R“ gleich der Anzahl der Elemente der globalen Variable „L“ ist. Ist dies der Fall, wurde mit jedem Helden auf der Heldenliste eine Runde gespielt. Dann sollte das Match enden.
      • Wert: Global Variable
        • Variable: R
      • Operator: ==
      • Wert: Count Of
        • Array: Global Variable
          • Variable: L
    • Sobald die Bedingung erfüllt ist, reaktiviert diese Aktion den Abschluss durch Spielmodus-Kriterien. Da der Timer auf 0 stehen wird, wird der Spielmodus das Match sofort beenden und der übliche Ablauf am Matchende beginnen.
      • Aktion: Enable Built-in Game Mode Completion

Euer Skript debuggen

Sobald ihr ein Skript erstellt habt, könnt ihr den Workshop Inspector benutzen, um euch die Ausführung eures Skripts im Spiel anzusehen, zu überprüfen, welche Aktionen und Bedingungen aktiv sind, und mögliche Probleme mit eurem Skript aufzuspüren.

So greift ihr auf den Workshop Inspector zu:

  1. Beginnt ein Spiel mit dem Skript, das ihr erstellt habt.
  2. Drückt Escape.
  3. Drückt Workshop Inspector öffnen.
  4. Drückt Aktivieren. Dieses Feature ist standardmäßig nicht aktiviert.

Der Workshop Inspector besteht aus folgenden Komponenten:

  • Eintrag: Zeigt euch an, was passiert.
  • Kommentar: Zeigt den Kommentar zu der Regel an.
  • Bedingung: Listet auf, welche Bedingungen erfüllt sein müssen, damit Aktionen ausgeführt werden.
  • Aktion: Listet auf, welche Aktion ausgeführt wird.
  • Zeitleiste Damit könnt ihr euch im Spielverlauf zeitlich vor- und zurückbewegen.

Euer Skript teilen

Wenn ihr erst einmal ein tolles Skript erstellt habt, könnt ihr es für die nächsten sechs Monate mit der ganzen Welt (oder nur mit euren Freunden) teilen. Eure selbst erstellten Skripts können auf jeder Plattform verwendet werden, egal, auf welcher sie erstellt wurden.

So teilt ihr ein Skript:

  1. Klickt auf Spielen > Spielbrowser > Erstellen > Einstellungen > Teilen .
  2. Klickt auf Kopieren.
  3. Versendet euren Link an andere!

Ein Skript öffnen

Wenn jemand ein Skript mit euch geteilt hat, das ihr benutzen möchtet:

  1. Klickt auf Spielen > Spielbrowser > Erstellen > Einstellungen > Importieren .
  2. Gebt den Link ein.
  3. Klickt auf OK.

Tipps und Tricks

  • Ihr könnt leichter auf den Workshop Inspector zugreifen, wenn ihr eine Tastenkombination dafür festlegt. Drückt dafür Escape > Optionen > Steuerung. Dann scrollt ihr nach unten bis zu „Workshop Inspector öffnen“ und wählt eine Taste aus.
  • Der Workshop Inspector sagt euch nicht nur, was passiert ist, sondern auch, was nicht passiert ist (und warum)!
  • Vergesst die Spielvorlagen nicht! Dort findet ihr vielleicht bestimmte Einstellungen, die ihr für eure Zwecke verwenden könnt, anstatt euch selbst etwas zu basteln.
  • Wenn ein Event nicht wie geplant ausgelöst wird, liegt das vielleicht daran, dass für euren [Event Player] schon eine andere Aktionsliste ausgeführt wird. Habt ein Auge auf die Aktion(en) [Wait] eurer Regel – besonders dann, wenn sie Bedingungen ignorieren sollen.
  • Um eine bestimme Position auf der Karte zu benutzen, nutzt den Wert [Vector] und klickt auf das Kamerasymbol.
  • Der Wert [Has Spawned] ist hilfreich, wenn Prozesse erst dann ablaufen sollen, wenn ein Spieler einen Helden im Spiel hat.
  • Wenn ihr wollt, dass Regeln erst nach dem Abschluss der Teamaufstellung ausgeführt werden, nutzt den Wert [Is Game In Progress].
  • Um herauszufinden, was während des Spiels mit einem Wert geschieht, ist es oft am einfachsten, den Wert einer Variable zuzuweisen und diese dann im Workshop Inspector zu verfolgen.
  • Ihr könnt den zuletzt erstellten Effekt oder das letzte Symbol mithilfe des Wertes [Last Created Entity] in einer Spielervariable speichern. So könnt ihr die Entität später für ihre Auslöschung referenzieren.
  • Indem ihr gefilterte Arrays mit Werten wie [All Players On Objective] oder [Players Within Radius] kombiniert, könnt ihr leicht nach Spielern filtern, die bestimmte Kriterien (tot, lebendig, von bestimmtem Statuseffekt betroffen usw.) erfüllen.
  • Wenn ihr Sprunganweisungen braucht, könnt ihr die Aktion [Skip If] nutzen, um beliebig viele Aktionen zu überspringen, wenn eine bestimmte Bedingung erfüllt ist. Wenn ihr das tut, brauchen die übersprungenen Aktionen möglicherweise eine Aktion [Abort], um zu verhindern, dass sie ausgeführt werden.
  • Wenn ihr etwas eintippt, filtert ihr damit die Dropdown-Menüs.
  • Wenn euer Wert ein Array als Parameter erwartet, aber keines erhält, macht es die Eingabe zu einem Array mit einem Element.
    • Umgekehrt ist es das Gleiche. Wenn euer Wert eine einzelne Information erwartet, aber ein Array erhält, nutzt es das Element auf Position 0 des Arrays.
  • Wenn ihr euer Werk in mehrere Aktionen und Bedingungen unterteilt, findet ihr leichter heraus, was schiefläuft.
  • Wenn ihr euch nicht sicher seid, was eine Aktion, ein Wert oder eine Eingabe bewirkt, könnt ihr am PC mit der Maus darüberfahren bzw. auf der Konsole „Details anzeigen“ auswählen, um eine Erklärung anzuzeigen.
  • Tragt immer einen Kommentar ein, damit ihr auch später noch dort nachsehen könnt, was eure Regel tut!
  • Testet euer Skript möglichst oft!