EventsProfessional  Die Kampfsteuerungsautomatik
Vorüberlegungen I - Wer ist am Zug?

Ihr habt nun ein Ereignis, das zufällig die Zugreihenfolge bestimmt und acht Variablen mit Zufallswerten zwischen 1 und 8 belegt. Die Zahlen 1 - 8 entsprechen den Werten in nachfolgender Tabelle:

Nummer: Charakter:
1 Held 1
2 Held 2
3 Held 3
4 Held 4
5 Gegner 1
6 Gegner 2
7 Gegner 3
8 Gegner 4

Was wir nun brauchen ist für den Anfang ein Grund-Schema, das die acht Variablen durchläuft, ihre IDs ausliest (die alle zwischen 1 und 8 liegen) und entsprechend der Zahlen dann die Züge der Gegner vornimmt oder - falls einer der Helden am Zug ist - das Steuerungsmenü anzeigt. Zumindest das Ermöglichen der Züge soll hier vorab aufgebaut werden, was im Steuerung-Ereignis (das Ereignis, in dem ihr die Gegner-Attribute bestimmt und dafür gesorgt habt, dass die HP/MP-Rahmen, HP/MP-Anzeige und die Zugreihenfolge dargestellt bzw. eingeleitet werden). auf der zweiten Ereignis-Seite angelegt werden soll.

. Zunächst begebt ihr euch auf zweite Ereignis-Seite des Ereignisses, das ihr "Steuerung" genannt habt (wurde [hier] erstellt). Hier beginnt alles, indem ihr eine neue, freie Variable "Chara-Pointer" nennt und als Startwert die Nummer der Variable eingebt, die als erstes eine der acht Zufallszahlen zwischen 1 und 8 gespeichert hat (in unserem Beispiel wäre dies der Wert 115).
 
. Direkt danach folgt eine Endlos-Schleife, in der ihr wieder eine neue, freie Variable anlegt (nennt sie "Chara-Move-ID"), die den Wert der Variable aufnehmen soll, deren Nummer von der Variable "Chara-Pointer" vorgegeben werden soll.
 
. Direkt unter dieser Variable, innerhalb der Endlosschleife, folgt eine Bedingung, die abfragt, ob der Wert in der Variable "Chara-Move-ID" dem Wert "1" entspricht. Einen Nein-Fall brauchen wir hier.
 
. Im Ja-Fall soll zunächst nur eine Variablenfunktion dafür sorgen, dass der Wert in der Variable "Chara-Pointer" um 1 erhöht wird.
 
. Im Nein-Fall Wiederholt ihr die vorangegangenen beiden Punkte für die Werte 2, 3, 4, 5, 6, 7 und 8.
 
. Nach dem letztem End-Fall der Bedingungen, direkt über dem Ende der Endlosschleife, legt ihr eine weitere Bedingung an, die prüft, ob der Wert der Variable "Chara-Pointer" um 1 größer ist als die Nummer der Variable "Chara #8". Im Ja-Fall soll der Wert der Variable "Chara-Pointer" auf den Wert gesetzt werden, welcher der Nummer der Variable "Chara #1" entspricht. Ein Nein-Fall ist hier nicht nötig.
Darstellung der Stichpunkte in MML

Das, was neu hinzugekommen ist, ist fett und kursiv 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]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][2]
  [Ja-Fall]
  [Variable [Chara-Pointer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][3]
  [Ja-Fall]
  [Variable [[Chara-Pointer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][4]
  [Ja-Fall]
  [Variable [[Chara-Pointer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][5]
  [Ja-Fall]
  [Variable [[Chara-Pointer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][6]
  [Ja-Fall]
  [Variable [[Chara-Pointer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][7]
  [Ja-Fall]
  [Variable [Chara-Pointer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Variable [Chara-Move-ID]][gleich][8]
  [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
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
  <>
 :Else Case
  <>If Var(hhh2: Chara-Move-ID) 2
   <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
   <>
  :Else Case
   <>If Var(hhh2: Chara-Move-ID) 3
    <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
    <>
   :Else Case
    <>If Var(hhh2: Chara-Move-ID) 4
     <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
     <>
    :Else Case
     <>If Var(hhh2: Chara-Move-ID) 5
      <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
      <>
     :Else Case
      <>If Var(hhh2: Chara-Move-ID) 6
       <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
       <>
      :Else Case
       <>If Var(hhh2: Chara-Move-ID) 7
        <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
        <>
       :Else Case
        <>If Var(hhh2: Chara-Move-ID) 8
         <>Change Var: Var[hhh1: Chara-Pointer] (+)- 1
         <>
        :End Case
        <>
       :End Case
       <>
      :End Case
      <>
     :End Case
     <>
    :End Case
    <>
   :End Case
   <>
  :End Case
  <>
 :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
  <>
 :Ansonsten
  <>Bedingung:Varbl[hhh2:Chara-Move-ID]-2
   <>Var. ändern:[hhh1:Chara-Pointer]+, 1
   <>
  :Ansonsten
   <>Bedingung:Varbl[hhh2:Chara-Move-ID]-3
    <>Var. ändern:[hhh1:Chara-Pointer]+, 1
    <>
   :Ansonsten
    <>Bedingung:Varbl[hhh2:Chara-Move-ID]-4
     <>Var. ändern:[hhh1:Chara-Pointer]+, 1
     <>
    :Ansonsten
     <>Bedingung:Varbl[hhh2:Chara-Move-ID]-5
      <>Var. ändern:[hhh1:Chara-Pointer]+, 1
      <>
     :Ansonsten
      <>Bedingung:Varbl[hhh2:Chara-Move-ID]-6
       <>Var. ändern:[hhh1:Chara-Pointer]+, 1
       <>
      :Ansonsten
       <>Bedingung:Varbl[hhh2:Chara-Move-ID]-7
        <>Var. ändern:[hhh1:Chara-Pointer]+, 1
        <>
       :Ansonsten
        <>Bedingung:Varbl[hhh2:Chara-Move-ID]-8
         <>Var. ändern:[hhh1:Chara-Pointer]+, 1
         <>
        :End-Fall
        <>
       :End-Fall
       <>
      :End-Fall
      <>
     :End-Fall
     <>
    :End-Fall
    <>
   :End-Fall
   <>
  :End-Fall
  <>
 :End-Fall
 <>Bedingung:Varbl[hhh1:Chara-Pointer]-123
  <>Var. ändern:[hhh1:Chara-Pointer]Wert, 115
  <>
:End-Fall
 <>
:Schleifenende
<>
Schlusswort für dieses Kapitel

Diese Ereignis-Seite wird - wenn Seite 1 und die dort aufgerufenen Ereignisse abgearbeitet sind, das "Aufrufen" der Charaktere bewirken, die dran sind. Das Verhalten der Gegner sowie die Steuerung der Hauptcharaktere wird in den nachfolgenden Kapiteln behandelt werden. Diese Ereignis-Seite soll lediglich die maximal acht Kontrahenten zum Zug kommen lassen.