Include
Durch include kann man den Inhalt einer anderen Szene in der laufenden Szene aufrufen. Dies ist praktisch um z.B. größere Texte oder komplexe Codes auszulagern.
- Beispiel:
<p>Du wanderst durch den Wald.</p>
<challenge talent="Sinnenschärfe" mod="0">
<success>
<include target="genaue_beschreibung_wald"/>
</success>
<failure>
<include target="ungenaue_beschreibung_wald"/>
</failure>
</challenge>
<p>Willst du nach links oder rechts abbiegen?</p>
<ul>
<li><choice target="sicherer_tod">Nach links.</choice></li>
<li><choice target="reichtum">Nach rechts.</choice></li>
</ul>
</scene>
Wenn man unter das include <quest status="continue"/> setzt, wird der Rest der aktuellen Szene nicht mehr abgespielt, sondern es geht nur noch mit dem Include weiter. So kommt man direkt, ohne ein choice, von einer Szene zur nächsten.
- Beispiel:
<p>Du wanderst durch den Wald.</p>
<challenge talent="Sinnenschärfe" mod="0">
<success>
<include target="interessante_sichtung"/>
<quest status="continue"/><!-- Szene wird abgebrochen, weiter in interessante_sichtung.xml -->
</success>
<failure>
<!-- Es wird nichts angezeigt. Szene geht unten weiter. -->
</failure>
</challenge>
<p>Laaangweilig</p>
Durch <include> kann mit dem Attribut 'target' ein weiteres Script aufgerufen werden, welches direkt an dieser Stelle eingefügt und ausgeführt wird. Dies ist insbesondere für Questen praktisch, da bei vier verschiedenen Ausgängen sonst oft entweder Texte kopiert werden müssten oder die Szenen kurz vor dem tatsächlichen Ende nur noch ein einziges <choice>-Tag hätten.
Rekursive Aufrufe des <inlude>-Tags sind möglich.
Die Ziel-Szene im target-Attribut wird relativ zum Verzeichnis des aktuellen Skriptes und ohne die Extension ('xml') angegeben. die Angabe von Unterverzeichnissen ist möglich, ebenso '../', um wieder ein Verzeichnis hoch zu gehen.
<include target="neue_szene"/>
Ruft die Datei neue_szene.xml im gleichen Verzeichnis auf.
Stellen wir uns eine größere Quest mit mehreren Handlungsorten vor, z. B. ein Herrenhaus und ein Dorf in der Nähe. Wegen der besseren Übersicht verteilen wir die Dateien der Quest auf zwei Verzeichnisse:
/quest+ +/Dorf+ | +tsa-schrein.xml | +... +/Herrenhaus+ +eingangshalle.xml +speisesaal.xml +...
Um von der Beschreibung der Eingangshalle die Datei speisesaal.xml einzubinden:
<include target="speisesaal"/>
Um die Datei tsa-schrein.xml im Verzeichnis quest/Dorf einzubinden, muss man erst ein Verzeichnis nach oben (../) und dann in das Unterverzeichnis Dorf/ wechseln:
<include target="../Dorf/tsa-schrein"/>
Und dran denken: Wir befinden uns in einem Linux-System. Groß-/Kleinschreibung beachten!