| Die Menü-Steuerung

###### Vorüberlegungen I - Die Steuerung im Hintergrund

Die Steuerung innerhalb des kleinen Menüs soll so ablaufen, dass durch Drücken der entsprechenden Cursortasten der Cursor im Spiel nach oben und unten bewegt werden kann. Ein Druck auf ENTER soll dann später einen Menüpunkt auswählen, je nach dem, wo sich der Cursor befindet.

| Bleibt weiter im Ereignis, das ihr "Hero-Control" genannt habt und legt zwei neue Ereignis-Seiten an (4 und 5). Die vierte Ereignis-Seite soll die Cursor-Darstellung übernehmen, das fünfte die einzelnen Menüpunktfunktionen möglich machen.
| Begebt euch auf die erste Ereignis-Seite und legt zwischen den beiden Ereignisaufrufen dort eine Funktion an, die eine neue Variable - nennt sie "sks_cursorMultiplyer - auf den Wert 0 setzt. Danach soll die vierte Seite des Ereignisses aufgerufen werden.
| Direkt unter der Variablenfunktion, aber noch über dem letztem Ereignisaufruf, legt ihr eine Endlos-Schleife an.
| Als erstes soll in der Endlosschleife eine Tastenabfrage folgen, die in eine neue, freie Variable - nennt sie "sks_button" - Werte hinein schreibt, wenn die Cursortasten oder die ENTER-Taste gedrückt werden. Es soll unbedingt auf eine Tasteneingabe gewartet werden.
| Hiernach soll eine Bedingung folgen, die prüft, ob der Wert der Variable "sks_button" dem Wert "1" entspricht (Cursortaste nach unten wurde gedrückt). Im Ja-Fall soll zuerst der Wert der Variable "sks_cursorMultiplyer" um 1 erhöht, dann die vierte Ereignis-Seite dieses Ereignisses aufgerufen werden.
| Im Nein-Fall soll eine weitere Bedingung prüfen, ob der Wert der Variable "sks_button" dem Wert "4" entspricht (Cursortaste nach oben wurde gedrückt). Im Ja-Fall dieser Bedingung soll der Wert der Variable "sks_cursorMultiplyer" um 1 verringert, dann die vierte Ereignis-Seite des Ereignisses aufgerufen werden.
| Im Nein-Fall dieser Bedingung wiederum soll eine neue Bedingung prüfen, ob der Wert der Variable "sks_button" dem Wert "5" entspricht (ENTER wurde gedrückt). Im Ja-Fall der Bedingung soll die fünfte Ereignis-Seite aufgerufen werden, während wir einen Nein-Fall nicht brauchen.
| Begebt euch nun in die letzte leere Zeile vor dem Ende der Endlos-Schleife. Hier soll eine letzte Bedingung abfragen, ob ein neuer, freier Schalter (nennt ihn "Action Done") auf AN steht. Im Ja-Fall soll er schalter erst auf AUS gestellt, dann ein Schleifenausbruch erfolgen. Ein Nein-Fall ist hier nicht nötig.

###### Darstellung der Stichpunkte in MML

Was neu hinzu kam, ist fett und kursiv hervorgehoben

Hero-Control-Ereignis
[Ereignisseite 1] [Push Key] [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [2]] [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][0]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]] [Schleife Beginn]
| [Variable [sks_button]][<-- [hoch, runter, ENTER]] [Bedingung][Variable][sks_button][gleich][1]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_button][gleich][4]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_button][gleich][5]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [5]]
[Bedingung][Schalter][Action-done][AN]
| [Ja-Fall]
| [Schalter [Actopn-done]][<-- [AUS]] [Schleife Ausbruch]
[Schleife Ende] [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [3]]
[Ereignisseite 2] [Push Key] [Picture zeigen][18][sks_menu][X = [272] Y = [48]] [Transparent] [Bedingung][Variable][Chara-Move-ID][gleich][1]
| [Ja-Fall]
| [Bedingung][Variable][Held #1][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #1][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][2]
| [Ja-Fall]
| [Bedingung][Variable][Held #2][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #2][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][3]
| [Ja-Fall]
| [Bedingung][Variable][Held #3][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #3][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][4]
| [Ja-Fall]
| [Bedingung][Variable][Held #4][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #4][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
[Ereignisseite 3] [Push Key] [Picture weg][17] [Picture weg][18] [Picture weg][19] [Picture weg][20]
[Ereignisseite 4] [Push Key]
[Ereignisseite 5] [Push Key]

###### Der erstellte Maker-Code auf Seite 1 des Ereignisses

Im englischem Maker
<>Call Event: Hero-ControlPG[2] <>Change Var: Var[lll1:sks_cursorMultiplyer] (Set)- 0 <>Call Event: Hero-ControlPG[4] <>Loop <>Enter Password: Var[lll2:sks_button] <>If (lll2:sks_button) 1 <>Change Var: Var[lll1:sks_cursorMultiplyer] (+), 1 <>Call Event: Hero-ControlPG[4] <> :Else Case <>If (lll2:sks_button) 4 <>Change Var: Var[lll1:sks_cursorMultiplyer] (-), 1 <>Call Event: Hero-ControlPG[4] <> :Else Case <>If (lll2:sks_button) 5 <>Call Event: Hero-ControlPG[5] <> :End Case <> :End Case <> :End Case <>If Switch(lll1:Action-done) is ON <>Change Switch: Var[lll1:Action-done] Switch OFF <>Break <> :End Case <> :End Loop <>Call Event: Hero-ControlPG[3] <>
Im deutschem Maker (V1.10c)
<>Ereignis aufrufen: Hero-Control[2] <>Var. ändern:[lll1:sks_cursorMultiplyer]Wert, 0 <>Ereignis aufrufen: Hero-Control[4] <>Schleife <>Tasten abfragen:[lll2:sks_button] <>Bedingung:Varbl[lll2:sks_button]-1 <>Var. ändern:[lll1:sks_cursorMultiplyer] +, 1 <>Ereignis aufrufen: Hero-Control[4] <> :Ansonsten <>Bedingung:Varbl[lll2:sks_button]-4 <>Var. ändern:[lll1:sks_cursorMultiplyer] -, 1 <>Ereignis aufrufen: Hero-Control[4] <> :Ansonsten <>Bedingung:Varbl[lll2:sks_button]-5 <>Ereignis aufrufen: Hero-Control[5] <> :End-Fall <> :End-Fall <> :End-Fall <>Bedingung:Schalter[lll1:Action-done]-AN <>Schalter ändern:[lll1:Action-done]-[AUS] <>Schleife stoppen <> :End-Fall <> :Schleifenende <>Ereignis aufrufen: Hero-Control[3] <>

###### Vorüberlegungen II - Die Cursor-Darstellung und dessen Bewegung

Ihr habt nun den ersten Teil des Codes für die Steuerung des Heldenmenüs erstellt, doch davon ist bislang noch nichts im SKS zu sehen, wenn eure Helden am Zug sind. Ihr müsst also noch dafür sorgen, dass der Cursor dargestellt wird. Im vorangegangenem Punkt habt ihr bestimmt, dass nur die Tasten "Cursor hoch" und "Cursor runter" die einzigen sind, die den Cursor in Bewegung setzen sollen.
Wichtig ist, dass ihr die dem E-Book beigefügte Grafik [cursor.png] verwendet. Sie ist 16x16 Pixel groß. Dadurch ist es einfach, die Pixelpositionen zu bestimmen. Der Cursor muss mit jedem Druch auf die entsprechenden Tasten nur um 16 Pixel nach oben oder unten bewegt werden.
Auch ist wichtig, dass der Cursor nicht außerhalb des Menüs landet. Also müsst ihr hier noch Grenzwerte festlegen. Hier kommt die zuvor verwendete Variable "sks_cursorMultiplyer" zum Einsatz. Sie startet mit 0, was heißen soll, dass der Cursor sich am erstem Punkt des SKS-Menüs befinden soll. Da dieses Menü 5 Punkte hat, wäre der Cursor im Fall, dass der Wert der Variable "4" ist, also beim unterem fünftem Punkt. Die Grenzwerte, bei denen jeweils der höchste bzw. niedrigste Wert direkt vorgegeben werden muss, sind also "-1" und "5". Bei "-1" soll direkt eine 4, bei "5" eine 0 in der Variable landen.
Es ist also klar, dass die Cursor-Position von Variablen bestimmt werden muss.

| Da ihr bestimmt habt, dass bei Drücken der Cursor-Tasten die vierte Seite des Ereignisses aufgerufen werden soll, begebt ihr euch gleich dorthin.
| Zunächst braucht ihr drei Variablen: Die erste soll die X-Koordinaten des Cursors vorgeben. Da die Cursor-Grafik 16 Pixel und die SKS-Menügrafik 96 Pixel breit ist rechnet ihr einfach nach folgender Formel die Startkoordinate X aus: [Maximale Bildbreite] - [Breite des SKS-Menüs] + [Halbe Breite der Cursor-Grafik]. In unserem Fall haben wir also folgendes zu rechnen: 320 - 96 + 8 == 232. Das ist der Wert, der direkt in die erste neue Variable, die ihr "sks_cursorX" nennt, zu schreiben ist. Die zweite Variable soll den sich durch die Cursorbewegungen stetig ändernden Wert für die Y-Koordinaten aufnehmen. Für den Anfang soll hier direkt der Y-Wert der Position geschrieben werden, an dem sich der Cursor ganz am Anfang befindet, also in Höhe des ersten Punktes des SKS-Menüs. Da die SKS-Menügrafik 96 Pixel und der Cursor 16 Pixel hoch sind, können wir das recht einfach bestimmen, da die Rahmengrafik sich an der 16x16-Pixel-Rastergrafik orientiert. In der ersten Zeile wird der Avatar des Helden, der am Zug ist, angezeigt. Also wird der Cursor hier nie dargestellt werden. Er muss eine Zeile tiefer starten. Also müssen wir die gesamte Höhe der ersten Chipzeile und die halbe Höhe der Cursorgrafik zusammenzählen. In unserem Fall heißt das, dass wir 16 und 8 zusammenzuzählen haben und somit den Wert "24" in die zweite neue Variable, die ihr "sks_cursorY" nennt, schreiben werden. Die dritte Variable soll die Höhe der Cursorgrafik aufnehmen. Da diese in unserem Beispiel 16 Pixel hoch ist, soll in die dritte Variable, die ihr "sks_Y-Addition" nennt, eine 16 zu schreiben.
| Nach der dritten Variable soll eine Endlos-Schleife starten
| In dieser Endlos-Schleife wird nun durch Bedingungen nach den Grenzwerten gefragt. Also soll eine neue Bedingung prüfen, ob der Wert der Variable "sks_cursorMultiplyer" dem Wert "-1" entspricht. Im Ja-Fall soll der Wert der Variable direkt auf 4 gesetzt werden.
| Im Nein-Fall dieser Bedingung soll eine weitere folgen, die Prüfen soll, ob der Wert der Variable "sks_cursorMultiplyer" dem Wert "5" entspricht. Im Ja-Fall soll der Wert der Variable direkt auf 0 gesetzt werden. Ein Nein-Fall ist hier nicht nötig.
| Unter dem End-Fall der beiden Bedingungen soll der Wert der Variable "sks_Y-Addititon" mit dem Wert der Variable "sks_cursorMultiplyer" malgenommen werden. Dann soll zum Wert der Variable "sks_cursorY" der Wert der Variable "sks_Y-Addition" dazugezählt werden, gefolgt von einem Schleifenausbruch.
| Ganz am Ende des Makercodes soll nun mit der Bild-ID 19 die Cursor-Grafik dargestellt werden. Der X-Wert soll von der Variable "sks_cursorX" und der Y-Wert von der Variable "sks_cursorY" vorgegeben werden.

###### Darstellung der Stichpunkte in MML

Was neu hinzu kam, ist fett und kursiv hervorgehoben

Hero-Control-Ereignis
[Ereignisseite 1] [Push Key] [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [2]] [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][0]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]] [Schleife Beginn]
| [Variable [sks_button]][<-- [hoch, runter, ENTER]] [Bedingung][Variable][sks_button][gleich][1]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_button][gleich][4]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_button][gleich][5]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [5]]
[Bedingung][Schalter][Action-done][AN]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [5]]
[Schleife Ende] [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [3]]
[Ereignisseite 2] [Push Key] [Picture zeigen][18][sks_menu][X = [272] Y = [48]] [Transparent] [Bedingung][Variable][Chara-Move-ID][gleich][1]
| [Ja-Fall]
| [Bedingung][Variable][Held #1][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #1][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][2]
| [Ja-Fall]
| [Bedingung][Variable][Held #2][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #2][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][3]
| [Ja-Fall]
| [Bedingung][Variable][Held #3][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #3][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][4]
| [Ja-Fall]
| [Bedingung][Variable][Held #4][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #4][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
[Ereignisseite 3] [Push Key] [Picture weg][17] [Picture weg][18] [Picture weg][19] [Picture weg][20]
[Ereignisseite 4] [Push Key] [Variable [sks_cursorX]][<-- [Wert setzen][232]] [Variable [sks_cursorY]][<-- [Wert setzen][24]] [Variable [sks_Y-Addition]][<-- [Wert setzen][16]] [Schleife Beginn]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][-1]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][5]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][0]]
[Schleife Ende] [Picture zeigen][19][cursor][[X = [sks_cursorX] Y = [sks_cursorY]] [Transparent]
[Ereignisseite 5] [Push Key]

###### Der erstellte Maker-Code auf Seite 4 des Ereignisses

Im englischem Maker
<>Change Var: Var[mmm1:sks_cursorX] (Set)- 232 <>Change Var: Var[mmm2:sks_cursorY] (Set)- 24 <>Change Var: Var[mmm3:sks_Y-Addition] (Set)- 16 <>Loop <>If Var(lll1:sks_cursorMultiplyer) -1 <>Change Var: Var[lll1:sks_cursorMultiplyer] (Set)- 4 <> :Else Case <>If Var(lll1sks_cursorMultiplyer) 5 <>Change Var: Var[lll1:sks_cursorMultiplyer] (Set)- 0 <> :End Case <> :End Case <>Change Var: Var[mmm3:sks_Y-Addition] (*)- Var[lll1] <>Change Var: Var[mmm2:sks_cursorY] (+)- Var[mmm3] <>Break <> :End Loop <>Show Picture: ID:19-cursor-(V[mmm1],V[mmm2]) <>
Im deutschem Maker (V1.10c)
<>Var. ändern:[mmm1:sks_cursorX]Wert, 232 <>Var. ändern:[mmm2:sks_cursorY]Wert, 24 <>Var. ändern:[mmm3:sks_Y-Addition]Wert, 16 <>Schleife <>Bedingung:Varbl[lll1:sks_cursorMultiplyer]- -1 <>Var, ändern:[lll1:sks_cursorMultiplyer]Wert, 4 <> :Ansonsten <>Bedingung:Varbl[lll1:sks_cursorMultiplyer]- 5 <>Var. ändern:[lll1:sks_cursorMultiplyer]Wert, 0 <> :End-Fall <> :End-Fall <>Var. ändern:[mmm3:sks_Y-Addition]*, Var.[lll1]Wert <>Var. ändern:[mmm2:sks_cursorY]+, Var.[mmm3]Wert <>Schleife stoppen <> :Schleifenende <>Bild anzeigen: 19,cursor, (V[mmm1], V[mmm2]) <>

###### Vorüberlegungen III - Die Heldensteuerung ermöglichen

Zuletzt muss noch den Helden ermöglicht werden, dass sie bzw. die Spieler auf das SKS-Menü zugreifen können. Dies ist nicht gerade die Welt...

| Begebt euch auf die zweite Seite des Ereignisses, das ihr "Steuerung" genannt habt. Genauer gesagt in die Bedingung, die prüft, ob der Wert der Variable "Chara-Move-ID" dem Wert "1" entspricht.
| Legt unter der Variablenfunktion, die den Wert von "Chara-Pointer" um 1 steigert, eine neue Bedingung an, die prüft, ob der Wert der Variable "Held #1" anders als 0 ist... ohne Nein-Fall.
| Innerhalb dieser Bedingung soll eine weitere folgen, die prüft, ob der Schalter "Held 1 - Tot" AUS ist. Auch hier wieder ohne Nein-Fall.
| Im Ja-Fall der Bedingung wiederum soll die erste Seite des Ereignisses, das ihr "Hero-Control" genannt habt, aufgerufen werden.
| Wiederholt die drei vorangegangenen Punkte in den Bedingungen, die prüfen, ob die Werte der Variable "Chara-Move-ID" 2, 3 und 4 sind, jeweils mit den entsprechenden Variablen "Held #2", "Held #3" und "Held #4" und Schaltern "Held 2 - Tot", "Held 3 - Tot" und "Held 4 - Tot".

###### Darstellung der Stichpunkte in MML

Das, was neu hinzugekommen ist, ist fett hervorgehoben

Steuerung-Ereignis
[Ereignisseite 1][Automatisch] [Picture zeigen][Bildnummer][Beispielgegner][X = 60][Y = 100][Transparent] [Variable [HP - Gegner 1]][<-- [Wert setzen][50]] [Variable [HP - Gegner 2]][<-- [Wert setzen][50]] [Variable [HP - Gegner 3]][<-- [Wert setzen][50]] [Variable [HP - Gegner 4]][<-- [Wert setzen][100]] [Variable [MP - Gegner 1]][<-- [Wert setzen][0]] [Variable [MP - Gegner 2]][<-- [Wert setzen][0]] [Variable [MP - Gegner 3]][<-- [Wert setzen][0]] [Variable [MP - Gegner 4]][<-- [Wert setzen][20]] [Ereignis aufrufen][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignis-Seite [1]] [Ereignis aufrufen][Kartenereignis [HP/MP-Berechnung-Ereignis]][Ereignis-Seite [1]] [Ereignis aufrufen][Kartenereignis [Zugreihenfolge-Ereignis]][Ereignis-Seite [1]] [Schalter [SKS-Start - Done]][<-- [AN]
[Ereignisseite 2][Automatisch][Schalter [SKS-Start - Done]] [Variable [Chara-Pointer]][<-- [Wert setzen][115] [Schleife Beginn]
| [Variable [Chara-Move-ID]][<-- [Wert setzen][Variable [Variable [Chara-Pointer] übergibt Nummer]] [Bedingung][Variable [Chara-Move-ID]][gleich][1]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]] [Bedingung][Variable][Held #1][anders als][0]
| [Ja-Fall]
| [Bedingung][Schalter [Held 1 - Tot]][AUS]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][2]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]] [Bedingung][Variable][Held #2][anders als][0]
| [Ja-Fall]
| [Bedingung][Schalter [Held 2 - Tot]][AUS]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][3]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]] [Bedingung][Variable][Held #3][anders als][0]
| [Ja-Fall]
| [Bedingung][Schalter [Held 3 - Tot]][AUS]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][4]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]] [Bedingung][Variable][Held #4][anders als][0]
| [Ja-Fall]
| [Bedingung][Schalter [Held 4 - Tot]][AUS]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [1]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][5]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]] [Warten [0,4 Sekunden]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][6]
| [Ja-Fall]
| [Variable [[Chara-Pointer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]] [Warten [0,4 Sekunden]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][7]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]] [Warten [0,4 Sekunden]]
| [Nein-Fall]
| [Bedingung][Variable [Chara-Move-ID]][gleich][8]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [+][1]] [Variable [Temp-RandomSkill]][<-- [Wert setzen][Zufall zwischen [1] und [2]]] [Bedingung][Variable][Temp-Randomskill][gleich][1]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]]
| [Nein-Fall]
| [Ereignisaufruf][Kartenereignis [Gegnerskills] [Ereignisseite [3]]
[Warten [0,4 Sekunden]]
[Bedingung][Schalter [Skill not possible]][AN]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [-][1]]
[Bedingung][Variable [Chara-Pointer]][gleich][123]
| [Ja-Fall]
| [Variable [Chara-Pointer]][<-- [Wert setzen][115]]
[Schleife Ende]

###### Der erstellte Maker-Code auf Seite 2 des Ereignisses

Was neu hinzugekommen ist, ist fett hervorgehoben

Im englischem Maker
<>Change Var: Var[hhh1: Chara-Pointer] (Set)- 115 <>Loop <>Change Var: Var[hhh2: Chara-Move-ID] (Set)-Var[Var[hhh1]] <>If Var(hhh2: Chara-Move-ID) 1 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>If Var (aaa1: Held #1) 0(<>) <>If Switch (xxx1: Held 1 - Tot) is OFF <>Call Event: Hero-ControlPG[1] <> :End Case <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 2 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>If Var (aaa2: Held #2) 0(<>) <>If Switch (xxx2: Held 2 - Tot) is OFF <>Call Event: Hero-ControlPG[1] <> :End Case <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 3 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>If Var (aaa3: Held #3) 0(<>) <>If Switch (xxx3: Held 3 - Tot) is OFF <>Call Event: Hero-ControlPG[1] <> :End Case <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 4 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>If Var (aaa4: Held #1) 0(<>) <>If Switch (xxx4: Held 1 - Tot) is OFF <>Call Event: Hero-ControlPG[1] <> :End Case <> :End Case <> :Else Case <>If Var(hhh2: Chara-Move-ID) 5 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Call Event: GegnerskillsPG[3] <>Wait: 0.4sec <> :Else Case <>If Var(hhh2: Chara-Move-ID) 6 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Call Event: GegnerskillsPG[3] <>Wait: 0.4sec <> :Else Case <>If Var(hhh2: Chara-Move-ID) 7 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Call Event: GegnerskillsPG[3] <>Wait: 0.4sec <> :Else Case <>If Var(hhh2: Chara-Move-ID) 8 <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1 <>Change Var: Var[hij1: Temp-RandomSkill] (Set)-Random(1 to 2) <>If Var(hij1: Temp-RandomSkill) 1 <>Call Event: GegnerskillsPG[3] :Else Case <>Call Event: GegnerskillsPG[3] :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <>If Switch(dddd: Skill not possible) is ON <>Change Var: Var[hhh1: Chara-Pointer] (-)- 1 <> :End Case <>If Var(hhh1: Chara-Pointer) 123 <>Change Var: Var[hhh1: Chara-Pointer] (Set)- 115 <> :End Case <> :End Loop <>
Im deutschem Maker (V1.10c)
<>Var. ändern:[hhh1:Chara-Pointer]Wert, 115 <>Schleife <>Var. ändern:[hhh2:Chara-Move-ID]Wert, Var.[V[hhh1]]Inh. <>Bedingung:Varbl[hhh2:Chara-Move-ID]-1 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Bedingung:Varbl[aaa11: Held #1]-0andr <>Bedingung:Schalter[xxx1:Held 1 - Tot]- AUS <>Ereignis aufrufen:Hero-Control[1] <> :End-Case <> :End-Case <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-2 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Bedingung:Varbl[aaa2: Held #2]-0andr <>Bedingung:Schalter[xxx2:Held 2 - Tot]- AUS <>Ereignis aufrufen:Hero-Control[1] <> :End-Case <> :End-Case <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-3 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Bedingung:Varbl[aaa3: Held #3]-0andr <>Bedingung:Schalter[xxx3:Held 3 - Tot]- AUS <>Ereignis aufrufen:Hero-Control[1] <> :End-Case <> :End-Case <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-4 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Bedingung:Varbl[aaa4: Held #4]-0andr <>Bedingung:Schalter[xxx4:Held 4 - Tot]- AUS <>Ereignis aufrufen:Hero-Control[1] <> :End-Case <> :End-Case <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-5 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Ereignis aufrufen: Gegnerskills[3] <>Warten: 0.4S. <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-6 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Ereignis aufrufen: Gegnerskills[3] <>Warten: 0.4S. <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-7 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Ereignis aufrufen: Gegnerskills[3] <>Warten: 0.4S. <> :Ansonsten <>Bedingung:Varbl[hhh2:Chara-Move-ID]-8 <>Var. ändern:[hhh1:Chara-Pointer]+, 1 <>Var. ändern:[hij1:Temp-RandomSkill]-1 <>Ereignis aufrufen: Gegnerskills[3] <> :Ansonsten <>Ereignis aufrufen: Gegnerskills[3] <> :End-Fall <>Warten: 0.4S. <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Bedingung:Schalter[dddd: Skill not possible]-AN <>Var. ändern:[hhh1:Chara-Pointer]-, 1 <> :End-Fall <>Bedingung:Varbl[hhh1:Chara-Pointer]-123 <>Var. ändern:[hhh1:Chara-Pointer]Wert, 115 <> :End-Fall <> :Schleifenende <>

###### Vorüberlegungen IV - Die einzelnen Menüpunkte...

sollen auch noch in diesem Ereignis angesprochen werden. Dieses "Ansprechen" findet im Spiel durch drücken der Taste ENTER statt, was im Hintergrund die fünfte Ereignis-Seite aufruft. Hier soll unterschieden werden, auf welchen Punkt der Cursor zeigt und die entsprechende Funktion soll starten. Wir werden hier lediglich die Unterscheidung anlegen, die Funktionen folgen in den späteren Kapiteln.

| Begebt euch auf die fünfte Seite des Ereignisses und legt dort eine Bedingung an, die prüfen soll, ob der Wert der Variable "sks_cursorMultiplyer" genau dem Wert "0" entspricht. Lasst den Ja-Fall leer.
| Im Nein-Fall legt ihr eine neue Bedingung an, die prüfen soll, ob der Wert der selben Variable 1 ist. Lasst auch hier den Ja-Fall leer.
| Wiederholt das Schema, bis ihr eine Bedingung angelegt habt, die prüft, ob der Wert der Variable 4 ist. Diese braucht keinen Nein-Fall mehr.

###### Darstellung der Stichpunkte in MML

Das, was neu hinzugekommen ist, ist fett hervorgehoben

Hero-Control-Ereignis
[Ereignisseite 1] [Push Key] [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [2]] [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][0]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]] [Schleife Beginn]
| [Variable [sks_button]][<-- [hoch, runter, ENTER]] [Bedingung][Variable][sks_button][gleich][1]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_button][gleich][4]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [+][1]] [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_button][gleich][5]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [5]]
[Bedingung][Schalter][Action-done][AN]
| [Ja-Fall]
| [Ereignisaufruf][Kartenereignis [Hero-Control]][Ereignisseite [5]]
[Schleife Ende] [Ereignisaufruf][Kartenereignis [Hero-Control][Ereignisseite [3]]
[Ereignisseite 2] [Push Key] [Picture zeigen][18][sks_menu][X = [272] Y = [48]] [Transparent] [Bedingung][Variable][Chara-Move-ID][gleich][1]
| [Ja-Fall]
| [Bedingung][Variable][Held #1][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #1][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][2]
| [Ja-Fall]
| [Bedingung][Variable][Held #2][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #2][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][3]
| [Ja-Fall]
| [Bedingung][Variable][Held #3][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #3][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Chara-Move-ID][gleich][4]
| [Ja-Fall]
| [Bedingung][Variable][Held #4][gleich][1]
| [Ja-Fall]
| [Picture zeigen][17][alex_window[[X = [272] Y = [48]] [Transparent]
| [Nein-Fall]
| [Bedingung][Variable][Held #4][gleich][2]
| [Ja-Fall]
| [Picture zeigen][17][annie_window[[X = [272] Y = [48]] [Transparent]
[Ereignisseite 3] [Push Key] [Picture weg][17] [Picture weg][18] [Picture weg][19] [Picture weg][20]
[Ereignisseite 4] [Push Key] [Variable [sks_cursorX]][<-- [Wert setzen][232]] [Variable [sks_cursorY]][<-- [Wert setzen][24]] [Variable [sks_Y-Addition]][<-- [Wert setzen][16]] [Schleife Beginn]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][-1]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][4]]
| [Nein-Fall]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][5]
| [Ja-Fall]
| [Variable [sks_cursorMultiplyer]][<-- [Wert setzen][0]]
[Schleife Ende] [Picture zeigen][19][cursor][[X = [sks_cursorX] Y = [sks_cursorY]] [Transparent]
[Ereignisseite 5] [Push Key] [Bedingung][Variable][sks_cursorMultiplyer][gleich][0]
| [Ja-Fall]
| /* *Hier wird der Angriff mit einer Waffe eingeleitet */
| [Nein-Fall]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][1]
| [Ja-Fall]
| /* * Hier wird die Abwehr eingeleitet */
| [Nein-Fall]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][2]
| [Ja-Fall]
| /* * Hier wird der Fertigkeiteneinsatz ermöglicht */
| [Nein-Fall]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][3]
| [Ja-Fall]
| /* * Von hier aus wird der Item-Einsatz ermöglicht */
| [Nein-Fall]
| [Bedingung][Variable][sks_cursorMultiplyer][gleich][4]
| [Ja-Fall]
| /* * Hier findet sich die Möglichkeit des Flüchtens */

###### Der erstellte Maker-Code auf Seite 5 des Ereignisses

Was neu hinzugekommen ist, ist fett hervorgehoben

Im englischem Maker
<>If Var(lll1: sks_cursorMultiplyer) 0 <>Note: Angriff <> :Else Case <>If Var(lll1: sks_cursorMultiplyer) 1 <>Note: Abwehr <> :Else Case <>If Var(lll1: sks_cursorMultiplyer) 2 <>Note: Zaubern <> :Else Case <>If Var(lll1: sks_cursorMultiplyer) 3 <>Note: Items <> :Else Case <>If Var(lll1: sks_cursorMultiplyer) 4 <>Note: Flucht <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <>
Im deutschem Maker (V1.10c)
<>Bedingung:Varbl[lll1:sks_cursorMultiplyer]-0 <>Notiz: Angriff <> :Ansonsten <>Bedingung:Varbl[lll1:sks_cursorMultiplyer]-1 <>Notiz: Abwehr <> :Ansonsten <>Bedingung:Varbl[lll1:sks_cursorMultiplyer]-2 <>Notiz: Zaubern <> :Ansonsten <>Bedingung:Varbl[lll1:sks_cursorMultiplyer]-3 <>Notiz: Items <> :Ansonsten <>Bedingung:Varbl[lll1:sks_cursorMultiplyer]-4 <>Notiz: Flucht <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>

###### Schlusswort für dieses Kapitel

Wenn ihr nun ein Testspiel macht, so werden die Gegner in einer zufällig bestimmten Reihenfolge die Helden angreifen. Die Helden wiederum können sich noch nicht wehren, da ihr die Funktionen dafür noch nicht angelegt habt.

[Beispielhaftes Aussehen der Karte im Maker]

[Beispielhaftes Aussehen während des Testspiels]