EventsProfessional  Einstieg und Verlassen des SKS
Vorüberlegungen I - Auf dem Weg in die Schlacht (SKS In/Out)

Hierfür braucht ihr zunächst eine leere Karte, die ihr komplett mit einem alles abdeckendem Chip füllt. Diese Karte nennt ihr "SKS In/Out". Ihr Zweck soll es später sein, die abnormen Zustände vorübergehend von der Heldentruppe zu nehmen und sie beim Verlassen des Kampfes wieder den betreffenden Helden zuzuweisen. Ebenso soll die Heldentruppe von dieser schwarzen Karte aus in die Schlacht ziehen. Mehr dazu jedoch später.
Habt ihr nun unter die schwarze Karte angelegt, geht es darum, wie die Heldentruppe nun auf diese schwarze Karte kommt...

. Das ist die Aufgabe jedes Gegners, eines auf der Karte befindlichen Ereignisses, dem ihr aus all euren CharSets ein beliebiges geben solltet. Gestartet werden soll es durch Drücken der Taste [ENTER]. Ebenso soll das Ereignis entweder stillstehen und etwas bewachen oder auf der Karte herumlaufen. Wie, das liegt in eurem eigenem Ermessen.
 
. Beginnen soll alles damit, dass der Gegner die Heldentruppe bedroht.
 
. Direkt danach ist eine Variable "SKS-ID" nötig, mit der dann von der schwarzen Karte aus die einzelnen SKS-Karten angesteuert werden sollen. In unserem Beispiel soll eine "1" in die Variable geschrieben werden, da es der erste SKS-Teil ist.
 
. Direkt danach folgt ein Ereignis, das die Heldenposition speichert (Memorize Place/Heldenposition speichern). Wählt ihr für die Karten-ID, X- und Y-Koordinaten jeweils eigene, noch nicht benutzte Variablen aus. Wahlweise könnt ihr auch die des eigenen Inventars oder Shops weiterverwenden.
 
. Nun soll die Heldentruppe auf die schwarze Karte "SKS - In/Out" teleportiert werden.
Darstellung der Stichpunkte in MML
 Kartengegner-Ereignis
[Nachricht]
    [Skelett-Dämon:]
    [Euch mache ich fertig!]
[Heldenposition speichern] [Kartenvariable [Karten-ID]]
    [X-Variable [Held-X]]
    [Y-Variable [Held-Y]]
[Variable [SKS-ID]] [<-- [Wert setzen] [1]]
[Teleportieren nach [SKS In/Out]]
Der erstellte Maker-Code
Im englischem Maker
<>Message: Skelett-Dämon:
:        : Euch mache ich fertig!
<>Memorize Place:Map[aaaa], X[bbbb], Y[cccc]
<>Change Var: Var[xxxx: SKS-ID] (Set)- 1
<>Teleport: 00aa: SKS - In/Out (___,___)
<>
Im deutschem Maker (V1.10c)
<>Nachr: Skelett-Dämon
:      : Euch mache ich fertig!
<>Position merken:[aaaa], [bbbb], [cccc]
<>Var. ändern: [xxxx: SKS-ID] Wert, 1
<>Teleport: 00aa: SKS - In/Out (___,___)
<>
Vorüberlegungen II - Von der "schwarzen Karte" in den Kampf

Nun sind eure Hauptcharaktere auf der schwarzen Karte "SKS In/Out" angekommen. Von hier sollen zwei Dinge passieren:
Wenn eure Helden von der Spielwelt aus auf die schwarze Karte gelangt sind, sollen sie auf der Hauptseite des zuvor durch die Variable "SKS-ID" bestimmten SKS gelangen.
Sind sie vom SKS aus auf der schwarzen Karte gelandet, so sollen sie in ihrer Ursprungsbesetzung auf die Position der Spielwelt zurückgebracht werden, von wo aus sie zu Beginn auf die schwarze Karte teleportiert wurden. Außerdem soll sich das teleportieren in und aus dem SKS mit jeder (!) Heldentruppenzusammensetzung machen lassen, egal welcher der Hauptcharaktere sich in der Heldentruppe befindet. Und da in der Datenbank 4999 Hauptcharaktere angelegt werden können (einer davon ist ja der Cursor), klingt dies nach viel Arbeit...
Wichtig ist, dass ihr zuvor einen neuen Hauptcharakter in der Datenbank anlegt, der "komplett transparent" dargestellt wird. Als CharSet dafür kann [alex_armor.png] dienen, die schon beim Kleiderwechseln zum Einsatz kam.

. Ein normales Ereignis, das automatisch startet, wird auf der schwarzen Karte "SKS In/Out" angelegt.
 
. Das erste Ereigniskommando, das ihr braucht, ist eine Bedingung. Diese soll abfragen, ob ein Schalter namens "Im SKS" auf AUS steht. Einen Nein-Fall brauchen wir hier unbedingt (!). Was den Schalter betrifft, wählt einen neuen, noch unbenutzten Schalter hierfür aus.
 
. Im Ja-Fall der Bedingung beginnt alles damit, dass es etwas kompliziert wird:
Legt eine noch unbenutzte, freie Variable an, der ihr den Namen "Held-Variable-Nr" gebt. Tragt hier die Zahl der direkt nachfolgenden Variable ein. (Benennt gleichzeitig die vier nachfolgenden Variablen "Held #1", "Held #2", "Held #3" und "Held #4", verwendet sie jedoch noch nicht)
Beispiel: Wenn die "Held-Variable-Nr" die Variablennummer 20 hat, so schreibt in die Variable die Zahl 21 hinein.
 
. Nun soll der Charakter "Cursor" der Heldentruppe hinzugefügt werden.
 
. Direkt danach muss der Schalter "Im SKS" auf AN gestellt werden
 
. Nun soll noch das Ziel, zu dem der Cursor teleportiert werden soll, bestimmt werden. Hierfür braucht ihr eine Bedingung, die abfragt, welcher Wert in der Variable "SKS-ID" steht. Da wir hier unseren ersten SKS erstellen und zuvor beim Kaufmann der Wert 1 in die Variable geschrieben wurde, soll die Bedingung nun abfragen, ob der Wert der Variable "SKS-ID" gleich 1 ist.
Einen Nein-Fall braucht ihr, wenn ihr noch mehr eigene SKS-Kartens anlegen werdet (und das wird definitiv der Fall sein).
 
. Im Ja-Fall soll die Heldentruppe (eigentlich nur der Cursor) auf die Karte des entsprechenden SKS teleportiert werden. In unserem Beispiel ist das die zuvor erstellte Karte "SKS - #1
 
. Im Nein-Fall der ganz zu Anfang angelegten Bedingung (Nun wird der SKS verlassen) fliegt zuerst einmal der Charakter "Cursor" aus der Heldengruppe raus.
 
. Direkt danach legt ihr eine Bedingung an, die abfragt, ob der Wert der Variable "Held #1" anders als 0 ist. Einen Nein-Fall braucht ihr hier nicht.
Hintergrund: Es kann keinen Helden mit der Nummer 0 geben. Hat die Variable "Held #1" also den Wert 0, ist keine Heldennummer gespeichert.
 
. Im Ja-Fall der Bedingung soll nun ein Hauptcharakter der Heldentruppe hinzugefügt werden. Welcher das genau ist, soll durch die Variable "Held #1" bestimmt werden.
 
. Direkt danach legt ihr eine neue Bedingung an. Diese soll abfragen, ob der Wert der Variable "Zustand Held 1" genau 2 ist. Einen Nein-Fall brauchen wir hier nicht (außer ihr habt mehr abnorme Zustände angelegt).
Hintergrund: 1 ist ja dafür, dass der entsprechende Held tot oder bewusstlos ist. Da wir zu Beginn nichts an diesem Zustand "Tot" geändert oder ihn aufgehoben haben, brauchen wir uns auch hier nicht wieder um das neue Erleiden des Zustands zu kümmern und können gleich mit Zustand 2, der Vergiftung, weitermachen.
 
. Im Ja-Fall der Bedingung soll der Held mit der Nummer aus der Variable "Held #1" den Zustand "Vergiftung" erleiden.
 
. Wiederholt direkt unter der Bedingung, welche die Heldennummer prüft (die Bedingung des dunkelblau hervorgehobenen Bereichs) das dunkelblau hervorgehobene für die Variablen "Held #2", "Held #3" und "Held #4".
 
. Habt ihr dies getan, so müssen (!!!) die Variablen "Held #1", "Held #2", "Held #3" und "Held #4" auf 0 gesetzt werden.
 
. Danach soll der Schalter "Im SKS" auf AUS gestellt werden.
 
. Die Heldentruppe (nun wieder in vollständiger Besetzung) soll nun an den durch das zuvor angelegte "Common Event/Häufig benötigte Ereignis" gemerkten Ort zurückteleportiert werden ("Goto Memorized Place/zu gespeicherter Position teleportieren"). Verwendet hierfür die selben Variablen, die bereits beim "Common Event/Häufig benötigtem Ereignis" die Heldenposition gespeichert haben (!!!)
 
. Führt zum Abschluss im Kapitel [Anzeige abnormer Zustände] die Punkte IIa und IIb aus. Habt ihr dies erledigt, verfahrt nach dem dort erwähntem Punkt IIc, um die dort genannten Common Events/Häufig benötigten Ereignisse "Conditions Remove" und "Conditions - Add" aufzurufen.
Darstellung der Stichpunkte in MML

Die Änderungen, die zum bereits vorhandenem Code des Ereignisses auf der Karte "Inventory In/Out" hinzu kamen, sind fett hervorgehoben.
* Tragt hier anstelle von xxx1 die wirkliche Nummer der Variable von Hand ein, die ihr "Held #1" genannt habt.
** Trag hier anstelle von yyy1 die wirkliche Nummer der Variable von Hand ein, die ihr "Zustand Held 1" genannt habt

 SKS-Teleport-Ereignis
[Ereignisseite 1][Automatisch]
[Bedingung][Schalter][Im SKS][AUS]
  [Ja-Fall]
  [Variable [Held-Variable-Nr]][<-- [Wert setzen][xxx1]]*
[Ereignis aufrufen [Conditions Remove]]
[Bedingung][Held][Alex][Im Team]
  [Ja-Fall]
  [Variable [Held-Variable-Nr] übergibt Nummer][<-- [Wert setzen][1]]
[Variable [Held-Variable-Nr]] [<-- [+] [1]]
[Hauptcharakter] [-] [Held: [Alex]]
[Bedingung][Held][Annie][Im Team]
  [Ja-Fall]
  [Variable [Held-Variable-Nr] übergibt Nummer][<-- [Wert setzen][2]]
[Variable [Held-Variable-Nr]] [<-- [+] [1]]
[Hauptcharakter] [-] [Held: [Annie]]
[Hauptcharakter] [+] [Held: [transparent]]
[Schalter [Im SKS]] [<-- AN]
[Bedingung][Variable [SKS-ID][gleich][1]]
  [Ja-Fall]
  [Teleportation nach][SKS - #1]
transparent transparent
  [Nein-Fall]
  /*
 * Hier würden für alle weiteren SKS Bedingungen folgen, die
 * beispielsweise die Werte 2, 3 und so weiter in der Variable
 * SKS-ID abfragen.
 */
transparent transparent
  [Nein-Fall]
  [Hauptcharakter] [-] [Held: [transparent]]
[Bedingung][Variable][Held #1][anders][0]
  [Ja-Fall]
  [Hauptcharakter][+][Heldvariable: [Held #1]]
[Bedingung][Variable][Held #2][anders][0]
  [Ja-Fall]
  [Hauptcharakter][+][Heldvariable: [Held #2]]
[Bedingung][Variable][Held #3][anders][0]
  [Ja-Fall]
  [Hauptcharakter][+][Heldvariable: [Held #3]]
[Bedingung][Variable][Held #4][anders][0]
  [Ja-Fall]
  [Hauptcharakter][+][Heldvariable: [Held #4]]
[Ereignis aufrufen [Conditions - Add]]
[Variable von [Held #1] bis [Held #4] [<-- [Wert setzen] [0]]
[Schalter [Im SKS]] [<-- AUS]
[Heldenposition teleport] [Kartenvariable [aaaa]]
    [X-Variable [bbbb]]
    [Y-Variable [cccc]]
Der erstellte Maker-Code
Im englischem Maker
<>If Switch [xxxy: Im SKS] is OFF
 <>Change Var: Var[aaab: Held-Variable-Nr] (Set)-xxx1
 <>Change Var: Var[bbba: Zustandsvar No] (Set)-yyy1
 <>Call Event: Conditions Remove
 <>If Alex is in the Party
  <>Change Var: [Var[aaab]] (Set)-1
  <>Change Var: Var[aaab: Held-Variable-Nr] (+)-1
  <>Change Hero's Party: (Alex) (Rem)
  <>
 :End Case
 <>If Annie is in the Party
  <>Change Var: [Var[aaab]] (Set)-1
  <>Change Var: Var[aaab: Held-Variable-Nr] (+)-2
  <>Change Hero's Party: (Annie) (Rem)
  <>
 :End Case
 <>Change Hero's Party: (Cursor) (Add)
 <>Change Switch: Var[xxxy: Im SKS] Switch ON
 <>If Var(xxxx: SKS-ID] 1
  <>Teleport: ooo1: SKS - #1 (___,___)
  <>
 :End Case
 <>

:Else Calse
 <>Change Hero's Party: (Cursor) (Rem)
 <>If Var(aaa1: Held #1) 0 (<>)
  <>Change Hero's Party: (V[aaa1]) (Add)
  <>
 <>If Var(aaa2: Held #2) 0 (<>)
  <>Change Hero's Party: (V[aaa2]) (Add)
  <>
 :End Case
 <>If Var(aaa1: Held #3) 0 (<>)
  <>Change Hero's Party: (V[aaa3]) (Add)
  <>
 :End Case
 <>If Var(aaa1: Held #4) 0 (<>)
  <>Change Hero's Party: (V[aaa4]) (Add)
  <>
 :End Case
 <>Call Event: Conditions - Add
 <>Change Var: [aaa1 to aaa4] (Set)-0
 <>Change Switch: Var[xxxy: Im SKS] Switch OFF
 <>Goto Memorized Place: V[aaaa] (V[bbbb], V[cccc])
 <>

:End Case
<>
Im deutschem Maker (V1.10c)
<>Bedingung:Schalter[xxxy: Im SKS]- AUS
 <>Wettereffekt aufruf: Kein
 <>Schalter ändern:[asdf: Geldzähler läuft]-[AN]
 <>Var. ändern:[aaab: Held-Variable-Nr]Wert, xxx1
 <>Var. ändern:[bbba: Zustandsvar No]Wert, yyy1
 <>Ereignis aufrufen: Conditions Remove
 <>Bedingung:Alex ist in Partie
  <>Var. ändern:[V[aaab]]Wert, 1
  <>Var. ändern:[aaab: Held-Variable-Nr]+, 1
  <>Heldenpartie ändern:Alex ->-
  <>
 :End-Fall
 <>Bedingung:Annie ist in Partie
  <>Var. ändern:[V[aaab]]Wert, 2
  <>Var. ändern:[aaab: Held-Variable-Nr]+, 1
  <>Heldenpartie ändern:Annie ->-
  <>
 :End-Fall
 <>Heldenpartie ändern:Cursor->+
 <>Schalter ändern:[xxxy: Im SKS]-[AN]
 <>Bedingung:Varbl[xxxx: SKS-ID-1
  <>Teleport: ooo1: SKS - #1 (___,___)
  <>
 :End-Fall
 <>

:Ansonsten
 <>Heldenpartie ändern:Cursor->-
 <>Bedingung:Varbl[aaa1: Held #1]-0andr
  <>Heldenpartie ändern:V[aaa1]->+
  <>
 :End-Fall
 <>Bedingung:Varbl[aaa1: Held #2]-0andr
  <>Heldenpartie ändern:V[aaa2]->+
  <>
 :End-Fall
 <>Bedingung:Varbl[aaa1: Held #3]-0andr
  <>Heldenpartie ändern:V[aaa3]->+
  <>
 :End-Fall
 <>Bedingung:Varbl[aaa1: Held #4]-0andr
  <>Heldenpartie ändern:V[aaa4]->+
  <>
 :End-Fall
 <>Ereignis aufrufen: Conditions - Add
 <>Var. ändern: [aaa1*aaa4] Wert, 0
 <>Schalter ändern: [xxxy: Im SKS]-[AUS]
 <>Teleport z. gem. Pos: V[aaaa] (V[bbbb], V[cccc])
 <>

:End-Fall
<>
Vorüberlegungen IV - Die Taste [ESC]...

...dient standardmäßig zum Aufruf des Inventars oder zum Abbruch gewisser Aktionen. Dies darf während des Kampfes nicht geschehen, weshalb wir die ESC-Taste sperren müssen. Wie das geht?

. Gehen wir in unserem Beispiel davon aus, dass eure Heldentruppe von euch ein eigenes Inventar spendiert bekommen hat. Da habt ihr ein "häufig benötigtes Ereignis" angelegt, das eure Heldentruppe bei Drücken der Taste [ESC] direkt auf die Karte "Inventory In/Out" befördert, egal wo sie in eurer Spielwelt gerade sind. Um dieses Ereignis geht es nun.
 
. Begebt euch nun an die Stelle des Ereignisses, an dem eine Bedingung abfragt, ob der Schalter "Im Shop?" auf "OFF/AUS" steht, genauer gesagt in den Ja-Fall dieser Bedingung. Hier legt ihr eine neue Bedingung an, die abfragt, ob der Schalter "Im SKS?" auf "OFF/AUS" steht. Ein Nein-Fall ist hier nicht nötig.
 
. In den Ja-Fall dieser Bedingung verschiebt ihr den Block der Bedingung, die den Schalter "Im Inventar" abfragt.
Darstellung der Stichpunkte in MML

Die Änderungen, die zum bereits vorhandenem Code des Ereignisses auf der Karte "Inventory In/Out" hinzu kamen, sind fett hervorgehoben.

 Inventar-Teleport-Ereignis [parallel]
[Variable [Tastendruck]] [<-- ESC][warten]
[Bedingung][Variable][Tastendruck][gleich][6]
  [Ja-Fall]
  [Bedingung][Schalter][Im SKS?][AUS]
  [Ja-Fall]
  [Bedingung][Schalter][Im Inventar][AUS]
  [Ja-Fall]
  [Bedingung][Schalter][Im Shop?][AUS]
  [Ja-Fall]
  [Heldenposition speichern] [Kartenvariable [Karten-ID]]
    [X-Variable [X-Position]]
    [Y-Variable [Y-Position]]
[Teleportieren nach] [Inventar In/Out]
transparent transparent
  [Nein-Fall]
  [Teleportieren nach] [SKS In/Out]
transparent transparent
  [Nein-Fall]
  [Teleportieren nach] [Inventar In/Out]
Der erstellte Maker-Code
Im englischem Maker
<>Enter Password: Var[xxxx: Tastendruck]
<>If Var (xxxx: Tastendruck) 6
 <>If Switch (asdf: Im SKS?) is OFF
  <>If Switch (yyyy: Im Inventar) is OFF
   <>If Switch(xxxx: Im Shop?) is OFF
    <>Memorize Place:Map[aaaa],X[bbbb],Y[cccc]
    <>Teleport: oooo:Inventar In/Out (000,000)
    <>
   :Else Case
    <>Teleport: ooo1:SKS In/Out (000,000)
    <>

  :Else Case
   <>Teleport: oooo:Inventar In/Out (000,000)
   <>

  :End Case
  <>
 :End Case
 <>
:End Case
<>
Im deutschem Maker (V1.10c)
<>Tasten abfragen:[xxxx: Tastendruck]
<>Bedingung: Varb[xxxx: Tastendruck]-6
 <>Bedingung: Schalter[asdf: Im SKS?]-AUS
  <>Bedingung: Schalter[yyyy: Im Inventar]-AUS
   <>Bedingung: Schalter[xxxx: Im Shop?}-AUS
    <>Position merken: [aaaa],[bbbb],[cccc]
    <>Teleport: oooo:Inventar In/Out (000,000)
    <>
   :Ansonsten
    <>Teleport: ooo1:SKS In/Out (000,000)
    <>

  :Ansonsten
   <>Teleport: oooo:Inventar In/Out (000,000)
   <>

  :End-Fall
  <>
 :End-Fall
 <>
:End-Fall
<>