![]() ![]() |
Alles über Skills |
Um uns ein Konzept dafür auszudenken, das die Erfassung der Fertigkeiten eines Charakters mit so wenig Zeit-, Variablen- und Schalteraufwand gestalten lässt, schauen wir uns das Musterbild der Itemliste an:
Ihr seht, dass in der Itemliste maximal zwei Spalten von Gegenständen möglich sind und es je Spalte maximal 8 Gegenstände haben kann. Das heißt schon einmal, dass wir für die Fertigkeiten maximal 16 Schalter brauchen werden. Der Rest ist eigentlich nicht sonderlich schwierig.
![]() |
Zunächst brauchen wir irgendein Ereignis, das "automatisch" starten
soll. |
![]() |
Erstes Ereigniskommando soll eine Bedingung sein, die abfragt, ob der
Wert der Variable "Gewählter Held" auf 1 steht. |
![]() |
Im Ja-Fall der Bedingung folgt eine weitere (ohne Nein-Fall), die
abfragt, ob der Held, welchem ihr die Heldennummer 1 zugewiesen habt (bei
der Heldenauswahl; in unserem Beispiel war es der Held namens "Alex"), eine
bestimmte Fähigkeit kann (in unserem Beispiel die Fertigkeit "Feuer"). |
![]() |
Im Ja-Fall dieser zweiten Bedingung Soll ein neuer
Schalter, dem ihr den Namen "Skill - L1" gebt, auf AN gestellt werden. Bemerkung: Die Fertigkeit, um die es hier geht (in unserem Beispiel "Feuer"), würde in der linken Spalte an erster Stelle stehen. Dies drückt das "L1" im Schalternamen aus. Die zweite Fertigkeit der linken Spalte hätte einen Schalter namens "Skill - L2" und so weiter. |
![]() |
Wiederholt unter dem End-Case der Bedingung, welche die Fertigkeit
abfragt, die violett hervorgehobenen Punkte für maximal 15 folgende
Fertigkeiten (7 davon können noch links, 8 davon rechts stehen. Achtet auf
das im Punkt vorher beschriebene Schalter-Schema.) |
![]() |
Wiederholt im Nein-Fall der zuallererst angelegten Bedingung sämtliche
zuvor genannten Punkte für den "Gewählten Held 2" und fahrt nach dem selbem
Schema für jeden weiteren Helden fort. |
![]() |
Scrollt nun an das unterste Ende des Codes. Hier legt ihr ein
Schalter-Ereigniskommando an, das einen neuen, freien Schalter namens "Skills
Shown" auf AN setzt. |
![]() |
Scrollt direkt danach an das oberste Ende des Codes und legt dort in der allerersten Zeile eine neue Schalterfunktion an. Diese soll alle Schalter, die nach dem Schema "Skill - L1" bis "Skill - L8" und "SKill - R1" bis "Skill - R8" benannt sind, auf OFF setzen. |
Skill-Erfassungs-Ereignis | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Ereignisseite 1][Automatisch] [Schalter von [Skill - L1] bis [Skill - R8]][<-- [AUS]] [Bedingung [Variable [Gewählter Held] [gleich][1]]]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Ereignisseite 2][ENTER][Schalter [Skills
Shown]] |
Im englischem Maker |
<>Change Switch: [xx01 to
xx16] Switch OFF <>If Var(xxxx: Gewählter Held) 1 <>If Alex==>Feuerball has learned <>Change Switch: Var[xx01: Skill - L1] Switch ON <> :End Case <>If Alex==>Frost has learned <>Change Switch: Var[xx02: Skill - L2] Switch ON <> :End Case <>If Alex==>Blitz has learned <>Change Switch: Var[xx03: Skill - L3] Switch ON <> :End Case <>If Alex==>Erde has learned <>Change Switch: Var[xx04: Skill - L4] Switch ON <> :End Case <>If Alex==>Heilung has learned <>Change Switch: Var[xx05: Skill - L5] Switch ON <> :End Case <>If Alex==>Geld stehlen has learned <>Change Switch: Var[xx06: Skill - L6] Switch ON <> :End Case <>If Alex==>Gegenstand stehlen has learned <>Change Switch: Var[xx07: Skill - L7] Switch ON <> :End Case <> :Else Case <>If Var(xxxx: Gewählter Held) 2 <>If Annie==>Feuerball has learned <>Change Switch: Var[xx01: Skill - L1] Switch ON <> :End Case <>If Annie==>Frost has learned <>Change Switch: Var[xx02: Skill - L2] Switch ON <> :End Case <>If Annie==>Blitz has learned <>Change Switch: Var[xx03: Skill - L3] Switch ON <> :End Case <>If Annie==>Erde has learned <>Change Switch: Var[xx04: Skill - L4] Switch ON <> :End Case <>If Annie==>Heilung has learned <>Change Switch: Var[xx05: Skill - L5] Switch ON <> :End Case <>If Annie==>Geld stehlen has learned <>Change Switch: Var[xx06: Skill - L6] Switch ON <> :End Case <>If Annie==>Gegenstand stehlen has learned <>Change Switch: Var[xx07: Skill - L7] Switch ON <> :End Case <> :End Case <> :End Case <>Change Switch: Var[xx17: Skills Shown] Switch ON <> |
<> |
Im deutschem Maker (V1.10c) |
<>Schalter
ändern:[xx01*xx16] -[AUS] <>Bedingung:Varbl[xxxx: Gewählter Held]-1 <>Bedingung:Alex- Feuerball gelernt <>Schalter ändern:[xx01:Skill - L1]-[Aa] <> :End-Fall <>Bedingung:Alex- Frost gelernt <>Schalter ändern:[xx02:Skill - L2]-[An] <> :End-Fall <>Bedingung:Alex- Blitz gelernt <>Schalter ändern:[xx03:Skill - L3]-[An] <> :End-Fall <>Bedingung:Alex- Erde gelernt <>Schalter ändern:[xx04:Skill - L4]-[An] <> :End-Fall <>Bedingung:Alex- Heilung gelernt <>Schalter ändern:[xx05:Skill - L5]-[An] <> :End-Fall <>Bedingung:Alex- Geld stehlen gelernt <>Schalter ändern:[xx06:Skill - L6]-[An] <> :End-Fall <>Bedingung:Alex- Gegenstand stehlen gelernt <>Schalter ändern:[xx07:Skill - L7]-[An] <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[xxxx: Gewählter Held]-2 <>Bedingung:Annie- Feuerball gelernt <>Schalter ändern:[xx01:Skill - L1]-[An] <> :End-Fall <>Bedingung:Annie- Frost gelernt <>Schalter ändern:[xx02:Skill - L2]-[An] <> :End-Fall <>Bedingung:Annie- Blitz gelernt <>Schalter ändern:[xx03:Skill - L3]-[An] <> :End-Fall <>Bedingung:Annie- Erde gelernt <>Schalter ändern:[xx04:Skill - L4]-[An] <> :End-Fall <>Bedingung:Annie- Heilung gelernt <>Schalter ändern:[xx05:Skill - L5]-[An] <> :End-Fall <>Bedingung:Annie- Geld stehlen gelernt <>Schalter ändern:[xx06:Skill - L6]-[An] <> :End-Fall <>Bedingung:Annie- Gegenstand stehlen gelernt <>Schalter ändern:[xx07:Skill - L7]-[An] <> :End-Fall <> :End-Fall <> :End-Fall <>Schalter ändern:[xx17: Skills Shown]-[An] |
<> |
Wenn ihr den Code so lassen würdet, so würden von den gewählten Helden nur
ein einziges Mal geprüft, was sie können und über welche Fertigkeiten sie
verfügen. Warum?
Der Schalter "Skills Shown", der ganz am Ende des Maker-Codes aktiviert wird,
schaltet ja nach Prüfung, was die Helden können, diese "Fertigkeiten-Prüfungsfunktion"
aus, schließlich hat diese ja ihren Job getan. Doch immer wieder, wenn der
Cursor auf die Karte mit den Fertigkeiten teleportiert wird, soll diese Prüfung
aktiv werden. Also muss auf jedem Weg, durch den die (aktuelle) Karte der
Fertigkeiten verlassen werden kann, der Schalter "Skills Shown" auf AUS gesetzt
werden.
![]() |
Möglichkeit 1: Drücken der Taste ESC. Ganz am Anfang, als es um den Einstieg und das Verlassen des Inventars ging, habt ihr ein "Common Event/Häufig benötigtes Ereignis" angelegt, das prüft, ob die Taste "ESC" gedrückt wird. Wenn sich die Heldentruppe im Inventar befindet, wird sie auf die Karte "Inventar In/Out" teleportiert. Begebt euch auf diese Karte. Dort habt ihr ein Ereignis angelegt, das prüft, ob der Schalter "Im Inventar?" auf AUS ist. Im Nein-Fall (also wenn der Schalter "Im Inventar" auf AN steht), soll der Cursor aus der Heldengruppe verschwinden, die alte Heldentruppe wieder eine Gruppe bilden und die eventuellen noch offenen abnormen Zustände, an denen sie leiden, erhalten. Über dem Ereigniskommando, das die Heldentruppe an die Position zurück schickt, von der aus das Inventar aufgerufen wurde, legt ihr ein Schalter-Ereigniskommando an, das den Schalter "Skills Shown" auf AUS stellt. |
![]() |
Möglichkeit 2: Fertigkeitenkarte wechseln/verlassen Je nach dem, wie viele Fertigkeiten eure Hauptcharaktere erlernen können, werdet ihr unter Umständen zwei oder mehr Karten mit Fertigkeitenlisten haben. Immer dann, wenn mittels "Weiter" bzw. "Zurück" die Fertigkeitenkarte gewechselt oder verlassen wird, muss vor dem Teleportereignis (welches das Verlassen/Wechseln der Fertigkeitenkarte in die Wege leitet) ein weiteres SChalter-Ereigniskommando angelegt werden, das den Schalter "Skills Shown" auf AUS stellt. |
Aufgrund dessen, dass es lediglich ein einziges, einfaches Ereigniskommando ist, das ihr noch hinzufügen müsst und die Stellen genannt sind, wird auf eine Darstellung in MML sowie auf ein Code-Beispiel an dieser Stelle verzichtet.
Hiermit sind die Skills gemeint, die eure Hauptcharaktere lediglich im Kampf einsetzen können. Sie werden, sofern sie der betreffende Hauptcharakter kennt, durch ein Ereignis dargestellt, das kurz über die Fertigkeiten informieren soll, also wie sie heißen, was bei Gebrauch der Fertigkeit passiert und wie viele Magiepunkte sie verbrauchen. Vom Schema her ist es mit ihnen nicht viel anders als mit den Schlüsselgegenständen bei den Items, nur dass die Ereignisse für die Kampffertigkeiten erst dann sichtbar werden, wenn der entsprechende Schalter (ein Schalter zwischen "Skill - L1" und "Skill - R8) aktiv ist. Aufgrund der Einfachheit der Darstellung von Kampffertigkeiten wird an dieser Stelle auf die MML-Darstellung und das Codebeispiel verzichtet.
Sie funktionieren in Etwa so wie heilende Items, nur mit einem kleinem, aber feinem Unterschied. Es muss eine Bedingung abfragen, ob der betreffende Hauptcharakter genügend Magiepunkte zum Gebrauch der Fertigkeit besitzt, welche ihm nach Wirken der Fertigkeit abgezogen werden müssen. Auch soll es möglich sein, den Helden, auf den die Fertigkeit gewirkt werden soll, frei wählen zu können, jedoch soll sich die Auswahl auf die Helden beschränken, die zum Zeitpunkt des Inventaraufrufs in der Heldentruppe waren.
![]() |
Das Ereignis soll nur dann sichtbar sein, wenn ein entsprechender
Skill-Schalter aktiv ist. In unserem Beispiel soll dies der Schalter namens
"Skill - L5" sein. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Eine Nachricht soll kurz die Fertigkeit sowie den Verbrauch an
Magiepunkten beschreiben. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Hiernach soll eine Bedingung folgen, die abfragt, ob der Wert der
Variable "Gewählter Held" dem Wert 1 entspricht. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Im Ja-Fall der Bedingung soll nun in einer Variable (hierfür verwenden
wir die bereits benutzte Variable "Temp-Attrib", da sie aktuell nicht in
Gebrauch ist) der aktuelle Stand an Magiepunkten gespeichert werden, die der
"gewählte Held 1" (in unserem Beispiel Alex) hat. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Direkt danach soll eine weitere Bedingung abfragen, ob der Wert der
Variable "Temp-Attrib" - in der nun die Magiepunkte des Helden stehen -
größer oder gleich dem Wert 3 ist. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Im Nein-Fall dieser Bedingung soll eine Nachricht aussagen, dass der
gewählte Held nicht genügend Manapunkte hat, um die Fertigkeit einsetzen zu
können. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Im Ja-Fall der Bedingung soll zuerst eine
Nachricht mit dem Fragetext "Soll die Fertigkeit "Heilung" eingesetzt
werden?" stehen, die sich auf maximal zwei Zeilen erstrecken sollte. |
||||||||||||||||||||||||||||||||||||||||||
![]() |
Dieser Nachricht folgt ein Auswahlmenü, in dem es
nur zwei Unterscheidungen gibt: "Ja" und "Nein"
|
xxx* Tragt hier anstelle von xxx1 die wirkliche Nummer der Variable von Hand ein, die ihr "Held #1" genannt habt.
[Heilzauber-Ereignis] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Ereignisseite
1][ENTER-Taste][Schalter [Skill - L5]] [Nachricht] [Heilung:] [Ein weißer Nebel umgibt das Ziel und bewirkt, dass] [30 Punkte seiner Lebenskraft geheilt werden.] [MP-Verbrauch: 3] [Bedingnung][Variable [Gewählter Held]][gleich][1]
|
xxx* Tragt hier anstelle von xxx1 die wirkliche Nummer der Variable von Hand ein, die ihr "Held #1" genannt habt.
Im englischem Maker |
<>Message: Heilung: : : Ein weißer Nebel umgibt das Ziel und bewirkt, dass : : 30 Punkte seiner Lebenskraft geheilt werden. : : MP-Verbrauch: 3 <>If Var(xxxx: Gewählter Held) 1 <>Change Var: Var[xxx1: Temp-Attrib] (Set)-Alex's MP <>If Var(xxx1: Temp-Attrib) 3(>=) <>Message: Soll \n[1] die Fertigkeit "Heilen" einsetzen? <>Show Choice: Ja, Fertigkeit nutzen/Nein... :[Ja, Fertigkeit nutzen] Case <>Change Var:[xxx2: Held-Variable-Nr] (Set)-xxx* <>Label #1 <>If Var(xxx2: Held-Variable-Nr) xxx* + 4 <>Change Var:[xxx2: Held-Variable-Nr] (Set)-xxx* <>Goto Label 1# <> :Else Case <>Change Var:[xxx1: Temp-Attrib] (Set)- Var[Var[xxx2]] <>If Var(xxx1: Temp Attrib) 0 <>Change Var:[xxx2: Held-Variable-Nr] (Set)-xxx* <>Goto Label 1# <> :Else Case <>If Var(xxx1: Temp Attrib) 1 <>Show Choice: \n[1] heilen/Ein anderes Teammitglied heilen :[\n[1] heilen] Case <>Play SE: Holy6 <>Change HP: Alex's HP 30 (Add) <>Change MP: Alex's MP 3 (Rem) <> :[Ein anderes Teammitglied heilen] Case <>Change Var:[xxx2: Held-Variable-Nr] (+)-1 <>Goto Label 1# <> :End Case <> :Else Case <>If Var(xxx1: Temp Attrib) 2 <>Show Choice: \n[2] heilen/Ein anderes Teammitglied heilen :[\n[2] heilen] Case <>Play SE: Holy6 <>Change HP: Annie's HP 30 (Add) <>Change MP: Alex's MP 3 (Rem) <> :[Ein anderes Teammitglied heilen] Case <>Change Var:[xxx2: Held-Variable-Nr] (+)-1 <>Goto Label 1# <> :End Case <> :End Case <> :End Case <> :End Case <> :End Case <> :[Nein...] Case <> :End Case <> :Else Case <>Message: \n[1] hat nicht genug Manapunkte, um diese : : Fertigkeit nutzen zu können. <> :End Case <> :Else Case <>Note: Hier folgt der selbe Teil ab der Bedingung, die abfragt, : : Ob der Wert der Variable "Gewählter Held" 1 ist... : : Nur dass er diesmal 2 sein muss... :End Case <> |
Im deutschem Maker (V1.10c) |
<>Nachr: Heilung: : : Ein weißer Nebel umgibt das Ziel und bewirkt, dass : : 30 Punkte seiner Lebenskraft geheilt werden. : : MP-Verbrauch: 3 <>Bedingung:Varbl[xxxx: Gewählter Held]-1 <>Var. ändern:[xxx1: Tamp-Attrib]Wert, Alex MP <>Bedingung:Varbl[xxx1: Temp-Attrib]-3 >= <>Nachr: Soll \n[1] die Fertigkeit einsetzen? <>Auswahlmenü: Ja, Fertigkeit nutzen/Nein... :[Ja, Fertigkeit nutzen] Fall <>Var. ändern:[xxx2: Held-Variable-Nr] (Wert)-xxx* <> ->Label: 1Nr <>Bedingung:Varbl[xxx2: Held-Variable-Nr]-xxx* + 4 <>Var. ändern:[xxx2: Held-Variable-Nr] (Wert)-xxx* <>Gehe zu Label: 1Nr <> :Ansonsten <>Var ändern:[xxx1: Temp-Attrib]Wert, Var[V[xxx2]]Inh. <>Bedingung:Varbl[xxx1: Temp-Attrib]-0 <>Var. ändern:[xxx2: Held-Variable-Nr] Wert, xxx* <>Gehe zu Label: 1Nr <> :Ansonsten <>Bedingung:Varbl[xxx1: Temp-Attrib]-1 <>Auswahlmenü: \n[1] heilen/Ein anderes Teammitglied heilen :[\n[1] heilen] Fall <>Soundeffekt: Holy6 <>LP ändern: AlexLP um 30 erhöhen <>MP ändern: AlexMP um 3 verm. <> :[Ein anderes Teammitglied heilen] Fall <>Var. ändern:[xxx2: Held-Variable-Nr] +, 1 <>Gehe zu Label: 1Nr <> :End-Fall <> :Ansonsten <>Bedingung:Varbl[xxx1: Temp-Attrib]-2 <>Auswahlmenü: \n[2] heilen/Ein anderes Teammitglied heilen :[\n[2] heilen] Fall <>Soundeffekt: Holy6 <>LP ändern: AnnieLP um 30 erhöhen <>MP ändern: AlexMP um 3 verm. <> :[Ein anderes Teammitglied heilen] Fall <>Var. ändern:[xxx2: Held-Variable-Nr] +, 1 <>Gehe zu Label: 1Nr <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> :[Nein...] Fall <> :End-Fall <> :Ansonsten <>Nachr: \n[1] hat nicht genug Manapunkte, um diese : : Fertigkeit nutzen zu können <> :End-Fall <> :Ansonsten <>Notiz: Hier folgt der selbe Teil ab der Bedingung, die abfragt, : : Ob der Wert der Variable "Gewählter Held" 1 ist... : : Nur dass er diesmal 2 sein muss... :End-Fall <> |