Dieser Beitrag sollte für alle interressant sein, die einmal mit Events ein KS bauen wollen:Mit diesem Post werde ich keinen genauen Eventcode verraten, aber ich werde euch einen Einblick in die
Funktionsweise und den Aufbau geben - sowie einige Tipps in Sachen Event-KS:
Für Deity gibt es noch dieses Bild:

Erstmal das wichtigste - alle Events auf der KS-Map sind Anzeigen - lediglich das ROTE Event startet beim betreten
der Map (es startet das KS und beendet sich dann). Von den Common Events läuft lediglich System_Timeline paralell -
der Rest wird bei Bedarf gecalled - davon ausgenommen sind die 8 Haupt-Events für Menüs der jeweiligen Charaktere
(Übersichthalber in 4 aufgeteilt) und der Gegner. Diese sind Autostart - und es läuft lediglich 1 Event gleichzeitig.
Insgesamt läuft IMMER nur ein Event ab - Schaden z.B. wird nur berechnet (per Aufruf), wenn es nötig wird. So
spare ich viel Leistung und konnte auch die vielen Anzeigen unterbringen.
Wie man sieht sind die Anzeigen außerhalb des Screens, damit man sie beim Teleport nicht sieht. Damit der Map-
Ausschnitt stimmt wird der Hero immer nach oben links teleportiert.
Ein Zug des KS läuft so ab:
> System_Timeline
> Aufruf des Menüs per Switch
> Callen der jeweiligen Aktion
> Callen von Folgeaktionen wie Untermenüs oder Schadensberechnung
> Back zur Timeline
Die TimeLine (ATB-Style, Grandia-ähnlich):Am Anfang des Kampfes werden die Agilitätswerte von Monstern und Helden in Extra-Variablen gesichert. Ich
nehme keine feste Werte, damit man später "Hast" und ähnliches benutzen kann. Die Agilität eines der Helden
wird als 100% Schnelligkeit der Icons unten definiert und über Dreisatz anschließend berechnet, wie schnell
die anderen im Verhältnis dazu sind. Da der Maker keine Kommazahlen beherrscht muss man die Zahlen vorher
mit 1000 oder höher multiplizieren und später wieder dividieren. Außerdem hab ich eine Abfrage drin, welche
zur Not die Zahl rundet (wenn z.B. 9,7 = 97% Schnelligkeit herauskommen würde, dann wird dennoch 10
ausgegeben anstatt der makertypisch abgerundeten Zahl). Die Zahl bestimmt wie viele Pixel sich die Bilder
unten pro Sekunde bewegen (10px = 100% Schnelligkeit).
Wer als erstes einen gewissen Wert erreicht - das Ende der Timeline - ist dran ^^
Anzeigen und Werte:Alle Werte sind in Variablen gespeichert um diese per Skill modifizieren zu können. Um die Zahlen darstellen zu können
werden alle Werte mit MOD moduliert < oder wie man das nennt. Daraus ergeben sich z.B. aus der Zahl 5136 ganze
4 Zahlen in 4 Variablen: 5136, 136, 36 und 6
Anhand dieser Zahlen und Events mit jeweils passenden Seiten kann man nun die Anzeigen darstellen.
Für die 100er-Stelle hat das Event 10 Seiten. Die Abfrage für jede Seite fragt, ob die Variable 100er-Stelle größer
als 100, 200, 300 etc ist und hat jeweils die Grafik von 1, 2, 3 etc (also nur eine Stelle).
Per Set Event-Befehl werden mehrere Events an eine Stelle gesetzt, so spart man Platz und kann kleinere Zahlen
machen.
Das war es auch schon bei den Anzeigen.
Dieser Abschnitt ist vermutlich der simpelste, aber zeitaufwendigste. In meinem KS dauerte die Anzeige einen kompletten
Nachmittag.
Menüs - und Items: Ich glaube, dass ich hier die Grundstruktur eines Bildmenüs nicht mehr aufführen muss - wenn doch: Sagen.
Nur so viel: Verwendet Labels anstatt Loops, welche ineinander verschachtelt sehr buggy sein können!Items finden viele sehr schwer - ich bin den einfachsten Weg gegangen:
Ein Event wird aufgerufen, welches prüft welche Items man hat. Hat man eines nicht, dann wird eine Variable um eins
hochgestellt und das nächste geprüft. Dort wo es stehenbleibt weiß man dann, welches Item der Held an Stelle 1 hat.
Wenn man jetzt vor und zurück scrollt, dann wird diese Variable einfach modifiziert (+ oder - 1) und in einem Loop
(in dem Fall ist es ein Loop) erneut durchgerechnet bis zum nächsten Item. Ist gar keines vorhanden (mehrfach
durchgerechnet (am Ende eine Variable hochzählen) wird nur ein Zurück-Button eingeblendet.
Auswahl der Helden/Monster sind wie normale Menüs.
Schadensberechnung und variable Darstellung:Das einzige, was eventuell Kopfzerbrechen bereiten kann sind die Schadensrechnungen und deren Anzeige.
Ich orientiere mich dabei an der originalen RM-Berechnung für den Schaden, jedoch würde ich bei Skills
eindeutig eigene oder vorgeschlagene Berechnungen nehmen!
Angriffsschaden:Schaden = Held Angriff × 4 - Feind Defensive × 2 (x3 bei Critical (4% Chance))
Negativschaden wird zu 0 - und im Fall des Makers durch Zufall auch ab und an zu 1, das habe ich aber nicht getan.
Skillschaden:Damage = Base Damage
+ (A's attack × 4 × Attack F ÷ 100)
+ (A's spirit × 2 × Spirit F ÷ 100)
- (B's defense × 2 × Attack F ÷ 100)
- (B's spirit × 1 × Spirit F ÷ 100)
Ehrlich gesagt: Wer das kapiert ist gut...
Für das Wohl aller - ich habe probiert DIESE Formel umzusetzen und bin nich wirklich zufrieden - empfehle ich eine
eigene Formel, bei welcher der Skillschaden fest ist (oder durch das Level stärker wird), lediglich modifiziert durch
Magiedefensive/Defensive und eventuelle Element-Resistenzen.
A:200%, B:150%, C:100%, D:50%, E:0%, F:-100% oder einfach: Resistent: 50% und Anfällig: 150%
Vorteil: Einfacheres Balancing der Skills - Nachteil: Man braucht evtl mehr Skills, wenn diese nicht stärker werden.
Heilzauber brauch ich nicht erklären, dass da Gegnerdefensive unwichtig ist dürfte klar sein. Fragt nur eventuell
einen Reflekt-Status ab

Die Anzeige des Schadens erfolgt auch über die Mod-Funktion des Makers, wie oben bei der Anzeige der HP/MP der
Helden. Anstatt diese jedoch mit Events darzustellen empfehle ich die Darstellung mit Hilfe von 10 kleinen Bildern,
welche die Zahlen von 0-9 darstellen.
Diese stehen variabel zu einer Position, welche in eine X und Y-Variabel gespeichert sind. Der Rest ist Fleißarbeit.
Macht die erste Stelle, lasst sie anzeigen, ändert die X Variable so weit wie nötig und kopiert euch den Code untereinander,
dann müsst ihr nur die Bildernummern und Fork-Conditions abändern.
Dauer... vermutlich nicht ganz so lange wie die Anzeige mit Events für die Lebensanzeigen. Kann aber auch langweilig
werden.
Wenn ihr ganz fleißig seid, dann macht einmal rote Zahlen für Schaden und grüne für Heilung.
Wollt ihr einen Runterzähl-Effekt des Schadens (ich habe darauf verzichtet) braucht ihr noch ein Event, welches die
Zahlen ohne Animation anzeigt. Zählt einfach einen gewissen Wert runter, lasst den Schaden anzeigen und wiederholt
das ganze in gewünschter Schnelligkeit. Sehr hübsch, kann aber sehr an der Leistung ziehen.
Allgemeine Tipps:-Benutzt die Comment-Funktion um längeren Code mit Hinweisen zur jeweiligen Funktion des Abschnittes oder einfach zur
Unterteilung zu versehen. So findet ihr euch auch nach Pausen schnell zurecht, müsst weniger suchen, wenn ihr etwas
bugfixen müsst und habt so ein einfacheres Leben.
Das gleiche gilt allgemein für Events:
- Teilt die Commom-Events lieber in mehrere Common-Events anstatt alles in eines quetschen zu wollen! Der Maker hat die
Angewohnheit lange Events sehr lange zu laden. Umgeht dies, in dem ihr einfach eure Events aufteilt und das benötigte
callt.
- Benutzt die Call-Funktion wann immer es geht, versucht so wenig wie möglich mit Paralell oder Autostart-Events zu arbeiten.
Die Frames per Second werden sich bei euch bedanken!
- Wenn ihr Animationen ausrichtet, welche auf Charakteren angezeigt werden, dann ist das oft eine ganz schöne Huddelei, bis
der Übergang perfekt aussieht. Einfach geht es, wenn ihr die Char-Pose ebenfalls auf der Animation habt und am Ende anzeigt.
Nehmt die Frameanzahl der Animation x4 und zieht 1 Frame ab. Dies ist dann die Wartezeit der Animation im Event, bis ihr
wieder das CharSet einblenden könnt!
- Versucht Bilder ohne zu viel Transparenzfläche zu verwenden. Wenn ihr Anzeigen habt, die nur 32x32px groß sind, dann lasst
die Datei auf der Größe anstatt sie auf eine 544x416px-Datei zu legen. Ja, die Ausrichtung kann nervig werden, aber die Perfomance
wird sich bedankbar machen!
- Nochmal für alle: Finger weg von Loops! Benutzt STETS LABEL wo es nur geht. Maximale Ausnahme: Ihr braucht nur einen
einzelnen Loop und hab KEINE weiteren im Event bzw ineinander verschachtel. Loops sind seit jeher im Maker etwas buggy.
So, das war es auch schon, ein etwas längerer Einblick in die Technik eines Event-KS by R.C.
Das KS ist übrigens bereits das ca. 15. KS, welches ich gebaut habe und vor allem auf eines ausgelegt: Leistung
Daher benutzt es auch 3-Stufen-CharSets anstatt aufwendig animierten Picture-Helden und Gegnern, da die
Animation dieser wieder ein Paralelles Event erfordert und somit Leistung frisst.