![]() ![]() |
Darstellung der Helden-HP-Rahmen |
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.
![]() |
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) |
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. |
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]
|
||||||||||||||||
[Ereignisseite 2][Push Key] | ||||||||||||||||
[Ereignisseite 3][Push Key] | ||||||||||||||||
[Ereignisseite 4][Push Key] | ||||||||||||||||
[Ereignisseite 5][Push Key] |
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 <> |
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. |
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]
|
||||||||||||||||
[Ereignisseite 2][Push Key] [Bedingung][Variable][Held #1][=][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 */ |
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.
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.