O.K., hier mal was auf eigene Faust, das heist das hab ich mir selber zusammengepfuscht und zwar ohne viel über Ruby zu wissen. Bei mir funktioniert es, aber wer's benutzen will tut das auf EIGENE GEFAHR!!!
Wenn jemand mit Ahnung das liest soll er mir bitte mitteilen was er denkt, ob es unvollständig, fehlerhaft oder gar gefährlich ist (glaub ich eigentlich nicht), dann lösche ich es sofort wieder!
Das ganze soll dem Zweck dienen die Dauer des 'Fade's beim "Playertransfer" (von einer Map zur anderen) zu steuern, und zwar in beliebigen Framezahlen. Das heist, wer will dass das Überblenden zur nächsten Map schnell von statten geht während es an anderer Stelle mal dem Effekt halber länger dauert kann den Wert einfach via Callscript neu setzen.
Um das umzusetzen öffnet man erstmal den Scripteditor des Makers und sucht sich "scene_map" raus. Dort scrollt man ganz runter bis zur Zeile 272! Der Code der dort steht müßte so aussehen:
Die letzte Zeile,
ist die auf die es ankommt. Die in () stehende 20 gibt die Framezahl an die der ganze Spaß dauern soll. Wer den Wert nur einmal einstellen will kann das direkt tun, aber wer ihn desöfteren neu einstellen möchte sollte diese Zahl gegen eine Variable ersetzen, z.B. so:
Dadurch wird statt einer Zahl der in der Variable gespeicherte Wert als Zeitangabe verwendet.
Das kleine Problem ist das es diese Variable nicht gibt, man muß sie also zu Spielbegin erst erstellen. Alternativ könnte man auch eine der In-Game-Variablen ($game_variables[nummer der Variable]) verwenden wodurch man sie direkt via Clickscript modifizieren könnte, das hab ich aber nicht ausprobiert.
Um sie zu erstellen habe ich sie in "scene_title" in unter def "command_new_game" mit eingebaut. Direkt unter "$scene = scene_map.new" einfach "$trans_wait = 20" einfügen, bzw. den namen der Variable die ihr verwenden wollt und den von euch angestrebten Startwert. Das ganze bewirkt dann das eine Variable "$trans_wait" erstellt und auf den Wert 20 gesetzt wird. Bei jedem Playertransfer wird dann der in dieser variable gespeicherte Wert als Frameangabe für die dauer des Fades (sofern dieser eingestellt ist) verwendet.
Allerdings wird diese Variable nur dann erstellt wenn man ein neues Spiel startet. Sollte man das Spiel beenden und einen Speicher laden wird das Spiel beim ersten Teleport abbrechen da es die angeforderte Variable nicht gibt!
Aus diesem Grund muß man dafür sorgen das die variable abgespeichert, und auch geladen wird! Hierzu öffnet man "scene_save" und scrollt ganz runter zu diesen ganzen "Marshal.dump (XX)"-Teilen. Fügt direkt unter dem letzten Marshal.dump einen weiteren ein, der eure trans_wait Variable speichert:
Dadurch wird die Variable mit in die Savefile geschrieben. Um sie laden zu können muß der Maker aber auch wissen das es etwas zu laden gibt, daher muß diese Info auch noch in die "scene_load" aufgenommen werden. Dot also ebenfalls ganz runter scrollen und unterhalb des letzten "Marshal.load" einen weiteren nach dem gleichen Schema einfügen:
Um die Transferdauer jetzt nach belieben einstellen zu können muß man nurnoch "$trans_wait" auf den gewünschten Wert setzen. Das geht mit dem Eventbefehl "Script", der letzte in der Befehlsliste, ganz unten rechts auf der letzten Seite. Hier gibt man einfach folgendes ein:
XX ist dann natürlich die Framezahl, lasst euch nicht einfallen hier Buchstaben einzusetzen, das würde der Maker natürluch nicht verstehen!
Achso: das Ganze hat nur dann Auswirkungen wenn die "Fading"-Option bei "Transfer Player" auf "Yes" steht, sonst nicht!
So, wie gesagt, bei mir hat alles bisher problemfrei funktioniert aber das ändert nichts daran das all das komplett selbst zusammengepfuscht ist, ich übernehmen keinerlei Verantwortung für Fehler und Probleme die dadurch entstehen. Eigentlich, nach allem was ich davon verstehe dürfte es keine Probleme damit geben da nichts weiter getan wurde als einen festen Wert durch eine Variable zu erstetzen und diese zu definieren und abzuspeichern.
Wenn jemand einen Fehler findet, oder einen anderen grund warum ich den ganzen Quatsch lieber wieder löschen sollte, bitte posten!