![]() ![]() |
Gegner und Grünzeug |
Hier im letztem Kapitel des AKS geht es für den Anfang darum, dass euer Hauptchara gewisse Stellen der Spielwelt mit seiner Waffe bearbeiten kann. Dies können Büsche, alte Fässer und Truhen oder andere leblose Gegenstände sein, die den Weg blockieren und/oder eventuell auch Beute in sich tragen. Die Grafiken dafür könnt ihr von dem ChipSet her verwenden, mit dem ihr die Spielwelt gestaltet, oder ihn erstellt euch selbst eigene CharSets aus einzelnen Büschen, Sträuchern, Fässern und Truhen anderer CharSets. Euch stehen vielerlei Möglichkeiten offen. Für die Darstellung eventuell gefundener Items werden wir in unserem Beispiel die Grafiken aus dem Paket [items.zip] verwenden und zur Veranschaulichung einen Busch in der Spielwelt anlegen.
![]() |
Begebt euch in die Spielwelt und dort in den Ereignismodus/Event Editing
Mode. Klickt dann an einer beliebigen Stelle doppelt, woraufhin sich der
Ereigniseditor öffnet. Hier legt ihr als erstes drei Ereignis-Seiten an. Seite 1 soll als Grafik die eines Busches darstellen, per Tastendruck starten und auf der selben Ebene wie der Held sich befinden. Seite 2 soll die Grafik eines kleinen Heiltranks (aus dem Paket [items.zip] die Grafik "Items7.png" und daraus in Blickrichtung rechts-mitte aus der zweiten CharSet-Zeile das dritte Bild von rechts.) darstellen (Wichtig ist, dass ihr als Animationstyp "Fixed Graphic/Fixierte Grafik" wählt, damit auch wirklich die gewählte CharSet-Einzelgrafik angezeigt wird), ebenfalls per Tastendruck starten, sich aber unter dem Held befinden. Auch soll es nur dann verfügbar sein, wenn ein neuer Schalter mit Namen "Busch #1 - Beute" aktiv ist. Seite 3 soll als Grafik den transparenten Chip des ChipSets darstellen, per Tastendruck starten und sich unter dem Held befinden. Diese Seite soll nur dann aktiv werden, wenn ein neuer Schalter namens "Busch #1" aktiv ist. Die dritte Seite dieses Ereignisses wird leer bleiben. |
||||||
![]() |
Begebt euch nun auf die erste Seite des Ereignisses. Beginnt hier mit
einer Bedingung samt Nein-Fall, die prüfen soll, ob der Schalter "Waffe 01
aktiv" auf AUS steht.
|
||||||
![]() |
Begebt euch nun auf die zweite Seite des Ereignisses. Hier gibt es die
Beute. Beginnt hier damit, indem ihr eine Nachricht anlegt, die über das informiert, was gefunden wird. In unserem Fall soll der Text "Ein kleiner Heiltrank..." ausreichen. |
||||||
![]() |
Direkt danach soll dem Inventar ein Item "Kleiner Heiltrank" hinzugefügt
werden. |
||||||
![]() |
Zum Abschluss wird noch der Schalter "Busch #1" auf AN gestellt. |
Busch-Ereignis | ||||||||||||||||||||
[Ereignisseite 1][Aufrufart [ENTER]] [Bedingung][Schalter][Waffe 01 aktiv][AUS]
|
||||||||||||||||||||
[Ereignisseite 2][Aufrufart [ENTER]][Schalter [Busch #1 - Beute]] [Nachricht] [Ein kleiner Heiltrank] [Item][+][Kleiner Heiltrank][Manuelle Anzahl [1]] [Schalter [Busch #1]][<-- [AN]] |
||||||||||||||||||||
[Ereignisseite 3][Aufrufart [ENTER]][Schalter [Busch #1]] |
Im englischem Maker |
//Code auf Seite 1 des Ereignisses <>If Switch (Waffe 01 aktiv) is OFF <>Message: Der Busch versperrt mir den Weg. : : Wenn ich nur eine Möglichkeit hätte, : : ihn irgendwie aus dem Weg zu räumen : : ... <> :Else Case <>Change Var: Var[Random] (Set)-Random(0 to 100) <>If Var (Random) 66 (>=) <>Change Switch: Var[Busch #1 - Beute] Switch ON <> :Else Case <>Change Switch: Var[Busch #1] Switch ON <> :End Case <> :End Case <> |
//Code auf Seite 2 des Ereignisses <>Message: Ein kleiner Heiltrank... <>Chng Item Count:(Kleiner Heiltrank) 1 (Add) <>Change Switch: Var[Busch #1] Switch ON <> |
//Code auf Seite 3 des Ereignisses <> |
Im deutschem Maker (V1.10c) |
//Code auf Seite 1 des Ereignisses <>Bedingung:Schalter[Waffe 01 aktiv]- Aus <>Nachr: Der Busch versperrt mir den Weg. : : Wenn ich nur eine Möglichkeit hätte, : : ihn irgendwie aus dem Weg zu räumen : : ... <> :Ansonsten <>Var. ändern:[Random]Wert, Zufll(0 * 100) <>Bedingung:Varbl[Random]- 66 >= <>Schalter ändern:[Busch #1 - Beute]-[An] <> :Ansonsten <>Schalter ändern:[Busch #1]-[An] <> :End-Fall <> :End-Fall <> |
//Code auf Seite 2 des Ereignisses <>Nachr: Ein kleiner Heiltrank... <>+/- Item: Kleiner Heiltrank -> 1 erhö. <>Schalter ändern: [Busch #1]-[An] <> |
//Code auf Seite 3 des Ereignisses <> |
Bevor es darum geht, die Gegner anzulegen, sollten wir uns überlegen, welchen
Teil des Codes - von dem wir nicht wissen, wie abartig lang er werden könnte -
wir in die Datenbank auslagern könnten. Dafür müssen wir uns erst überlegen, was
das Ereignis, das in der Spielwelt den Gegner darstellt, alles können muss:
Zum Einen soll sich der Gegner später in der Spielwelt umherbewegen. Dies kann
nicht ausgelagert werden.
Der Gegner soll angreifen. Die Art des Angriffs kann von Gegner zu Gegner
unterschiedlich sein, weshalb wir auch dies nicht auslagern werden.
Der Gegner wie auch der Held werden sich gegenseitig verwunden. Wie schwer eine
solche Verwundung sein kann, bestimmt die Schadensberechnung, die wir auslagern
sollten - allein schon in Anbetracht dessen, dass ihr zahllose Gegner anlegen
werdet.
Auch müssen die Attribute der Gegner vor (!) dem Kampf bereits feststehen. Dies
muss zwangsläufig ausgelagert werden, jedoch in ein separates Ereignis, das sich
auf der Map mit den Gegnern befindet.
Nun ist in Etwa klar, wie die weitere Vorgehensweise beim Erstellen der Gegner
ablaufen wird...
Für den Anfang sollen nun die Attribute des Gegners in Variablen geschrieben
werden, um sie später in der Schadensberechnung verwenden zu können. Dies
betrifft die Attribute "HP", "MP", "Max HP", "Max MP", "Angriffskraft", "Abwehr"
und "Agilität" des Gegners. Auch sind zwei Schalter nötig.
Erinnert ihr euch noch an das Ereignis auf der Spielfeld-Map, welches das
Datenbankereignis "Startaufstellung" aufruft? Hier werden die Gegnerattribute
abgelegt.
![]() |
Begebt euch auf die erste Seite des Ereignisses, welches das
Datenbankereignis "Startaufstellung" aufruft. |
![]() |
Direkt unter dem Aufruf des Ereignisses "Startaufstellung" legt ihr
sieben Variablen an. Gegner 1 - HP: Sie soll einen frei bestimmbaren Wert für die HP des Gegners in sich speichern (in unserem Beispiel 10) Gegner 1 - HP MAX: Sie soll den Maximalwert der HP des Gegners aufnehmen und sollte den gleichen Startwert wie die HP des betreffenden Gegners haben (in unserem Beispiel 10) Gegner 1 - MP: Auch hier legt ihr einen frei bestimmbaren Wert für die Magiekraft des Gegners fest (in unserem Beispiel 0) Gegner 1 - MP MAX: In dieser Variable soll die Maximalgrenze an MP des betreffenden Gegners abgelegt werden. Sie sollte nicht höher als der Startwerd der MP liegen (in unserem Beispiel 0) Gegner 1 - ATK: In dieser Variable soll ein Wert für die Stärke des Gegners abgelegt werden (In unserem Beispiel 5) Gegner 1 - Def: Diese Variable soll den Wert der Verteidigungsfähigkeit des Gegners aufnehmen (in unserem Beispiel 10) Gegner 1 - Agi: Diese Variable soll das Geschick des Gegners widerspiegeln, was später Einfluss auf die Schadensberechnung haben wird (in unserem Beispiel 50) |
![]() |
Nach der letzten angelegten Variable legt ihr noch zwei Schalter an,
denen ihr die Namen "Gegner 1 - Tot" und "Gegner 1 -Beute- Tot" gebt. Beide
sollen auf AUS gestellt werden. |
![]() |
Wiederholt die beiden vorangegangenen Punkte für jeden weiteren Gegner, der in der Spielwelt auf den Hauptchara lauern soll. Verwendet immer neue Variablen und Schalter (wichtig) |
Was neu hinzugekommen ist, ist fett hervorgehoben
AKS-Display-Ereignis |
[Ereignisseite 1][Automatischer start] [Ereignisaufruf][Datenbankereignis [Startaufstellung]] [Variable [Gegner 1 - HP]][<-- [Wert setzen][10]] [Variable [Gegner 1 - HP MAX]][<-- [Wert setzen][10]] [Variable [Gegner 1 - MP]][<-- [Wert setzen][0]] [Variable [Gegner 1 - MP MAX]][<-- [Wert setzen][0]] [Variable [Gegner 1 - ATK]][<-- [Wert setzen][5]] [Variable [Gegner 1 - Def]][<-- [Wert setzen][10]] [Variable [Gegner 1 - Agi]][<-- [Wert setzen][50]] [Schalter [Gegner 1 - Tot]][<-- [AUS]] [Schalter [Gegner 1 -Beute- Tot]][<-- [AUS]] [Schalter [AKS-Display DONE]][<-- [AN] |
Was neu hinzugekommen ist, ist fett hervorgehoben
Im englischem Maker |
<>Call Event: Startaufstellung <>Change Var: Var[Gegner 1 - HP] (Set)- 10 <>Change Var: Var[Gegner 1 - HP MAX] (Set)- 10 <>Change Var: Var[Gegner 1 - MP] (Set)- 0 <>Change Var: Var[Gegner 1 - MP MAX] (Set)- 0 <>Change Var: Var[Gegner 1 - ATK] (Set)- 5 <>Change Var: Var[Gegner 1 - Def] (Set)- 10 <>Change Var: Var[Gegner 1 - Agi] (Set)- 50 <>Change Switch: Var[Gegner 1 - Tot] Switch OFF <>Change Switch: Var[Gegner 1 -Beute- Tot] Switch OFF <>Change Switch: Var [AKS-Display DONE] Switch ON <> |
Im deutschem Maker (V1.10c) |
<>Ereignis aufrufen: Startaufstellung <>Var. ändern:[Gegner 1 - HP]Wert, 10 <>Var. ändern:[Gegner 1 - HP MAX]]Wert, 10 <>Var. ändern:[Gegner 1 - MP]Wert, 0 <>Var. ändern:[Gegner 1 - MP MAX]Wert, 0 <>Var. ändern:[Gegner 1 - ATK]Wert, 5 <>Var. ändern:[Gegner 1 - Def]Wert, 10 <>Var. ändern:[Gegner 1 - Agi]Wert, 50 <>Schalter ändern:[Gegner 1 - Tot]-[Aus] <>Schalter ändern:[Gegner 1 -Beute- Tot]-[Aus] <>Schalter ändern:[AKS-Display DONE]-[An] <> |
Nun geht es darum, eine globale Schadensberechnung in der Datenbank eures Projekts abzulegen, die sowohl für Angriffe des Hauptcharas als auch für Angriffe des Gegners verwendbar sein soll. Es mag kompliziert klingen, ist es aber nicht.
![]() |
Euch muss an dieser Stelle klar sein, dass das Ereignis, dass wir hier
erstellen werden NICHT für Abzüge auf HP, MP oder sonst etwas sorgt.
Es berechnet lediglich aus den Werten der verwendeten Variablen den
anzurichtenden Schaden. Was mit diesem Wert weiter geschieht, wird später
beim Erstellen der Gegner zum Einsatz kommen. |
![]() |
Begebt euch in die Datenbank und erstellt ein neues Common Event/Häufig
benötigtes Ereignis, dem ihr den Namen "Schadensberechnung" gebt. Es soll
durch Call/Aufruf gestartet werden. |
||||||||||||||||
![]() |
Ganz zu Anfang setzt ihr zwei neue, freie Variablen, die ihr "Calc-Ergebnis"
und "Calc-Abzug" nennt, auf 0. Eine dritte Variable, die ihr "Calc-Random" nennt, soll eine Zufallszahl (Random) zwischen 0 und 100 in sich aufnehmen. |
||||||||||||||||
![]() |
Nach der dritten Variable soll eine Bedingung prüfen, ob der Wert der
Variable "Calc-Random" kleiner oder gleich dem Wert einer neuen, freien
Variable ist, die ihr "Calc-AttackerAGI" nennt. Die Bedingung braucht keinen
Nein-Fall.
|
||||||||||||||||
![]() |
Scrollt nun an das Ende des Codes. Hier soll von der Variable "Calc-Ergebnis" der Wert der Variable "Calc-Abzug" abgezogen werden. |
Schadensberechnung-Ereignis | ||||||||||||||||||||
[Variable [Calc-Ergebnis]][<-- [Wert setzen][0]] [Variable [Calc-Abzug]][<-- [Wert setzen][0]] [Variable [Calc-Random]][<-- [Wert setzen][Zufallszahl zwischen [0] und [100]]] [Bedingung][Variable][Calc-Random][kleiner oder gleich][Calc-AttackerAGI]
|
Im englischem Maker |
<>Change Var: Var[Calc-Ergebnis] (Set)- 0 <>Change Var: Var(Calc-Abzug] (Set)- 0 <>Change Var: Var[Calc-Random] (Set)-Random(0 to 100) <>If Var (Calc-Random) Calc-AttackerAGI (<=) <>Loop <>If Var(Calc-AttackerATK) 0 <>Break <> :End Case <>Change Var: Var[Calc-Ergebnis] (+)-Ramdon(0 to 1) <>Change Var: Var[Calc-AttackerATK] (-)- 1 <> :End Loop <>Change Var: Var[Calc-Random] (Set)-Random(0 to 100) <>If Var(Calc-Random) Calc-EnemyAGI (<=) <>Loop <>If Var(Calc-EnemyDEF) 0 <>Break <> :End Case <>Change Var: Var[Calc-Abzug] (+)-Random(0 to 1) <>Change Var: Var[Calc-EnemyDEF] (-)- 1 <> :End Loop <> :End Case <> :End Case <>Change Var: Var[Calc-Ergebnis] (-)- Calc-Abzug <> |
Im deutschem Maker (V1.10c) |
<>Var. ändern:[Calc-Ergebnis]Wert, 0 <>Var. ändern:[Calc-Abzug]Wert, 0 <>Var. ändern:[Calc-Random]Wert, Zufll[0 * 100] <>Bedingung:Varbl[Calc-Random]- Calc-AttackerAGI < <>Schleife <>Bedingung:Varbl[Calc-AttackerATK]-0 <>Schleife stoppen <> :End-Fall <>Var. ändern:[Calc-Ergebnis]+, Zufll [0 * 1] <>Var. ändern:[Calc-AttackerATK]-, 1 <> :Schleifenende <>Var. ändern:[Calc-Random]Wert, Zufll[0 * 100] <>Bedingung:Varbl[Calc-Random]- Calc-EnemyAGI < <>Schleife <>Bedingung:Varbl[Calc-EnemyDEF]- 0 <>Schleife stoppen <> :End-Fall <>Var. ändern:[Calc-Abzug]+, Zufll[0 * 1] <>Var. ändern:[Calc-EnemyDEF]-, 1 <> :Schleifenende <> :End-Fall <> :End-Fall <>Var. ändern:[Calc-Ergebnis]-, [Calc-Abzug]Wert <> |
Nun geht es langsam dem Ende entgegen. Ihr sorgt nun für Leben in der
Spielwelt, indem ihr eurem Hauptchara einige Gegner in den Weg stellt. In diesem
Unterkapitel soll es für den Anfang lediglich darum gehen, dass der Gegner
angreift und Schaden anrichtet... wenn er denn trifft.
Erst soll dafür der Schadensberechnung das Geschick und die Angriffskraft des
Gegners wie auch das Geschick und die Abwehrfähigkeit des Hauptcharas in die
entsprechenden Variablen der Schadensberechnung geschrieben werden; dann startet
die Schadensberechnung selbst. Wenn das Ergebnis 0 ist, verfehlt der Gegner. Ist
es anders als 0, so soll der Gegner treffen, ein entsprechender Sound abgespielt
und Schaden angerichtet werden. Wichtig ist hier, dass die HP-Anzeige des
Hauptcharas aktualisiert wird, was am Ende durch Aufrufen des Ereignisses
"Startaufstellung" geschehen wird.
In unserem Beispiel erstellen wir den "Gegner 1".
![]() |
Erstellt auf der Map, auf der gekämpft werden soll, ein neues Ereignis.
Bestimmt als Bild das eines Gegners, der euch am ehestem zusagt (in unserem
Beispiel ein Slime). Starten soll das Ereignis "bei Berührung (Ereignis,
Held)". Es soll sich auf der selben Ebene wie der Held befinden und sich auf
selbigen zu bewegen. |
||||||||||||||
![]() |
Los geht es auf der ersten Seite des Ereignisses: Hier legt ihr eine Bedingung ohne Nein-Fall an, die prüft, ob der Wert der Variable "PressedButton" anders als 5 ist. Grund hierfür: Dies hilft bei der Unterscheidung, ob nun der Gegner den Helden berührt oder ob der Held mit dem Schwert nach dem Gegner schlägt. Der Held muss dabei den Gegner ansehen und ihn auch zwangsläufig "ansprechen". Würden wir diese Bedingung nicht anlegen, würden sowohl der Gegner, als auch der Held IMMER gleichzeitig angreifen, was nicht möglich sein soll. Alleine bei starken Gegnern kann dies zu einem schwerem Problem werden.
|
Gegner 1-Ereignis | ||||||||||||||
[Ereignisseite 1][Mehrfachberührung] [Bedingung][Variable][Pressed Button][anders als][5]
|
Im englischem Maker |
<>If Var (PressedButton) 5 (<>) <>Change Var: Var[Calc-AttackerAGI] (Set)- Var[Gegner 1 - Agi] <>Change Var: Var[Calc-AttackerATK] (Set)- Var[Gegner 1 - ATK] <>Change Var: Var[Calc-EnemyAGI] (Set)- Alex's Agilit <>Change Var: Var[Calc-EnemyDEF] (Set)- Alex's Defence <>Call Event: Schadensberechnung <>If Var (Calc-Ergebnis) 0 (<>) <>Change HP: Alex's HP V[Calc-Ergebnis] (Rem) <>Play SE: Damage1 <>Flash Event: Hero-0.5 sec <>Call Event: Startaufstellung <>Wait: 0.5sec <> :Else Case <>Play SE: Evasion1 <> :End Case <> :End Case <> |
Im deutschem Maker (V1.10c) |
<>Bedingung:Varbl[PressedButton]-5andr <>Var. ändern:[Calc-AttackerAGI]Wert, Var[Gegner 1 - Agi]Wert <>Var. ändern:[Calc-AttackerATK]Wert, Var[Gegner 1 - ATK]Wert <>Var. ändern:[Calc-EnemyAGI]Wert, Alex Bewegl. <>Var. ändern:[Calc-EnemyDEF]Wert, Alex Vertd. <>Ereignis aufrufen: Schadensberechnung <>Bedingung:Varbl[Calc-Ergebnis]-0andr <>LP ändern:AlexLP um V[Calc-Ergebnis] verm. <>Soundeffekt: Damage1 <>Char. blinken ...: Held, 0.5S. <>Ereignis aufrufen: Startaufstellung <>Warten: 0.5S. <> :Ansonsten <>Soundeffekt: Evasion1 <> :End-Fall <> :End-Fall <> |
Wenn ihr nun einen Testlauf macht, kann der Gegner bereits euren Helden
angreifen. Schön und gut. Nur sollte sich der Held auch wehren können.
Nur haben wir es hier ein wenig komplizierter. Der Gegner muss selbst prüfen, ob
er angegriffen wird und darf erst dann den erlittenen Schaden berechnen lassen.
Es muss also jeweils die X- und Y-Koordinate des Gegners und die des Helden
abgefragt und miteinander verglichen werden. Dann noch abgleiche, ob der
Hauptchara auch jedes Mal ein Feld neben, über oder unter dem Gegner steht und
ihn anschaut und schon wird der Schaden berechnet.
Hier wird lediglich der Angriff des Helden angelegt. Ob der Gegner hinterher
noch lebt oder nicht könnt im Punkt danach.
![]() |
Begebt euch in das Ereignis des Gegners, den ihr gerade anlegt (in
unserem Beispiel heißt das Ereignis "Gegner 1"). Legt hier rechts von der bestehenden Ereignisseite zwei weitere an. Auf beiden Seiten soll die Grafik des Gegners gezeigt und die Seite via AutoStart aktiv werden. Auch soll sich der Gegner in beiden Fällen auf den Hauptchara zu bewegen. Der Unterschied kommt nun: Die Ereignisseite 2 soll aktiv werden, wenn der Schalter "Schadensberechnung" auf AN steht, während Seite 3 aktiv werden soll, wenn ein neuer, freier Schalter - den nennt ihr "ProofOfLife" - auf AN steht. |
||||||||||||||||||
![]() |
Begebt euch auf die zweite Ereignisseite (sie wird aktiv, wenn der
Schalter "Schadensberechnung" auf AN steht). Zuerst wird hier mit Variablen
gearbeitet. Eine neue, freie Variable, die ihr "X-Unterschied" nennt, soll die X-Koordinate des Ereignisses "Gegner 1" aufnehmen. Eine weitere, neue Variable, die ihr "Y-Unterschied" nennt, soll die Y-Koordinate des Ereignisses aufnehmen. Nun soll von der Variable "X-Unterschied" die X-Koordinate des Ereignisses "Held" abgezogen werden. Mit der Variable "Y-Unterschied" macht ihr das Selbe, nur mit der Y-Koordinate des Ereignisses "Held": |
||||||||||||||||||
![]() |
Als nächstes werden die Variablen für die Schadensberechnung
vorbereitet: Calc-AttackerAGI <-- Hier soll die Geschicklichkeit des Hauptcharas (Alex) abgelegt werden Calc-AttackerATK <-- Hier landet der Wert der Angriffskraft des Hauptcharas (Alex) Calc-EnemyAGI <-- Hier landet der Wert der Variable "Gegner 1 - Agi" Calc-EnemyDEF <-- Zuletzt landet hier der Wert der Variable "Gegner 1 - DEF" |
||||||||||||||||||
![]() |
Nun soll eine Bedingung mit Nein-Fall prüfen, ob der Wert der Variable
"X-Unterschied" genau dem Wert "0" entspricht.
|
||||||||||||||||||
![]() |
Scrollt nun an das Ende des angelegten Maker-Codes und legt in der
untersten leeren Zeile eine neue Bedingung ohne Nein-Fall an, die prüft, ob
der "Schaden errechnen" auf AN steht.
|
||||||||||||||||||
![]() |
Scrollt erneut an das Ende des Makercodes und legt in der untersten, leeren Zeile eine Funktion an, die den Schalter "Schadensberechnung" auf AUS und den Schalter "ProofOfLife" auf AN stellt. |
Gegner 1-Ereignis | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Variable [X-Unterschied]][<-- [Wert setzen][Ereignis [Gegner
1][X-Koordinate]]] [Variable [Y-Unterschied]][<-- [Wert setzen][Ereignis [Gegner 1][Y-Koordinate]]] [Variable [X-Unterschied]][<-- [-][Ereignis [Held][X-Koordinate]]] [Variable [Y-Unterschied]][<-- [-][Ereignis [Held][Y-Koordinate]]] [Variable [Calc-AttackerAGI]][<-- [Wert setzen][Held [Alex][Agility]]] [Variable [Calc-AttackerATK]][<-- [Wert setzen][Held [Alex][Attack]]] [Variable [Calc-EnemyAGI]][<-- [Wert setzen][Gegner 1 - Agi]] [Variable [Calc-EnemyDEF]][<-- [Wert setzen][Gegner 1 - DEF]] [Bedingung][Variable][X-Unterschied][gleich][0]
[Schalter [ProofOfLife]][<-- [AN]] |
Im englischem Maker |
<>Change Var: Var[X-Unterschied] (Set)-Gegner
1's X Pos. <>Change Var: Var[Y-Unterschied] (Set)-Gegner 1's Y Pos. <>Change Var: Var[X-Unterschied] (-)- Hero's X Pos. <>Change Var: Var[Y-Unterschied] (-)- Hero's Y Pos. <>Change Var: Var[Calc-AttackerAGI] (Set)- Alex's Agilit <>Change Var: Var[Calc-AttackerATK] (Set)- Alex's Attack <>Change Var: Var[Calc-EnemyAGI] (Set)- Var[Gegner 1 - Agi] <>Change Var: Var[Calc-EnemyDEF] (Set)- Var[Gegner 1 - DEF] <>If Var (X-Unterschied) 0 <>If Var (Y-Unterschied) 1 <>If Hero ==> Down (Direction) <>Change Switch: Var [Schaden errechnen] Switch ON <> :End Case <> :Else Case <>If Var (Y-Unterschied) -1 <>If Hero ==> Up (Direction) <>Change Switch: Var[Schaden errechnen] Switch ON <> :End Case <> :End Case <> :End Case <> :Else Case <>If Var (Y-Unterschied) 0 <>If Var (X-Unterschied) 1 <>If Var (Hero ==> Rigt (Direction) <>Change Switch: Var[Schaden errechnen] Switch ON <> :End Case <> :Else Case <>If Var (X-Unterschied) -1 <>If Var (Hero ==> Left (Direction) <>Change Switch: Var[Schaden errechnen] Switch ON <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <>If Switch (Schaden errechnen) is ON <>Change Switch: Var[Schaden errechnen] Switch OFF <>Call Event: Schadensberechnung <>If Var (Calc-Ergebnis) 0 (<>) <>Change Var: Var[Gegner 1 - HP] (-)- Var[Calc-Ergebnis] <>Play SE: Damage 1 <>Flash Event: Gegner 1-0.5sec (W) <> :Else Case <>Play SE: Evasion1 <> :End Case <> :End Case <>Change Switch: Var[Schadensberechnung] Switch OFF <>Change Switch: Var[ProofOfLife] Switch ON <> |
Im deutschem Maker (V1.10c) |
<>Var. ändern: [X-Unterschied]Wert,
Gegner 1 X-Pos <>Var. ändern: [Y-Unterschied]Wert, Gegner 1 Y-Pos <>Var. ändern: [X-Unterschied]-, Held X-Pos <>Var. ändern: [Y-Unterschied]-, Held Y-Pos <>Var. ändern: [Calc-AttackerAGI]Wert, Alex Bewegl. <>Var. ändern: [Calc-AttackerATK]Wert, Alex Angriff <>Var. ändern: [Calc-EnemyAGI]Wert, Gegner 1 - Agi <>Var. ändern: [Calc-EnemyDEF]Wert, Gegner 1 - DEF <>Bedingung:Varbl[X-Unterschied]-0 <>Bedingung:Varbl[Y-Unterschied]- 1 <>Bedingung:Held - Un[Ges.Richt.] <>Schalter ändern:[Schaden errechnen]-[An] <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[Y-Unterschied]- -1 <>Bedingung:Held - Ob[Ges.Richt.] <>Schalter ändern:[Schaden errechnen]-[An] <> :End-Fall <> :End-Fall <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[Y-Unterschied]- 0 <>Bedingung:Varbl[X-Unterschied]- 1 <>Bedingung:Held - Rc(Ges.Richt.) <>Schalter ändern:[Schaden errechnen]-[An] <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[X-Unterschied]- -1 <>Bedingung:Held - Ln(Ges.Richt.) <>Schalter ändern:[Schaden errechnen]-[An] <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <>Bedingung:SChalter[Schaden errechnen]- An <>Schalter ändern:[Schaden errechnen]-[Aus] <>Ereignis aufrufen: Schadensberechnung <>Bedingung:Varbl[Calc-Ergebnis]- 0andr <>Var. ändern:[Gegner 1 - HP]-, Var[Calc-Ergebnis]Wert <>Soundeffekt: Damage1 <>Char. blinken ...: Gegner 1, 0.5S.(W) <> :Ansonsten <>Soundeffekt: Evasion1 <> :End-Fall <> :End-Fall <>Schalter ändern:[Schadensberechnung]-[Aus] <>Schalter ändern:[ProofOfLife]-[An] <> |
Das kann nur der Gegner selbst sagen, da es von Gegner zu Gegner eine unterschiedliche Variable gibt, die Auskunft darüber gibt, ob der Gegner noch lebt oder tot ist. Seine HP-Variable. Ist deren Wert kleiner oder gleich 0, so ist der Gegner tot. Via Zufallsprinzip soll dann bestimmt werden, ob es Beute gibt (Gegner 1 -Beute- Tot wird angeschaltet) oder nicht (Gegner 1 - Tot wird angeschaltet).
![]() |
Legt nach der dritten Ereignisseite zwei weitere an. Sie beide sollen
still stehen, per Tastendruck starten und sich von ihrer Position her unter
dem Held befinden. Ereignisseite 4 soll nur dann startbar sein, wenn der
Schalter "Gegner 1 -Beute- Tot", Seite 5 wenn der Schalter "Gegner 1 - Tot"
aktiv ist. |
||||||||||
![]() |
Begebt euch nun auf die dritte Ereignisseite des Ereignisses "Gegner 1"
(Sie wird aktiv, wenn der Schalter "ProofOfLife" aktiviert wird). Beginnt hier mit einer Bedingung, die prüft, ob der Wert der Variable "Gegner 1 - HP" kleiner oder gleich 0 ist. Einen Nein-Fall braucht ihr hier nicht.
|
||||||||||
![]() |
Scrollt nun in die letzte Zeile des Maker-Codes. Dort soll der Schalter "ProofOfLife" auf AUS gestellt werden. |
Gegner 1-Ereignis | ||||||||||||||
[Bedingung][Variable][Gegner 1 - HP][kleiner oder gleich][0]
|
Im englischem Maker |
<>If Var (Gegner 1 - HP) 0 (<=) <>Change Var: Var[Random] (Set)-Random(0 to 100) <>If Var (Random) 50 (<=) <>Change Switch: Var[Gegner 1 -Beute- Tot] Switch ON <> :Else Case <>Change Switch: Var[Gegner 1 - Tot] Switch ON <> :End Case <>Show Batte Animation: EnemyDeath-Gegner 1 (W) <> :End Case <>Change Switch: Var[ProofOfLife] Switch OFF <> |
Im deutschem Maker (V1.10c) |
<>Bedingung:Varbl[Gegner 1 - HP]- 0< <>Var. ändern:[Random]Wert, Zufll[0 * 100] <>Bedingung:Varbl[Random]-50< <>Schalter ändern:[Gegner 1 -Beute- Tot]-[An] <> :Ansonsten <>Schalter ändern:[Gegner 1 - Tot]-[An] <> :End-Fall <>Kampfanimation: EnemyDeath, Gegner 1 (W) <> :End-Fall <>Schalter ändern:[ProofOfLife]-[Aus] <> |
Falls der Gegner etwas bei sich hatte, was der Haupt-Chara auch mitnehmen könnte, so soll dies auf dem Boden der Spielwelt herumliegen, wenn der Gegner geschlagen würde. In unserem Beispiel deutet das der Schalter "Gegner 1 -Beute- Tot" an. Auch die dafür vorgesehene Ereignisseite ist schon da. Sie muss nur noch mit dem "Beute-Code" gefüllt werden:
![]() |
Begebt euch vierte Seite des Ereignisses "Gegner 1". Die Grafik, mit der das Ereignis dann, wenn es Beute gibt, dargestellt werden soll, könnt ihr an dieser Stelle ändern. Die Position muss aber so gewählt werden, dass sich das Ereignis unter dem Held befindet. In unserem Beispiel soll die Grafik eines kleinen Heiltranks (aus dem Paket [items.zip] die Grafik "Items7.png" und daraus in Blickrichtung rechts-mitte aus der zweiten CharSet-Zeile das dritte Bild von rechts.) darstellen (Wichtig ist, dass ihr als Animationstyp "Fixed Graphic/Fixierte Grafik" wählt, damit auch wirklich die gewählte CharSet-Einzelgrafik angezeigt wird) |
![]() |
Beginnt hier damit, indem ihr eine Nachricht anlegt, die über das
informiert, was gefunden wird. In unserem Fall soll der Text "Ein kleiner
Heiltrank..." ausreichen. |
![]() |
Direkt danach soll dem Inventar ein Item "Kleiner Heiltrank" hinzugefügt
werden. |
![]() |
Zum Abschluss bestimmt ihr noch, dass der Schalter "Gegner 1 - Tot" auf AN und der Schalter "Gegner 1 -Beute- Tot" auf AUS gestellt wird. |
Gegner 1-Ereignis |
[Nachricht] [Ein kleiner Heiltrank] [Item][+][Kleiner Heiltrank][Manuelle Anzahl [1]] [Schalter [Gegner 1 - Tot]][<-- [AN]] [Schalter [Gegner 1 -Beute- Tot]][<-- [AUS]] |
Im englischem Maker |
<>Message: Ein kleiner Heiltrank... <>Chng Item Count:(Kleiner Heiltrank) 1 (Add) <>Change Switch: Var[Gegner 1 - Tot] Switch ON <>Change Switch: Var[Gegner 1 -Beute- Tot] Switch OFF <> |
Im deutschem Maker (V1.10c) |
<>Nachr: Ein kleiner Heiltrank... <>+/- Item: Kleiner Heiltrank -> 1 erhö. <>Schalter ändern: [Gegner 1 -Tot]-[An] <>Schalter ändern: [Gegner 1 -Beute- Tot]-[AUS] <> |
Wenn ihr alles der Reihe nach bis an diese Stelle gemacht habt, habt ihr nun
ein fertiges AKS vor euch. Beachtet jedoch - wenn ihr weitere Gegner nachrüsten
wollt, dass ihr für JEDEN Gegner neue Variablen und Schalter nehmt. Die, die es
betrifft, erkennt ihr an ihren Namen. In unserem Beispiel begannen alle
betreffenden Variablen und Schalter mit "Gegner 1".
Auch die Variablen "X-Unterschied" und "Y-Unterschied" MÜSSEN je Gegner
frische, noch unbenutzte Variablen sein, damit hier bei der Schadensberechnung
nicht mit einem Hieb das ganze Spielfeld leergefegt wird.
Ansonsten sei an dieser Stelle gesagt, dass dies lediglich ein Grundgerüst für
ein AKS ist. Wenn ihr mehr Funktionen einbauen wollt, so liegt dies an euch. Das
Wissen habt ihr, wenn ihr euch der Rubrik "Das eigene Action-KS" gestellt habt.
Viel Spaß beim Herumprobieren und Verwenden des AKS.