EventsProfessional  Darstellung der Helden-HP-Rahmen
Vorüberlegungen I - Anzeige von HP und HP... aber wie? Und mit welchen Grafiken?

Betrachten wir uns noch einmal das [Beispielhafte Aussehen des SKS im Maker], nach seinem momentanem Stand. Wie ihr darauf sehen könnt, sind die Gegner und die Helden am Zentrum der Map angeordnet. Allein in Anbetracht dessen, dass zwar die HP- und MP-Anzeige der Hauptcharaktere immer dargestellt werden soll, wir aber so viel Platz wie möglich einsparen wollen, bleibt uns letztlich kaum etwas anderes übrig, als über die Anzeige in Form von Balken zu gehen. Genauer gesagt setzen wir uns hier das Ziel, in der untersten Chipzeile der SKS-Karte

. Die HP und MP aller im Team befindlichen Helden darzustellen
 
. Ein Kennzeichen zu zeigen, nach dem es leicht möglich ist, die einzelnen Anzeigen den entsprechenden Helden zuzuordnen
 
. Es soll, wenn nur zwei Helden da sind, auch nur die Anzeige für diese zwei Helden angezeigt werden.
 
. Die Anzeigen sollen in der untersten Chipzeile der Map nebeneinander (!) dargestellt werden.

Für die grafische Darstellung sollen die Grafiken aus dem Paket [sks_hpmp_rahmen.zip] für die Rahmen und [sks_hpmp_bars.zip] für die Anzeige von HP und MP in Balkenform dienen.

Info Die Rahmengrafiken wie auch die Garifken für die Darstellung der Lebens- und Zauberkraft sind 64 Pixel breit und 16 Pixel hoch. Der Mittelpunkt der Grafiken liegt also bei X = 32 und Y = 8 (Braucht ihr für später)
Vorüberlegungen IIa - Die Darstellung des Rahmens, Teil 1 - Die Aufrufe der Ereignis-Seiten

Hier soll es darum gehen, dass für jeden einzelnen Helden, der sich in der Heldentruppe befinden kann, auch der passende Heldenrahmen dargestellt wird. Wie ihr anhand der Grafiken im Paket [sks_hpmp_rahmen.zip] seht, wird auf die Darstellung der Heldennamen gänzlich verzichtet, da dies doch recht viel Platz beansprucht. Die bildhafte Darstellung der Köpfe der Helden soll hier dazu dienen, selbige zu unterscheiden.
Wichtig: Es soll hier vollkommen egal sein, welcher Held sich wann an welcher Stelle der Heldentruppe befindet. Hier soll ein Ereignis geschaffen werden, das mit jeder Heldengruppenzusammensetzung zurecht kommt. Nicht, dass ihr für jede einzelne Heldentruppenzusammensetzung gleich ein eigenes KS schreiben müsst, was im Laufe der Projektentwicklung immense Arbeit wäre.

. Zunächst braucht ihr ein Ereignis mit fünf Ereignis-Seiten und begebt euch auf die erste davon. Das ganze Ereignis soll durch "Push Key" gestartet werden.
 
. Auf der ersten Ereignis-Seite soll eine neue, freie Variable, die ihr "X-Pos-Multiplyer" nennt, auf 1 gesetzt werden.
 
. Direkt danach soll eine weitere, freie Variable, der ihr den Namen "HPWin - Y-Pos" gebt, auf den Wert 232 gesetzt werden.
 
. Als letzte soll wieder eine neue, freie Variable, die ihr "HPWin - X-Pos" nennt, auf 64 gesetzt werden.

Erklärung des ganzen:
Ziel ist es, dass am unterem Fensterrand die Rahmen aus dem Paket [sks_hpmp_rahmen.zip] positioniert werden und - wenn man so will - den unteren Bildrand bilden. Und da beim Positionieren der Bilder immer der mittlere Pixel positioniert wird. Da die Rahmengrafiken 64 Pixel breit und 16 Pixel hoch sind und der maximale Darstellungsbereich bei 320 x 240 Pixeln liegt (und der Pixel X = 0 und Y = 0 in der linken oberen Ecke des Bildbereichs liegt), die Hälfte der Bildhöhe von 240 abgezogen werden. Übrig bliebe 232 als fester Wert für "HPWin - Y-Pos".
Was den Wert für "HPWin - X-Pos" angeht, soll dieser so gewählt sein, dass die vier Heldenrahmen (wenn alle vier angezeigt werden) am unterem Bildrand zentriert wirken. Zählt man die vier Bildbreiten zusammen (also 4 x 64 Pixel) kommt ihr auf 256. Bleibt ein Rest von 64. Für eine Zentrierung soll dann also links und rechts ein Freiraum von jeweils 32 Pixeln sein. Da die Rahmengrafiken - wie bereits erwähnt - 64 Pixel breit sind und der mittlere Pixel verwendet wird, muss in die Variable "HPWin - X-Pos" als Startwert die 64 (Mittlerer Pixel der Rahmengrafik + Der Rand links von 32 Pixeln) geschrieben werden.
Immer dann, wenn weitere Helden sich in der Heldentruppe befinden, soll der "X-Pos-Multiplyer" erhöht werden, muss aber als Startwert bereits die 1 haben (schließlich umfasst die Heldentruppe mindestens eine Person.
 
. Dieser letzten Variable soll eine Bedingung folgen, die abfragt, ob der Wert der Variable "X-Pos-Multiplyer" genau dem Wert 1 entspricht. Einen Nein-Fall brauchen wir hier nicht.
 
. Im Ja-Fall der Bedingung soll die zweite Ereignis-Seite des aktuell bearbeiteten Ereignisses aufgerufen werden.
 
. Wiederholt die beiden vorangegangenen Punkte dahingehend, dass wenn der Wert der Variable "X-Pos-Multiplyer" den Wert 2 hat, die dritte Ereignis-Seite, bei einer 3 die vierte und bei einer 4 die fünfte Ereignis-Seite aufgerufen wird.
Darstellung der Stichpunkte in MML
 HP/MP-Rahmen-Ereignis
[Ereignisseite 1][Push Key]
[Variable [X-Pos-Multiplyer]][<-- [Wert setzen][1]
[Variable [HPWin - Y-Pos]][<-- [Wert setzen][232]
[Variable [HPWin - X-Pos]][<-- [Wert setzen][64]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][1]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 2]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][2]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 3]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][3]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 4]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][4]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 5]
[Ereignisseite 2][Push Key]
[Ereignisseite 3][Push Key]
[Ereignisseite 4][Push Key]
[Ereignisseite 5][Push Key]
Der erstellte Maker-Code auf Seite 1 des Ereignisses
Im englischem Maker
<>Change Var: Var[xxx1: X-Pos-Multiplyer] (Set)-1
<>Change Var: Var[xxx2: HPWin - Y-Pos] (Set)-232
<>Change Var: Var[xxx3: HPWin - X-Pos] (Set)-64
<>If Var (xxx1:X-Pos-Multiplyer) 1
 <>Call Event: HP/MP-Rahmen-EreignisPG [2]
 <>
:End Case
<>If Var (xxx1:X-Pos-Multiplyer) 2
 <>Call Event: HP/MP-Rahmen-EreignisPG [3]
 <>
:End Case
<>If Var (xxx1:X-Pos-Multiplyer) 3
 <>Call Event: HP/MP-Rahmen-EreignisPG [4]
 <>
:End Case
<>If Var (xxx1:X-Pos-Multiplyer) 4
 <>Call Event: HP/MP-Rahmen-EreignisPG [5]
 <>
:End Case
<>
Im deutschem Maker (V1.10c)
<>Var. ändern:[xxx1:X-Pos-Multiplyer]Wert, 1
<>Var. ändern:[xxx2:HPWin - Y-Pos]Wert, 232
<>Var. ändern:[xxx3:HPWin - x-Pos]Wert. 64
<>Bedingung:Varbl[xxx1:X-Pos-Multiplyer]-1
 <>Ereignis aufrufen: HP/MP-Rahmen[2]
 <>
:End-Fall
<>Bedingung:Varbl[xxx1:X-Pos-Multiplyer]-2
 <>Ereignis aufrufen: HP/MP-Rahmen[3]
 <>
:End-Fall
<>Bedingung:Varbl[xxx1:X-Pos-Multiplyer]-3
 <>Ereignis aufrufen: HP/MP-Rahmen[4]
 <>
:End-Fall
<>Bedingung:Varbl[xxx1:X-Pos-Multiplyer]-4
 <>Ereignis aufrufen: HP/MP-Rahmen[5]
 <>
:End-Fall
<>
Vorüberlegungen IIb - Die Darstellung des Rahmens, Teil 2 - Die Darstellung der Rahmen

Nun, da der Reihe nach alle vier Ereignis-Seiten (Seiten 2 bis 5) aufgerufen und die Rahmen dargestellt werden, sollte dies auch passieren. Hier kommt dann wirklich die Unterscheidung zum Einsatz, welcher Held sich in der Heldentruppe befindet. Erinnert ihr euch noch an die Variablen "Held #1" bis "Held #4", die ihr auf der Karte für den SKS-Einstieg verwendet habt? Die kommen hier wieder zum Einsatz.
Auch solltet ihr euch noch einmal die Picture-IDs vor Augen führen. ID 1 bis 4 sind für Picture-Gegner im Kampfsystem gedacht. ID 5 bis 8 sollen nun für die Rahmen von Held #1, Held #2, Held #3 und Held #4 dienen. Was dann noch fehlt ist eine Abfrage, welche Werte in den Variablen "Held #1" bis "Held #4" stehen, dann noch gewisse Spielereien mit den Variablen "HPWin - X-Pos" und "X-Pos-Multiplyer", das darstellen des Rahmens und fertig. Wie das konkret geht?

. Zuerst begebt ihr euch auf die zweite Seite des Ereignisses von vorher. Hier brauchen wir eine Bedingung, die abfragt, ob der Wert der Variable "Held #1" genau dem Wert 1 entspricht. Ein Nein-Fall ist hier erforderlich.
 
. Im Ja-Fall der Bedingung soll zuerst die Variable "HPWin - X-Pos" mit dem Wert der Variable "X-Pos-Multiplyer" malgenommen werden.
 
. Direkt danach soll die Rahmengrafik für den Helden dargestellt werden, der die Helden-ID "1" hat - in unserem Fall hat der Held "Alex" die ID 1. Die Position für diese Rahmengrafik sollen die Variablen "HPWin - X-Pos" für die X-Koodrinaten und "HPWin - Y-Pos" für die Y-Koordinaten bestimmt werden. Als Bild-ID soll die "5" gewählt werden.
 
. Direkt danach soll der Wert der Variable "HPWin - X-Pos" durch den Wert der Variable "X-Pos-Multiplyer" geteilt werden.
 
. Hiernach wiederum soll zum Wert der Variable "X-Pos-Multiplyer" die Zahl 1 dazugezählt werden.
 
. Im Nein-Fall der Bedingung wiederholt ihr alle fünf vorangegangene Punkte für den Fall, dass der Wert der Variable "Held #1" genau dem Wert "2" entspricht und so weiter, bis ihr die ID jedes Helden durch habt, der sich jemals in der Heldengruppe befinden kann. Beachtet, dass ihr die Bildrahmen immer mit der ID 5 darstellt.
 
. Wenn ihr damit fertig seid, wechselt ihr auf Seite 3 des Ereignisses und wiederholt alles für die Variable "Held #2", dann auf Seite 4 für die Variable "Held #3" und zuletzt auf Seite 5 für die Variable "Held #4". Wird die Variable "Held #2" abgefragt, soll der Rahmen mit der Bild-ID "6", bei Variable "Held #3" die Bild-ID "7", bei Variable "Held #4" mit der Bild-ID "8" dargestellt werden.
Darstellung der Stichpunkte in MML

Das, was neu hinzugekommen ist, ist fett und kursiv hervorgehoben

 HP/MP-Rahmen-Ereignis
[Ereignisseite 1][Push Key]
[Variable [X-Pos-Multiplyer]][<-- [Wert setzen][1]
[Variable [HPWin - Y-Pos]][<-- [Wert setzen][232]
[Variable [HPWin - X-Pos]][<-- [Wert setzen][64]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][1]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 2]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][2]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 3]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][3]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 4]
[Bedingung][Variable][X-Pos-Multiplyer][gleich][4]
  [Ja-Fall]
  [Ereignisaufruf][Kartenereignis [HP/MP-Rahmen-Ereignis]][Ereignisseite 5]
[Ereignisseite 2][Push Key]
[Bedingung][Variable][Held #1][=][1]
  [Ja-Fall]
  [Variable [HPWin - X-Pos]][<-- [malnehmen][X-Pos-Multiplyer]]
[Picture anzeigen][Bildnummer: 5][<Bildrahmen für Alex>]
    [Startkoordinate: X = HPWin - X-Pos; Y = HPWin - Y-Pos]
[Variable [HPWin - X-Pos]][<-- [teilen][X-Pos-Multiplyer]]
[Variable [X-Pos-Multiplyer]][<-- [+][1]]
transparent transparent
  [Nein-Fall]
  [Ereignisseite 2][Push Key]
[Bedingung][Variable][Held #1][=][2]
  [Ja-Fall]
  [Variable [HPWin - X-Pos]][<-- [malnehmen][X-Pos-Multiplyer]]
[Picture anzeigen][Bildnummer: 5][<Bildrahmen für Annie>]
    [Startkoordinate: X = HPWin - X-Pos; Y = HPWin - Y-Pos]
[Variable [HPWin - X-Pos]][<-- [teilen][X-Pos-Multiplyer]]
[Variable [X-Pos-Multiplyer]][<-- [+][1]]
[Ereignisseite 3][Push Key]
/*
 * Das Selbe wie auf Ereignis-Seite 2, nur dass zum Einen die Variable
 * "Held #2" abgefragt und die Bildrahmen-Grafik mit der Bildnummer
 * 6 angezeigt wird
 */
[Ereignisseite 4][Push Key]
/*
 * Das Selbe wie auf Ereignis-Seite 2, nur dass zum Einen die Variable
 * "Held #3" abgefragt und die Bildrahmen-Grafik mit der Bildnummer
 * 7 angezeigt wird
 */
[Ereignisseite 5][Push Key]
/*
 * Das Selbe wie auf Ereignis-Seite 2, nur dass zum Einen die Variable
 * "Held #4" abgefragt und die Bildrahmen-Grafik mit der Bildnummer
 * 8 angezeigt wird
 */
Der erstellte Maker-Code auf Seite 2 des Ereignisses
Im englischem Maker
<>If Var (aaa1: Held #1) 1
 <>Change Var: Var[xxx3: HPWin - X-Pos] (*)- Var[xxx1]
 <>Show Picture: ID:5-<Bildrahmen für Alex>-(V[xxx3],V[xxx2])
 <>Change Var: Var[xxx3: HPWin - X-Pos] (/)- Var[xxx1]
 <>Change Var: Var[xxx1: X-Pos-Multiplyer] (+)- 1
 <>

:Else Case
 <>If Var (aaa1: Held #1) 2
  <>Change Var: Var[xxx3: HPWin - X-Pos] (*)- Var[xxx1]
  <>Show Picture: ID:5-<Bildrahmen für Annie>-(V[xxx3],V[xxx2])
  <>Change Var: Var[xxx3: HPWin - X-Pos] (/)- Var[xxx1]
  <>Change Var: Var[xxx1: X-Pos-Multiplyer] (+)- 1
  <>
 :End Case
 <>

:End Case
<>
Im deutschem Maker (V1.10c)
<>Bedingung:Varbl[aaa1: Held #1]-1
 <>Var. ändern:[xxx3: HPWin - X-Pos]*, Var[xxx1]Wert
 <>Bild anzeigen: 5, <Bildrahmen für Alex>, (V[xxx3],V[xxx2])
 <>Var. ändern:[xxx3: HPWin - X-Pos] /, Var[xxx1]Wert
 <>Var. ändern:[xxx1: X-Pos-Multiplyer]+, 1
 <>

:Ansonsten
 <>Bedingung:Varbl[aaa1: Held #1]-2
  <>Var. ändern:[xxx3: HPWin - X-Pos]*, Var[xxx1]Wert
  <>Bild anzeigen: 5, <Bildrahmen für Annie>, (V[xxx3],V[xxx2])
  <>Var. ändern:[xxx3: HPWin - X-Pos] /, Var[xxx1]Wert
  <>Var. ändern:[xxx1: X-Pos-Multiplyer]+, 1
  <>
 :End-Fall
 <>

:End-Fall
<>

Der genannte Maker-Code setzt sich, wie in der MML-Darstellung erklärt, auf den Ereignis-Seiten 3, 4 und 5 so fort, wie er oben genannt wurde.

Schlusswort für dieses Kapitel

Zum Abschluss muss noch im Steuerungs-Ereignis über dem Ereigniskommando, das den Schalter "SKS-Start - done" auf "AN" stellt, ein weiteres eingefügt werden. Dies soll vom eben erstelltem Ereignis die erste Ereignis-Seite aufrufen - schließlich sollen die Rahmen auch angezeigt werden.
Ist dies erledigt, habt ihr dafür gesorgt, dass während eines Kampfes am unterem Bildschirmrand für jeden in der Heldengruppe befindlichen Charakter ein entsprechender Rahmen angezeigt wird.

[Beispielhaftes Aussehen der Karte im Maker]

[Beispielhaftes Aussehen während des Testspiels]