Das mit dem Wiki-Beitrag werde ich gleich mal ausprobieren, aber jetzt heißt es erstmal…
Extended am Sonntag #2
Variablen
Wer sich beim Wort „Variable“ mit Schrecken an seine Mathestunden erinnert, muss sich keine Sorgen machen. Variablen in Extended sind viel schrecklicher, ähm, ich meine, sie erfüllen einen ganz anderen Zweck.
Eine Schublade für jede Information
Immer, wenn sich Extended etwas für einen bestimmten Zeitraum merken soll, wird eine Variable benötigt, zum Beispiel:- Text, den der Spieler eingibt
- Anzahl der bereits besiegten Monster in einer „Killquest“
- eine Entscheidung, die der Spieler in einer Zwischensequenz trifft
Jenachdem, wie lange die Information benötigt wird, bietet Extended unterschiedliche Speicherorte, oder Quellen an.
Außerdem gibt es verschiedene Operationen, mit denen man den gespeicherten Wert verändern kann.
Wo Variablen gespeichert werden
Arbeitsablauf-Variablen
Diese sind nur so lange gültig, bis der Arbeitsblauf, in dem sie erschaffen werden, beendet wurde. Beispielsweise verwendet die Wurfmünze eine solche Variable. Da sie nur benötigt wird, um einen Münzwurf zu simulieren, ist sie im Arbeitsablauf genau richtig.
Wenn man die Münze ein weiteres Mal wirft, wird die Variable neu berechnet, unabhängig vom vorherigen Wert.
Objekt-Variablen
Wählt man als Quelle Objekt aus, wird der Wert in dem Item gespeichert, das den Arbeitsablauf auslöst.
Vorsicht: Damit das funktioniert, muss Extended einen Bezug zu einem Item herstellen können. Wenn der Arbeitsablauf zu einem Item gehört, ist das möglich, bei einem Questschritt bspw. aber nicht.
Solche Variablen sind persistent, sie bleiben auch bestehen, wenn man sich ausloggt oder das Profil wechselt. Sie werden erst gelöscht, wenn das Item, in dem sie gespeichert sind, zerstört wird.
Außerdem werden diese Variablen für jedes Item individuell gespeichert. Solltest du mehrere Kopien eines solchen Items in deinem Inventar haben, können sich die Werte von Item zu Item unterscheiden.
Kampagnen-Variablen
Ähnlich wie Objektvariablen sind diese individuell und persistent für jede einzelne Kampagne. Sie werden erst dann gelöscht, wenn die Kampagne zurückgesetzt bzw. neu gestartet wird.
Damit eine Variable in der aktiven Kampagne gespeichert werden kann, muss natürlich eine Kampagne aktiv sein.
Beachte, dass man lediglich einstellen kann, dass eine Variable in der momentan aktiven Kampagne gespeichert werden soll, man kann sich aber nicht auf eine bestimmte Kampagne festlegen. Du solltest daher die Quelle „Aktive Kampagne“ nur dann verwenden, wenn sich der Arbeitsablauf innerhalb einer Kampagne oder innerhalb von dessen inneren Objekten befindet.
Wie man Variablen verändern kann
Könnte man Variablen nicht verändern, dann wären sie nicht sehr variabel…
Der Effekt Experte > Variablenoparation bietet neben den vier Grundrechenarten auch Initialisierung und Wertzuweisung an. Über Wertzuweisung kannst du deiner Variablen einen neuen Wert geben, der alte geht dabei verloren. Initialisierung weist der Variablen nur dann einen Wert zu, wenn diese noch nicht existiert, d.h. eine Wertzuweisung ohne Überschreiben.
Mit Experte > Dynamischer Wert kannst du deiner Variablen einen Wert aus einer Vielzahl von Zuständen innerhalb der Spielumgebung zuweisen, z.B.
- Name des Gebiets, in dem sich der Charakter befindet
- Charakter-Level
- zufälliger Wert
Wie man Variablen benennt
Wie in der Beschriftung eines Formulars sollte der Variablenname Aufschluss über den Inhalt geben, gleichzeitig einprägsam und eindeutig sein. Vermeide Sonderzeichen im Variablennamen.
Beispielsweise sind gute Bezeichner für die Anzahl besiegter Gegner innerhalb einer Quest mobsSlain
, monsterKillCounter
oder numMobsKilled
. Weniger treffend sind x
, mobs
oder count
.
Wie man Variablen benutzt
Was nützen die vielen Variablen, wenn man nicht darauf zugreifen kann? Es gibt zwei wesentliche Methoden, um an den Wert einer Variablen zu kommen.
Variablen in Bedingungen
Innerhalb einer Bedingung kann man mit Expert > Variablenwert (Text/Numerisch) den momentanen Wert mit einem anderen vergleichen.
Variablen in Tags
Wird der Variablenwert direkt benötigt, helfen Variable Tags. Das ist ein Thema für einen anderen Sonntag. Hier sei nur kurz erwähnt, dass man ${var}
als Platzhalter für den Wert der Variable var
verwenden kann.
Beispiel 1: Wurfmünze mit Gedächtnis
Ich möchte die oben erwähnte Wurfmünze etwas aufmotzen. Der Tooltip soll mir anzeigen, wie oft Kopf bzw. Zahl geworfen wurden.
- erstelle ein neues Item
- linker Tooltip-Text:
Kopf: ${headsCount::0} mal
Mit${headsCount::0}
weisen wir Extended an, diese Passage durch den Wert der VariableheadsCount
zu ersetzen.
::0
sorgt dafür, dass 0 angezeigt wird, falls die Variable (noch) nicht existieren sollte. - rechter Tooltip-Text: analog
Zahl: ${tailsCount::0} mal
- linker Tooltip-Text:
- Stelle das Item als benutzbar ein.
- Wechsle ins Tab Arbeitsabläufe, dort stellst du 7 Schritte ein:
- Variablenoperation Initialisierung
headsCount
auf 0.
Als Quelle geben wir Objekt an.
Damit setzen wir vor dem ersten Wurf die Anzahl der Kopf-Würfe auf 0. - analog: Variablenoperation Initialisierung
tailsCount
auf 0. - Dynamischer Wert
coinToss
als zufällige Zahl zwischen 1 und 2. Die Quelle Arbeitsablauf genügt. - Textausgabe "Kopf", mit Bedingung:
coinToss = 1
Klicke mit gedrückterSTRG
-Taste auf den Effekt, um die Bedingung einzustellen. - analog "Zahl", falls
coinToss = 2
- Variablenoperation Addition:
headsCount
um 1 erhöhen.
Hier muss dieselbe Beedingung wie in Schritt 4 eingefügt werden. Beachte, dass die Variablenquelle im Effekt Objekt ist, während in der Effektbedingung Arbeitsablauf stehen sollte. - analog zu Schritt 6 für
tailsCount
- Variablenoperation Initialisierung
Import-Code: Wurfmünze mit Gedächtnis
!9svBpknqq4FlM43mEx3Tuj0e(q5LyicLtMcepJduAxKQL2lTf4uJ8RXFg(T7pMZSTr0k3zIjEbyA3z3zEEMzyFqb6HUc6RHPb6krqinSmmKsRwMoxVkaDnPtadCjBbcDC4vxbuaIwceMcyheg2hHxLEZA7JlpU8PFzJYpmVB6UKcBBJVEC5w)ye6ogxHGRdcZ3LTE7DFp5ZkAROIJlFPk8UVfSPijkhbWJp3RD0Kb6WlM6Y2zKldkpt4fZ7Rx0JjIuysb0x72HTxPTd6IquY(fBJYdweKgLSq0IcxN(jdq4A)nXveUWpkUoHPIf6YfBAY0Cf)cXmYYnmqv21O3IcryVF2I0vFqfqX4N9(8YnHuDj822VJ7HWPMc62abdca(dqFJJYjBccs2H59aWnQm)KWFdbUQ8sZZ1aDqddFM0TmevZvEpxzfA1WRb7q(pwqNAA3FbzYoS(taku3wW0NQNk3v7vIDWgvWhxqX7xH8bnY)SCzCyhTBx93Z9NkXFLW8i(j6gG55y3lyhnEuyN4mSJVX8aSZID08Hho)37GLJ8NDUbUOoPl4o6JhDf)f6w7cN4C94MNUxKRc2Lfv8PHQ9QyDciTnpTiqLea4qVEqLTMKScJiXRrArmoysCJo64bS2cmHNDaqsmw32Omb0JEt1kwJMZpOqcv6(zPS6OEC8dhZUPSrsQGkMis(Z92K5htYNZq3M0UZOc5Igxq5RBp6oN1Lc5LsXXLgg2sPTfjWvmRsmhgrPZL(b1pPPW2SLwCTomev8EdjDYKs300yvG4p(
Beispiel 2: Anpassbare Taschen
Zur Organisation des Extended-Inventars möchte ich eine Tasche erstellen, der ich eine Kategorie zuweisen kann, z.B. Briefe, Kampagnen-Items, Erfindungen,…
- erstelle einen Behälter-Gegenstand
- Lege
${category::(keine)}
als Tooltip-Text fest, links oder rechts je nach Präferenz - Setze die Tasche auf benutzbar
- füge im Tab "Arbeitsabläufe" einen Effekt hinzu
- Effekt: Experte > Eingabeaufforderung
- Text: neue Kategorie eingeben
- Variablenname:
category
- Variablenquelle: Objekt
- Fertig ist die anpassbare Tasche.
Mit der rechten Maustaste kannst du die Kategorie festlegen.
Mit Doppelklick öffnest du die Tasche wie gewohnt.
Import-Code: Anpassbare Tasche
!LfvBpQjqq4)m9JT3Tahnxjnnbr)G501RoOM(LbqyJUremSRMABo(10)j9p2nZYzAtB2ndZ(W8YZ8mOhMIsp6kceO0hbpFrONFGqiEUvyBqzafbmvswlcJI5xpducEpgq4jiOBUKDuBkZ2wSll4JimBccpvyv7A70keswGBrqgJqAHPCpHaPmYxJr5duXI5hBC21eKGYyj)y5ueE3plhk01OOpFqPBuF5fegZ93xqrUcWru9gXXVs6Q6e2MKY4BMWLJOnKW0UTzLrXou)jlp6GAy(jpDfcxk6Yo11E8eLtr3oZWp)ZW0NtuyNARQXPv34glsqRBAqzi7ADhGU1AJfVDGkLTqxBgeZ5J5(oBbdtuMhevT6IY8H09Df11KEGsspHXiicV3Z)EFV(Cp)OGpffsDm5)WfrSOyx)2(eQwtJ5DpChrS5uBKlCA1)2gRBhruzXuw7MVXTegVY9HKoGshOLr43zNLKdNs63O1FQBfKoe2G(cXKBNQCV1COwxEq18((8Zh7Z)lv8hN7Z)9VAQuDnCPmQYZDA71zeRQzX060YbMBr81
Viel Spaß beim Experimentieren und
bis zum nächsten Sonntag…