| Der Geld-Zähler

###### Vorüberlegungen I - Vorarbeit

Bevor ihr überhaupt einen Geldzähler anlegen könnt, muss euch klar sein, dass dieser auch grafisch dargestellt werden soll. Auch sollte die Schrift des Zählers zum Rest des Inventars passen.
Optimal eignen sich für diese Zwecke CharSets, die ohne großen Aufwand an einem bestimmtem Punkt positioniert werden können. Die Beispielgrafik [counterset.png], die dem E-Book beigefügt ist, soll in unserem Beispiel zur Darstellung des Zählerergebnisses dienen. Falls ihr eigene Zahlen-CharSets entwerfen wollt, verwendet [diese Vorlagengrafik]. Der Hintergrund wird später durch das Anlegen des Zählers deutlich.

###### Vorüberlegungen II - Das Zählen des Geldes

Zu Beginn muss ein Ereignis existieren, das euer Geldvermögen (eigentlich das eurer Heldentruppe) in einer Variable speichert und diese Zahl, die durchaus sechsstellig sein kann, in einzelne Ziffern zerlegt (maximal sechs an der Zahl). Grund ist der, dass eure Heldentruppe ein maximales Vermögen von 999.999 Geldeinheiten aufbauen kann. Nur... wie wird das ganze im Maker umgesetzt?

| Benötigt wird hier ein Ereignis, das ihr auf der Hauptseite eures Inventars anlegt. Bestimmt, dass dieses Ereignis "automatisch" (!) gestartet wird und nur dann aktiv ist, wenn der Schalter "Geldzähler läuft" auf AN steht.
| Erinnert euch an den Schalter, der im Kapitel "Einstieg und Verlassen des Chara-Menüs" aktiviert wurde, aber sonst nie in Erscheinung getreten ist. Dieser hieß ebenfalls "Geldzähler läuft" und nun kommt sein "erster großer Auftritt"
| Bestimmt als erstes Ereigniskommando sechs freie, unbenutzte Variablen, denen ihr der Reihe nach folgende Namen gebt: "Cash-100K", "Cash-10K", "Cash-1K", "Cash 100", "Cash 10", "Cash 1" Diese sechs Variablen sollten in der Variablennliste nacheinander folgen und allesamt auf 0 gesetzt werden (schließlich soll der Geldzähler ja immer den wirklichen Geldstand anzeigen und nicht immer zum Vorherigem alles dazuzählen.
| Direkt danach bestimmt ihr eine siebte, freie Variable, die das Geldvermögen eurer Heldentruppe speichern soll. Gebt ihr den Namen "Cash-Counter"
| Nun folgt eine Endlosschleife.
| In dieser Endlosschleife soll nun eine Bedingung abfragen, ob das der Wert der Variable "Cash-Counter" größer als 100.000 ist (die Heldentruppe also mehr als 100.000 Geldeinheiten mit sich führt). Hier brauchen wir zwingend einen Nein-Fall.
| Im Ja-Fall soll zuerst der Variable "Cash-100K" der Wert 1 dazugezählt, dann der Variable "Cash-Counter" der Wert 100.000 abgezogen werden.
| Im Nein-Fall folgt eine weitere Bedingung, die nun abfragt, ob der Wert der Variable "Cash-Counter" größer als 10.000 ist (also ob die Heldentruppe mehr als 10.000 Geldeinheiten hat). Auch hier brauchen wir zwingend einen Nein-Fall.
| Im Ja-Fall wird der Variable "Cash-10K" der Wert 1 dazugezählt, danach der Variable "Cash-Counter" der Wert 10.000 abgezogen.
| Wiederholt nun nach dem eben geschildertem Prinzip jeweils in den Nein-Fällen die Szenarien für die Situationen, in denen die Heldentruppe mehr als 1.000, mehr als 100, mehr als 10 und mehr als 1 Geldeinheit mit sich führt. Behaltet die Reihenfolge bei (!wichtig!)
| Im Nein-Fall der letzten Bedingung, die abfragt, ob die Heldentruppe mehr als 1 Geldeinheit mit sich führt, soll aus der Endlosschleife ausgebrochen werden.
| Am unterstem Ende des Maker-Codes soll nun der Schalter "Geldzähler läuft" auf AUS gestellt werden.

###### Darstellung der Stichpunkte in MML

Cash-Counter-Ereignis
[Ereignisseite 1][Schalter [Geldzähler läuft]][Automatisch] [Variable [von [Cash-100K] bis [Cash-1] [<-- [Wert setzen][0]] [Variable [Cash-Counter][<-- [Wert setzen][Geld]] [Schleife Beginn]
| [Bedingung][Variable][Cash-Counter][größer/gleich][100.000]
| [Ja-Fall]
| [Variable [Cash-100K][+][1] [Variable [Cash-Counter][-][100.000]
| [Nein-Fall]
| [Bedingung][Variable][Cash-Counter][größer/gleich][10.000]
| [Ja-Fall]
| [Variable [Cash-10K][+][1] [Variable [Cash-Counter][-][10.000]
| [Nein-Fall]
| [Bedingung][Variable][Cash-Counter][größer/gleich][1.000]
| [Ja-Fall]
| [Variable [Cash-1K][+][1] [Variable [Cash-Counter][-][1.000]
| [Nein-Fall]
| [Bedingnung][Variable][Cash-Counter][größer/gleich][100]
| [Ja-Fall]
| [Variable [Cash-100][+][1] [Variable [Cash-Counter][-][100]
| [Nein-Fall]
| [Bedingung][Variable][Cash-Counter][größer/gleich][10]
| [Ja-Fall]
| [Variable [Cash-10][+][1] [Variable [Cash-Counter][-][10]
| [Nein-Fall]
| [Bedingung][Variable][Cash-Counter][größer/gleich][1]
| [Ja-Fall]
| [Variable [Cash-1][+][1] [Variable [Cash-Counter][-][1]
| [Nein-Fall]
| [Schleife-Ausbruch]
[Schleife Ende] [Schalter [Geldzähler läuft]] [<-- AUS]

###### Der erstellte Maker-Code

Im englischem Maker
<>Change Var: [(Cash-100K) to (Cash-1)] (Set)-0 <>Change Var: Var[Cash-Counter] (Set)-[$ Have] <>Loop <>If Var(Cash-Counter) 100000(>=) <>Change Var: Var[Cash-100K] (+)-1 <>Change Var: Var[Cash-Counter] (-)-100000 <> :Else Case <>If Var(Cash-Counter) 10000(>=) <>Change Var: Var[Cash-10K] (+)-1 <>Change Var: Var[Cash-Counter] (-)-10000 <> :Else Case <>If Var(Cash-Counter) 1000(>=) <>Change Var: Var[Cash-1K] (+)-1 <>Change Var: Var[Cash-Counter] (-)-1000 <> :Else Case <>If Var(Cash-Counter) 100(>=) <>Change Var: Var[Cash-100] (+)-1 <>Change Var: Var[Cash-Counter] (-)-100 <> :Else Case <>If Var(Cash-Counter) 10(>=) <>Change Var: Var[Cash-10] (+)-1 <>Change Var: Var[Cash-Counter] (-)-10 <> :Else Case <>If Var(Cash-Counter) 1(>=) <>Change Var: Var[Cash-1] (+)-1 <>Change Var: Var[Cash-Counter] (-)-1 <> :Else Case <>Break :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Loop <>Change Switch: Var[Geldzähler Läuft] Switch OFF <>
Im deutschem Maker (V1.10c)
<>Var. ändern: [(Cash-100K)*(Cash-1)] Wert, 0 <>Var. ändern: [Cash-Counter] Wert, Geld # <>Schleife <>Bedingung:Varbl[Cash-Counter]-100000(>=) <>Var. ändern:[Cash-100K] +, 1 <>Var. ändern:[Cash-Counter] -, 100000 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-10000(>=) <>Var. ändern:[Cash-10K] +, 1 <>Var. ändern:[Cash-Counter] -, 10000 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-1000(>=) <>Var. ändern:[Cash-1K] +, 1 <>Var. ändern:[Cash-Counter] -, 1000 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-100(>=) <>Var. ändern:[Cash-100] +, 1 <>Var. ändern:[Cash-Counter] -, 100 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-10(>=) <>Var. ändern:[Cash-10] +, 1 <>Var. ändern:[Cash-Counter] -, 10 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-1(>=) <>Var. ändern:[Cash-1] +, 1 <>Var. ändern:[Cash-Counter] -, 1 <> :Ansonsten <>Schleife stoppen <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :Schleifenende <>Schalter ändern:[Geldzähler läuft]-[AUS] <>

###### Vorüberlegung III - Die Darstellung des Geld-Zählers I

Nun kommt das ganz am Anfang erwähnte CharSet zum Einsatz, das für die Zahlendarstellung zuständig ist. Importiert nun das CharSet mit Hilfe "des RAW-Material-Editors/der Materialverwaltung" des Makers. Ist dies getan, müsst ihr euch eine Sache vor Augen führen, wenn es um das Anlegen der Zähler-Anzeige geht:

| Ihr habt sechs Variablen, die für die Anzeige des Geld-Zählerstandes zuständig sind: "Cash-100K", "Cash-10K", "Cash-1K", "Cash 100", "Cash 10", "Cash 1"
| Ihr benötigt sechs Ereingnisse auf der Karte "Inventory main", auf der ihr schon das Ereignis für den Geld-Zähler angelegt habt.
| Jedes dieser Ereignisse wird aus zehn Ereignisseiten bestehen. Jede dieser Ereignisseiten wird genau dann aktiv, wenn ein bestimmter Wert in der betreffenden Variable steht.
| Diese Werte sollen nach folgendem Schema in jedem der sechs Ereignisse von jeder der Variablen abgefragt werden: Seite 1: 0 Seite 2: 1 Seite 3: 2 ... Seite 10: 9
| Die sechs Ereignisse werden keine Ereigniskommandos beinhalten, sondern lediglich zur Zahlendarstellung dienen.
| Die Werte der Variablen "Cash 1", "Cash 100" und "Cash-10K" sollen durch rechtsbündige Zahlen, die restlichen drei durch linksbündige Zahlen dargestellt werden.
| Wichtig: Damit auch immer die richtigen Zahlen angezeigt werden, muss jedes einzelne gewählte Char-Set in den Ereignissen, die den Geld-Stand anzeigen sollen, als "Fixed Graphic/Fixierte Grafik" angezeigt werden.

###### Schemenhafte Darstellung der Stichpunkte in MML

Cash-100K-Ereignis
[Ereignisseite 1][Variable [Cash 100K]] >= [0]
[Ereignisseite 2][Variable [Cash 100K]] >= [1]
[Ereignisseite 3][Variable [Cash 100K]] >= [2]
[Ereignisseite 4][Variable [Cash 100K]] >= [3]
[Ereignisseite 5][Variable [Cash 100K]] >= [4]
[Ereignisseite 6][Variable [Cash 100K]] >= [5]
[Ereignisseite 7][Variable [Cash 100K]] >= [6]
[Ereignisseite 8][Variable [Cash 100K]] >= [7]
[Ereignisseite 9][Variable [Cash 100K]] >= [8]
[Ereignisseite 10][Variable [Cash 100K]] >= [9]

Nach diesem Schema solltet ihr am Ende sechs Ereignisse haben, die jede der sechs Variablen "Cash-100K", "Cash-10K", "Cash-1K", "Cash 100", "Cash 10", "Cash 1" komplett von 0 bis 9 abfragen. Die Hauptseite eures Inventars könnte nun wie folgt aussehen:
[Beispiel-Darstellung]

###### Vorüberlegung IV - Die Darstellung des Geld-Zählers II

Das Problem, dem ihr noch gegenüber steht, ist, dass die Beispiel-Darstellung nahezu identisch ist mit der, die sich euch während des Spielens bietet. Ihr hättet also, wenn ihr nach der [Beispiel-Darstellung] vorgegangen seid, einen "zweizeiligen Geld-Anzeiger", der eigentlich einzeilig sein sollte. Doch dies lässt sich schnell und recht einfach beheben.

| Merkt oder notiert euch die Nummern der drei Zahlen-Ereignisse, die nicht an der richtigen Position sitzen.
| Bedenkt: Über dem Ereignis, das die 1er-Werte zählt, soll genau das sitzen, das die 10er-Werte zählt Über dem Ereignis, das die 100er-Werte zählt, soll das Ereignis sitzen, das die 1.000er-Werte zählt. Über dem Ereignis, das die 10.000er-Werte zählt, soll das sitzen, das die 100.000er-Werte zählt. In unserem Beispiel werden die Ereignisse entsprechend übereinander gelegt, wie eben beschrieben.
| Es sind drei zusätzliche Ereigniskommandos erforderlich, die drei der Zahlen-Ereignisse bewegen, die allesamt über "Set Event place/Ereignis positionieren" angelegt werden. Sie sollen dafür sorgen, dass die Ereignisse übereinander liegen, die übereinander liegen sollen.
| Diese drei Ereigniskommandos sollen nun ganz an den Anfang des Ereignisses, das ihr am Anfang zum Geld-Zählen angelegt habt.

###### Darstellung der Stichpunkte in MML

Cash-Counter-Ereignis
[Ereignisposition][Cash-10][Manuelle Kartenposition] /* *Das Ereignis "Cash-10" soll auf das Ereignis "Cash-1" gelegt *werden */ [Ereignisposition][Cash-1000][Manuelle Kartenposition] /* *Das Ereignis "Cash-1000" soll auf das Ereignis "Cash-100" gelegt *werden */ [Ereignisposition][Cash-100000][Manuelle Kartenposition] /* *Das Ereignis "Cash-100000" soll auf das Ereignis "Cash-10000" gelegt *werden */ /* *Direkt hiernach folgt der restliche Code des Cash-Counters */

###### Der erstellte Maker-Code

Die Änderungen zum Maker-Code des zuvor angelegten Cash-Counters sind fett hervorgehoben.

Im englischem Maker
<>Teleport Event: Cash-10-(___,___) <>Teleport Event: Cash-1000-(___,___) <>Teleport Event: Cash-100000-(___,___) <>Change Var: [(Cash-100K) to (Cash-1)] (Set)-0 <>Change Var: Var[Cash-Counter] (Set)-[$ Have] <>Loop <>If Var(Cash-Counter) 100000(>=) <>Change Var: Var[Cash-100K] (+)-1 <>Change Var: Var[Cash-Counter] (-)-100000 <> :Else Case <>If Var(Cash-Counter) 10000(>=) <>Change Var: Var[Cash-10K] (+)-1 <>Change Var: Var[Cash-Counter] (-)-10000 <> :Else Case <>If Var(Cash-Counter) 1000(>=) <>Change Var: Var[Cash-1K] (+)-1 <>Change Var: Var[Cash-Counter] (-)-1000 <> :Else Case <>If Var(Cash-Counter) 100(>=) <>Change Var: Var[Cash-100] (+)-1 <>Change Var: Var[Cash-Counter] (-)-100 <> :Else Case <>If Var(Cash-Counter) 10(>=) <>Change Var: Var[Cash-10] (+)-1 <>Change Var: Var[Cash-Counter] (-)-10 <> :Else Case <>If Var(Cash-Counter) 1(>=) <>Change Var: Var[Cash-1] (+)-1 <>Change Var: Var[Cash-Counter] (-)-1 <> :Else Case <>Break :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Loop <>Change Switch: Var[Geldzähler Läuft] Switch OFF <>
Im deutschem Maker (V1.10c)
<>Ereign.-Platz setzn: Cash-10, (___,___) <>Ereign.-Platz setzn: Cash-1000, (___,___) <>Ereign.-Platz setzn: Cash-100000, (___,___) <>Var. ändern: [(Cash-100K)*(Cash-1)] Wert, 0 <>Var. ändern: [Cash-Counter] Wert, Geld # <>Schleife <>Bedingung:Varbl[Cash-Counter]-100000(>=) <>Var. ändern:[Cash-100K] +, 1 <>Var. ändern:[Cash-Counter] -, 100000 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-10000(>=) <>Var. ändern:[Cash-10K] +, 1 <>Var. ändern:[Cash-Counter] -, 10000 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-1000(>=) <>Var. ändern:[Cash-1K] +, 1 <>Var. ändern:[Cash-Counter] -, 1000 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-100(>=) <>Var. ändern:[Cash-100] +, 1 <>Var. ändern:[Cash-Counter] -, 100 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-10(>=) <>Var. ändern:[Cash-10] +, 1 <>Var. ändern:[Cash-Counter] -, 10 <> :Ansonsten <>Bedingung:Varbl[Cash-Counter]-1(>=) <>Var. ändern:[Cash-1] +, 1 <>Var. ändern:[Cash-Counter] -, 1 <> :Ansonsten <>Schleife stoppen <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :Schleifenende <>Schalter ändern:[Geldzähler läuft]-[AUS] <>