![]() ![]() |
Das AKS-Menü |
In unserem AKS soll am oberem Rand in der Mitte ein kleines Symbol zeigen, welche Aktion beim Drücken von ENTER ausgeführt wird. In unserem Beispiel soll die Darstellung der einzelnen Aktionen durch die Grafiken des Pakets [aks_menu.zip] erfolgen. Auch die Darstellung der Menüpunkte muss als Common Event/Häufig benötigtes Ereignis (Nennt es "MenupointsDisplay) angelegt werden, damit dies auf jeder Map der Spielwelt verwendbar ist.
![]() |
Den Anfang macht ein Label mit der Nummer 1, dem eine Bedingung folgt, die prüfen soll, ob der Wert einer
neuen, freien Variable (nennt sie "SelectedMenuPoint") dem Wert 0 entspricht (Standardwert jeder Variable).
Dies soll für normale Aktionen (Ansprechen) dienen. Wichtig ist, dass ihr
hier einen Nein-Fall braucht.
|
||||
![]() |
Zum Abschluss müssen wir noch die Grenzwerte der Menüdarstellung
abfangen. Da wir in unserem Beispiel vier Menüpunkte anzeigen lassen (0 - 3)
sind die Grenzwerte "-1" und "4". Im Nein-Fall der letzten Bedingung der Kette legt ihr eine neue an, die nun prüft, ob der Wert der Variable "SelectedMenuPoint" dem Wert "4" entspricht.
|
MenuDisplay-Ereignis | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Haltepunkt [1]] [Bedingung][Variable][SelectedMenuPoint][gleich][0]
|
Im englischem Maker |
<>Label 1# <>If Var (SelectedMenuPoint) 0 <>Show Picture:ID:18-menu_normal-(160,16) <> :Else Case <>If Var (SelectedMenuPoint) 1 <>Show Picture:ID:18-menu_fight-(160,16) <> :Else Case <>If Var (SelectedMenuPoint) 2 <>Show Picture:ID:18-menu_items-(160,16) <> :Else Case <>If Var (SelectedMenuPoint) 3 <>Show Picture:ID:18-menu_diary-(160,16) <> :Else Case <>If Var (SelectedMenuPoint) 4 <>Change Var:[SelectedMenuPoint] (Set)- 0 <>Goto Label 1# <> :Else Case <>If Var (SelectedMenuPoint) -1 <>Change Var:[SelectedMenuPoint] (Set)- 3 <>Goto Label 1# <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> |
Im deutschem Maker (V1.10c) |
<> -> Label: 1Nr <>Bedingung:Varbl[SelectedMenuPoint]-0 <>Bild anzeigen: 18, menu_normal, (160,16) <> :Ansonsten <>Bedingung:Varbl[SelectedMenuPoint]-1 <>Bild anzeigen: 18, menu_fight, (160,16) <> :Ansonsten <>Bedingung:Varbl[SelectedMenuPoint]-2 <>Bild anzeigen: 18, menu_items, (160,16) <> :Ansonsten <>Bedingung:Varbl[SelectedMenuPoint]-3 <>Bild anzeigen: 18, menu_diary, (160,16) <> :Ansonsten <>Bedingung:Varbl[SelectedMenuPoint]-4 <>Var. ändern:[SelectedMenuPoint]Wert, 3 <>Gehe zu Label: 1 Nr <> :Ansonsten <>Bedingung:Varbl[SelectedMenuPoint]- -1 <>Var. ändern:[SelectedMenuPoint]Wert, 3 <>Gehe zu Label: 1 Nr <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> |
Als Zwischenschritt soll nun noch der aktuell gewählte Menüpunkt angezeigt werden, wenn sich der Hauptchara auf einer Map befindet. Da ihr schon ein "Common Event/Häufig benötigtes Ereignis" namens "Startaufstellung" angelegt habt, habt ihr es hier besonders einfach. Ihr müsst lediglich in der letzten Zeile des Ereignisses dafür sorgen, dass das Ereignis "MenupointsDisplay" aufgerufen wird.
Den Anfang der ASK-Menü-Steuerung macht ein Ereignis, das beim Drücken der Taste ESC die AKS-Menüsteuerung erst ermöglicht. Legt also in der Datenbank ein neues Ereignis an, das ihr schlicht und ergreifend "ESC" nennt. Es soll als paralleler Prozess starten.
![]() |
Den Anfang dieses Ereignisses macht eine Tastenabfrage (Enter Password),
die in eine neue Variable - nennt sie "PressedButton" - den Wert der Taste "Cancel/ESC"
schreibt. Wichtig ist, dass es wartet, bis eine Taste gedrückt wurde. |
||
![]() |
Direkt danach soll eine Bedingung prüfen, ob der Wert in der Variable "PressedButton"
genau dem Wert "6" entspricht (ESC wurde gedrückt). Einen Nein-Fall brauchen
wir nicht.
|
Auf eine MML-Darstellung wie auch die Abbildung des Maker-Codes wird an dieser Stelle aufgrund der Einfachheit des Codes verzichtet.
Nun geht es darum, nach Drücken der Taste ESC die Steuerung durch das
AKS-Menü zu ermöglichen. Legt hierfür ein neues Common Event/Häufig benötigtes
Ereignis an, das ihr "MenupointSelection" nennt.
Durch Drücken der Cursortasten "Runter" und "Links"
soll innerhalb der Menüpunkte ein Punkt zurück, durch drücken der Cursortasten
"Hoch" und "Rechts" ein Punkt nach vorn gesprungen werden. Ein Druck auf "ESC"
soll zum Verlassen der Menüsteuerung dienen, während "ENTER" die Aktion
einleiten soll, die dem gewähltem Menüpunkt zugewiesen wurde.
Wichtig ist, dass dieses Common Event/Häufig benötigte Ereignis "automatisch
startet" und der Schalter "MenüLäuft" als zusätzliche Startvoraussetzung gewählt
werden muss (Feld "Appearance Conditions Switch/Auslösender Schalter")
![]() |
Zuerst brauchen wir eine neue, freie Variable, die vorübergehend den
Wert der Variable "SelectedMenuPoint" aufnimmt. Nennt sie "TempSelection".
Direkt danach soll eine Endlos-Schleife folgen. |
||||||||||||
![]() |
In dieser Endlos-Schleife macht eine Tastenabfrage den Anfang. Sie soll
Sämtliche (!) Tasten abfragen (Cursor, ENTER, ESC) und warten, bis eine
Taste gedrückt wurde. Das Ergebnis soll in der Variable "PressedButton"
abgelegt werden. |
||||||||||||
![]() |
Direkt nach der Tastenabfrage soll eine Bedingung nebst Nein-Fall
folgen, die prüft, ob der Wert der Variable "PressedButton" kleiner oder
gleich 2 ist.
|
||||||||||||
![]() |
Scrollt nun an das Ende des Codes. Hier soll nun der Variable "SelectedMenuPoint" der Wert der Variable geschrieben werden, die ihr ganz zu Anfang "TempSelection" genannt habt. Hiernach soll das Common Event/Häufig benötigte Ereignis namens "Startaufstellung" aufgerufen werden. |
MenupointSelection-Ereignis | ||||||||||||||||||||||||||||||||||||
[Variable [TempSelection]][<-- [Wert setzen][Variable [SelectedMenuPoint]]] Schleife Beginn
[Variable [SelectedMenuPoint]][<-- [Wert setzen][Variable [TempSelection]] [Ereignisaufruf][Datenbankereignis [Startaufstellung]] |
Im englischem Maker |
<>Change Var: Var[TempSelection] (Set)-
Var[SelectedMenuPoint] <>Loop <>Enter Password: Var[PressedButton] <>If Var[PressedButton] 2 (<=) <>Change Var: Var[SelectedMenuPoint] (-)- 1 <>Call Event: Startaufstellung <> :Else Case <>If Var[PressedButton] 4 (<=) <>Change Var: Var[SelectedMenuPoint] (+)- 1 <>Call Event: Startaufstellung <> :Else Case <>If Var[PressedButton] 5 <> :Else Case <>If Var[PressedButton] 6 <>Change Switch: Var[MenüLäuft] Switch OFF <>Break <> :End Case <> :End Case <> :End Case <> :End Case <> :End Loop <>Change Var: Var[SelectedMenuPoint] (Set)- Var[TempSelection] <>Call Event: Startaufstellung <> |
Im deutschem Maker (V1.10c) |
<>Var. ändern:[TempSelection]Wert,
Var.[SelectedMenuPoint] <>Schleife <>Tasten abfragen:[PressedButton] <>Bedingung:Varbl[PressedButton]- 2 < <>Var. ändern:[SelectedMenuPoint]-, 1 <>Ereignis aufrufen: Startaufstellung <> :Ansonsten <>Bedingung:Varbl[PressedButton]- 4 < <>Var. ändern:[SelectedMenuPoint]+, 1 <>Ereignis aufrufen: Startaufstellung <> :Ansonsten <>Bedingung:Varbl[PressedButton]- 5 <> :Ansonsten <>Bedingung:Varbl[PressedButton]- 6 <>Schalter ändern:[MenüLäuft]-[Aus] <>Schleife stoppen <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :Schleifenende <>Var. ändern:[SelectedMenuPoint]Wert, Var[TempSelection] <>Ereignis aufrufen: Startaufstellung <> |
Was nun noch fehlt, um die Menüsteuerung zu vervollständigen ist eine
Gabelung, die zwischen den einzelnen Menüpunkten unterscheidet und die
entsprechenden Ereignisse aufruft. Erstellt hierfür ein neues Common
Event/Häufig benötigtes Ereignis, dass die Startoption "Call/Aufruf" hat. Nennt
es "MenupointsFork".
Legt auch gleich vier weitere Common Events an, denen ihr die Namen "Menupoint:NORMAL",
"Menupoint:FIGHT", "Menupoint:ITEM" und "Menupoint:SAVE" gebt.
![]() |
Geht, wenn ihr das Common Event "MenupointsFork" angelegt habt, zuerst
in das Ereignis, das ihr "MenupointSelection" genannt habt und dort in die
Bedingung, die prüft, ob der Wert der Variable "PressedButton" genau dem
Wert 5 entspricht. Hier im Ja-Fall soll das Ereignis "MenupointsFork"
aufgerufen und der Schalter "MenüLäuft" auf "AUS" gestellt werden. Zuletzt
soll noch ein Schleifenausbruch erfolgen. |
||||||||
![]() |
Begebt euch nun in das Ereignis zurück, das ihr "MenupointsFork" genannt
habt. Hier beginnt ihr damit, dass ihr eine Bedingung mit Nein-Fall anlegt, die prüfen soll, ob der Wert der Variable "SelectedMenuPoint" genau dem Wert 0 entspricht. Wiederholt das im Nein-Fall mit einer weiteren Bedingung, die prüft, ob der Wert der Variable genau 1 ist. Führt dann das Schema weiter fort, bis ihr sämtliche Menüpunkte (in unserem Fall sind es insgesamt 4) auf diese Weise angelegt habt. Wichtig ist, das sie jeweils in den Nein-Fällen der vorangegangenen Bedingung stehen und die Ja-Fälle leer sind. |
||||||||
![]() |
Schreibt in die jeweiligen Ja-Fälle Kommentare hinein, um später noch zu
wissen, welcher Menüpunkt genau ausgelöst werden soll. In unserem Fall sieht
das folgendermaßen aus:
|
||||||||
![]() |
In den jeweiligen Ja-Fällen soll nun das betreffende Common Event
aufgerufen werden (im Punkt zuvor ist die Zuordnung genannt) |
||||||||
![]() |
Im zuvor angelegtem Ereignis (MenupointSelection) soll das Ereignis "MenupointsFork" im Ja-Fall der Bedingung aufgerufen werden, die prüft, ob der Wert der Variable "PressedButton" dem Wert 5 entspricht. |
Auf eine Darstellung in MML und auf die des Makercodes wird an dieser Stelle verzichtet. Dies folgt später bei den entsprechenden Menüfunktionen noch.