DEdit – Datenbank Editor

Dokumentations version 1.0d , 2004-02-25


Beschreibungen Tutorial 2: Datenbanken für Fortgeschrittene (einfaches Scripting)

Dieses Tutorial erklärt einige fortgeschrittenen Konzepte von TavernMakers Beschreibungs-Datenbanken. Es wird angenommen, dass bereits bekannt ist, wie man ein einfache Datenbank anlegt und verändert. Dies wird im Tutorial 1 näher erklärt.

Dieses Tutorial ist keine Schritt-für-Schritt Anleitung mehr. Trotzdem ist es forteilhaft, das Tutorial von oben nach unten durchzugehen und die Beispiele selbst auszuprobieren.

Einfaches Scripting-Befehle - Syntax Highlighting

DEdit-Beschreibungen sind mehr als bloßer Text. Sie können Befehle beinhalten, welche beim Generieren ausgeführt werden. Alle diese Befehle beginnen mit einem $-Zeichen, weswegen dieses Zeichen in normalen Beschreibungen nicht vorkommen darf.

Dieses Tutorial erklärt nur die einfachsten Script-Befehle $Random , $OneOf , $Direct , $DB , $Menu und $Fill. Die ersten fünf dieser Befehle können direkt über Knöpfe eingefügt werden, da sie am häufigsten benötigt werden. Natürlich können Befehle aber auch einfach getippt werden.

Am unteren Rand der Seite findet sich ein Knopf mit der Bezeichnung Options. Mit ihm können die Optionen für das sogenannte Syntax highlighting gesetzt werden. Das Syntax Highlighting ist lediglich eine Text-Hervorhebung im Editor, um die Lesbarkeit der Beschreibungen zu erhöhen. Es hat keinerlei Auswirkung auf den eigentlichen Text. Befehle, Zahlen oder Variablen; sowie Klammer-Strukturen werden farbig hervorgehoben. Dadurch lassen sich Tippfehler rascher ausfindig machen. Auf langsamen Rechnern kann das Syntax-Highlighting die Geschwindikeit jedoch unangenehm drosseln. In diesen Fällen läßt es sich auch vollständig deaktivieren.

Vorschau - Ansicht

Um eine Idee zu bekommen, wie verschiedene Befehl schlußendlich wirken, erlaubt es DEdit in den Vorschau-Modus zu wechseln. Dazu muß lediglich die F4-Taste gedrückt gehalten werden. Sofort werden alle Befehle ausgeführt, und es wird der Text angezeigt, wie er sich in der endgültigen Beschreibung ergeben wird. Solange diese Vorschau angezeigt wird, kann der Datensatz nicht bearbeitet werden. Außerdem zeigt ein gelbes Feld mit der roten Beschriftung "Preview" den Anzeigemodus an.

 $Random

Der $Random Befehl kann an jeder beliebigen Textstelle benutzt werden. Mit dem $Random-Knopf kann der Befehl an der derzeitigen Cursor-Position eingefügt werden, alternativ kann man ihn natürlich auch eintippen.

 

Der Befehls-Syntax ist $Random{min,max} wobei min und max das Minimum bzw. Maximum des (ganzahligen) Wertebereichs für eine Zufallszahl angeben. $Random{3,10} erzeugt daher eine ganzzahlige Zufallszahl zwischen 3 und 10.

Wird der Befehl mit nur einem Paramter verwendet, etwa $Random{50} so wird eine Zufallszahl "rund um diese Zahl" ausgegeben, genauer: Eine Zufallszahl die im Intervall

+/- 10% des angegebenen Wertes liegt. $Random(50) erzeugt also eine Zufallszahl zwishcen 45 und 55.

 

Beispiele:

Ausgabe:
alternative Ausgabe:

$OneOf

Der $OneOf Befehl kann an jeder beliebigen Textstelle benutzt werden. Mit dem $OneOf-Knopf kann der Befehl an der derzeitigen Cursor-Position eingefügt werden, alternativ kann man ihn natürlich auch eintippen.

 

Der Befehls-Syntax ist $OneOf{<>,<>,...} wobei jedes <> für einen alternativen Text steht. Wenn der Befehl ausgeführt wird, wird zufällig einer der Textteile verwendet. $OneOf{<grün>,<rot>,<blau>} bedeutet daher entweder grün, rot oder blau. Es können beliebig viele Alternativen verwendet werden. Alle werden in < > Klammern gefaßt und mit Komma von einander getrennt.

 

Beispiele:

Ausgabe:
alternative Ausgabe:

$Direct

Der $Direct Befehl kann an jeder beliebigen Textstelle benutzt werden. Mit dem $Direct-Knopf kann der Befehl an der derzeitigen Cursor-Position eingefügt werden, alternativ kann man ihn natürlich auch eintippen.

 

Der Befehls-Syntax ist $Direct{<>,chance,min,max} wobei <> für einen beliebigen Text steht; chance die Wahrscheinlichkeit in % für das Erscheinen des Texts ist; und min & max für einen Minimal- bzw. Maximalwert einer Zufallszahl steht.

Wenn der Befehl ausgeführt wird, wird zunächst die "Chance" überprüft. Bei Erfolg wird der angegebene Text angezeigt, bei Mißerfolg wird der Befehl ignoriert. Der Befehl kann also dazu benutzt werden, zusätzliche Textteile, die nicht notwendig sind, aber unter Umständen auftauchen können, einzufügen. Die beiden Werte "min" und "max" dienen dazu, den $Random-Befehl zu inkludieren. An jeder Stelle im Text, an der %i steht, wird eine eigene, ganzzahlige Zufallszahl aus dem Wertebereich min-max eingesetzt.

 

Einige besonders häufig benötigte $Direct-Befehle sind im RPS vordefiniert. Oberhalb der Textfelder findet sich ein Add $Direct Knopf sowie einige Drop-Down Listen und Nummerfelder. Für den Add $Direct Knopf gültig ist die oberste der Drop-Down-Listen, sowie die Nummern, die für "min" "max" und "chance" stehen. Zum Beispiel könnte man %i / %i Kupfermünzen wählen, eine %-Chance soiwe die beiden min- und max-Werte eingeben und anschließend mit dem Add $Direct Knopf den vollständigen Befehl an der momentanen Cursorposition einfügen..

 

Beispiele:

Ausgabe:
alternative Ausgabe:

Kombinierte Befehle

Sämtliche Skript-Befehle können miteinander kombiniert und in einander verschachtelt verwendet werden. Vorsicht ist jedoch bei der Klammer-Setzung geboten! Aus diesem Grund hilft das Syntax Highlighting indem es die unterschiedlichen "Tiefen" der {-Klammern farbig unterschiedlich darstellt.

 

Beispiele:

Ausgabe:
alternative Ausgabe:

$Fill & race flag fill

Der $Fill Befehl kann an jeder Textstelle verwendet werden. Er wird benutzt, wenn Beschreibungen mit nicht näher bestimmter Anzahl von Personen erstellt werden. Die genau Personenanzahl wird dann erst im Zusammenhang mit dem Icon der Karte bestimmt. Der Befehl arbeitet Hand in Hand mit dem fill Flag bei den race flags.

Wid in den race flags eine Rasse durch Drücken des Fill Knopfs auf "fill" gesellt, so bekommt dieser Flag einen * Stern innerhalb der Klammern { }. Im count feld rechts daneben erscheint dann zusätzlich zur Summe noch + fill.

Das Konzept des $Fill Befehls läßt sich am leichtesten anhand eines Beispiels erklären.

 

Beispiel:

 

Für den Text-Generieralgorithmus zählt dieser Eintrag mit einer "Mindestgröße" von 3 Personen (Der fill Flag selbst zählt automatisch als 2, um grammatikalische Probelme mit Ein- und Mehrzahl zu vermeiden.) und kann daher nur bei Tischen verwendet werden, die 3 oder mehr Sitzplätze haben.

Wird der Datensatz für einen Tisch gewählt, der zum Beispiel 5 Sitzplätze hat, so zählt der fill Flag als 4 (5 minus 1 Zwerg) , und genau diese Zahl liefert in diesem Fall der Befehl $Fill.

Wird der Datensatz hingegen für eine Tisch mit nur 3 Sitzplätzen gewählt, so zählt der fill Flag nur als 2 (3 minus 1 Zwerg), und das liefert in diesem Fall auch der Befehl $Fill.

Der $Fill Befehl und fill Flag dient also dazu, "unbestimmt große" Mengen von Personen bei Tischbeschreibungen zu verwenden.

 

Bei der Ausgabenvorschau (F4) wird für den $Fill Befehl eine Zufallszahl verwendet, da es ja kein "Icon" mit einer bestimmten Größe gibt...

$DB – PPitem Datenbanken

Der $DB Befehl kann an jeder beliebigen Textstelle benutzt werden. Mit dem $DB-Knopf kann der Befehl an der derzeitigen Cursor-Position eingefügt werden, alternativ kann man ihn natürlich auch eintippen. Noch komfortabler ist jedoch der Add $DB Knopf oberhalb der Textfelder. Zu ihm gehören die beiden Drop-Down-Listen in der zweiten Zeile. In der ersten Liste läßt sich ein Objekt-Typ wählen, mit der zweiten ein (optionaler) Subtyp. Die drei Zahlenfelder (chance % , min , max) haben die selbe Bedeutung wie beim $Direct-Befehl.

Der Befehls-Syntax ist $DB{ <>,<type>, chance, min, max } wobei <> für einen Ausgabetext steht; <type> der Typ & Subtyp des Obejektes sind ; Chance in % die Wahrscheinlichkeit angibt, dass der Teext erscheint und min/max einen Wertebereich für Zufallszahlen angeben.

 

Wenn der Befehl ausgeführt wird, wird aus allen geeigneten PPItem-Datenbanken vom gegebene Objekttyp/subtyp ein passender Eintrag ausgewählt. Ist die Prüfung auf chance positiv, so wird der Ausgabetext angezeigt, wobei jedes %i in diesem Text durch eine eigene, ganzzahlige Zufallszahl zwischen min und max ; jedes %s durch den short text des gewählten Objekts und jedes %l durch den long text des gewählten Objekts ersetzt wird.

 

Ein Beispiel wird alles erklären:

 

Beispiel:

 

Wenn der Befehl ausgeführt wird, besteht eine 50% Chance, dass der Text Der Mann trägt ein... erscheint. Alle PPItem-Datenbanken werden dann nach Eintragungen waffe/messer durchsucht, und eine davon zufällig gewählt. Der short text und der long text dieser Eintragungen werden anstelle des %s und %l eingefühgt. Das Ergebnis lautet zum Beispiel:

output:
alternative output:

Dies zeigt deutlich den riesigen Vorteil des $DB Befehls und PPItem Datenbanken. Beschreibungen können jedesmal völlig verschieden sein, und andere Leute können nachträglich immer neue Möglichkeiten (andere Messer) hinzufügen, ohne dass die ursprüngliche Beschreibung geändert werden müßte!

Die Hauptidee hinter den PPItem Datenbank ist die Anwendung in der pickpocket list. (Darum PPItem für PickPocketItem). Anstatt sich bei jedem Datensatz den Kopf zu zerbrechen, welche Waffen & Ausrüstungsgegenstände hier gestohlen werden könnten, reicht es ein paar $DB Befehle zu platzieren und die ständig wachsenden PPItem Datenbanken garantieren für große Vielfalt...

Mehr über PPItem Datenbanken kann man bei der Einleitung zu PPItem Datenbanken und den Tutorials erfahren.

 

Beispiele für die PickPocketList:

Ausgabe:
alternative Ausgabe:

$Menu

Dieser Befehl ist derzeit nicht implementiert. Später wird er analog zu dem $DB Befehl funktionieren, jedoch nur Speisen der für die Taverne generierten Speisekarte zulassen. Es wird daher möglich sein, in den Beschreibungen von z.B. "dem tollen Apfelmus" zu schreiben, und gleichzeitig sicher zu sein, dass man ein derartiges auch auf der Speisekarte der Taverne wiederfindet!

 

einige Zusätzliche Beispiele für einfache Script-Befehle

Beispiele:

Ausgabe:
alternative Ausgabe: