Obwohl der XP ja, wie der 2k3 bis zu 50 Pictures gleichzeitig erlaubt, ist dies manchem vielleicht nicht genug. Es gibt zwar die Möglichkeit ein Picture direkt mittels Ruby anzuzeigen, aber das ist nicht jedermanns Sache. Viel schöner wäre es doch, wenn man mithilfe der bekannten Picture-Befehle des Eventeditors mehr als nur 50 Pictures anzeigen und verändern kann.
Und es geht. Es erfordert zwar, wieder ein wenig Arbeit in den Rubyskripten, aber sobald diese einmal getätigt sind, können ganz normal über die Eventbefehle mehr als 50 Pictures benutzt werden.
Da ich ein Verfechter des Mottos "Kapieren statt kopieren" bin, werde ich auch zu jeder Änderung ein par Worte sagen, damit ihr wißt was genau ihr ändert.
Das ganze ist auch nicht ausgiebig getestet, darf ruhig als BETA angesehen werden, eine Sicherungskopie des Projektes sollte angelegt werden, bevor dies hier ausprobiert wird. Edit: Unter Punkt.2 eine Codezeile erweitert..
1. Picture ID 51?
Wer es schon ausprobiert hat, weiß es schon. Das Feld "Picture ID" in den Event-Dialogen erlaubt keine Zahl die größer als 50 ist. Diese Beschränkung können wir mit Ruby alleine nicht aufbrechen, dafür müßte man vermutlich in der EXE-rumpfuschen, falls es darüber überhaupt geht.
Nun, wie wollen wir mehr als 50 Pictures handhaben, wenn wir keine Picture ID größer als 50 angeben können? Wir teilen dem Spiel einfach mit, wenn wir mit der Picture ID 1 auch wirklich die 1 meinen, und wann zB. die 51. Klingt verwirrend? Abwarten..
Wir brauchen also quasi zwei Modi. Einen normalen, in dem wir die 50 normalen Pictures handhaben, und einen zweiten, wo wir die Pictures handhaben, die über die 50 hinausgehen. Diesen zweiten Modus nenne ich mal "More_Pics". Um zu speichern ob dieser Modus an ist, benutzen wir einen Switch. Der Einfachheit halber benutzen wir hierfür einen der 5000 Game-Switches. Die ID dieses Switches sei an dieser Stelle, als Beispiel einmal die 1. (Ihr könnt natürlich jeden anderen der Game-Switches verwenden). Weiterhin gehe ich in diesem Beispiel davon aus, daß wir 50 weitere Pictures hinzufügen und so die Gesamtzahl auf 100 bringen.
Ein par Worte dazu, wie der XP die Pictures handhabt. Der XP speichert intern 100 Picture-Objekte ab. Die ersten 50 davon, sind für den Einsatz auf Maps gedacht, während die anderen 50 für den Einsatz während des Kampfes gedacht sind. Ich werde hier nur erklären wie man die Pictures, die auf der Map angewendet werden, erhöht, die Picturezahl für den Kampf wird weiterhin 50 betragen.
2. Der Interpreter
Auf gehts zum Ruby scripten =). Für müssen zuallerst dafür sorgen, daß die PictureID, die im Eventbefehl angegeben wird, erhöht wird, falls wir im Modus "More_Pics" sind, bevor das eigentliche Picture angezeigt wird. Dafür erweitern wir den Event-Interpreter ein wenig.
Öffnet das Skript "Interpreter 5", geht dort in Zeile 281. Diese Zeile müsste so aussehen:
Zwei Zeilen drüber müsste stehen. Zeile 281 liest die PictureID aus, die wir im Dialog eingeben haben (sie befindet sich in @parameters[0]) und erhöht diese um 50 falls das laufende Spiel sich gerade im Kampf befindet. (Die PicID für die Kampfpictures starten ja normalerweise ab 51.. daher wird hier 50 addiert)
Da wir weitere Pictures hinzufügen, verschieben sich die Kampfpictures weiter nach hinten. In diesem Beispiel fügen wir weitere 50 Pictures hinzu, die Battle-Pics verschieben sich also um 50 nach hinten und starten daher nicht bei 51 sondern bei 101. Deswegen ändern wir die 50 in Zeile 281 in eine 100 um.
Wir fügen nun direkt unter die Zeile 281 folgende drei Zeilen Code ein:
Hier fragen wir ab der Game-Switch Nr. 1 ON ist (also true), und wenn dies der Fall ist, erhöhen wir number (wo ja jetzt die benutzte PicID drinsteht) um die gewünschte Anzahl neuer Pictures, also hier 50.
So müßte es jetzt in etwa ab Zeile 279 aussehen:Wir gehen nun in Zeile 305 des Skriptes. Diese Zeile müßte identisch sein mit Zeile 281. Auch hier ändern wir wieder die 50 in eine 100 und fügen unsere drei bekannten Zeilen Code direkt darunter.
Selbiges tun wir bei Zeile 329, Zeile 343 und Zeile 358. Jedes mal wird die 50 in eine hundert umgeändert und die drei Zeilen Code hinzugefügt..
3. Mehr Pictures
Einige kleine Änderungen müssen noch vorgenommen werden. Öffnet das Skript "Game_Screen". Ab Zeile 33 müßte dort folgendes stehen:Hier werden insgesamt 100 Picture-Objekte erstellt. Da wir 50 zusätzliche haben wollen, erhöhen wir die 100 in Zeile 33 einfach auf 150.
Wir bleiben im Skript "Game_Screen" und gehen in Zeile 142, die da lautet Hier werden alle Battle-Pics durchlaufen. Da unsere Battle-Pics ja nun ab 101 starten und bis 150 gehen, ändern wir die Zeile entsprechend um: Nächste Zeile zum Ändern ist Zeile 146, die lautet: Hier werden die normalen Pics durchlaufen, da wir ja nun 100 statt 50 normaler Pics haben, ändern wir die Zeile in: Das nächste Skript zum ändern ist "Spriteset_Map". Hier lautet Zeile 45 wie folgt: Wieder werden hier alle normalen Pics durchlaufen, dementsprechend ändern wir hier wieder die 50, so daß die Zeile nun lautet: Das letzte Skript zum Ändern ist "Spriteset_Battle". Zeile 43 lautet hier: Vermutlich könnt ihr euch nun denken, wie wir diese Zeile ändern werden, nämlich in: 4. Schlusswort
Damit sind wir fertig. Probiert es aus, schaltet Switch Nr1 auf ON und benutzt dann die Picture-Befehle. Ihr solltet nun 50 weitere Pictures zu eurer Verfügung haben.
Natürlich könnt ihr auch mehr oder weniger als 50 Pictures hinzufügen. Ihr müßt nur oben an den entsprechenden Stellen, die Zahlen um andere Werte erhöhen. Beachtet aber, daß wenn ihr weniger als 50 hinzufügt sich einige PicIDs überschneiden. Wenn ihr nur 10 hinzufügt, bedeutetet PicID 11 im normalen und PicID 1 im erweiterten Modus ein und dasselbe, ihr könnt damit also ausversehen Pictures überschreiben..
Ich hoffe, daß ich alle Picture-Befehle erwischt habe. Also wenn ein Picturebefehl bei euch und einer "höheren" PicID keine Wirkung zeigt, sagt mir welcher es ist und ich gucke nach.