PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [RPG Maker 2003] Teleportieren auf andere Map funktioniert nicht richtig



Vaulthas1987
30.12.2014, 17:15
Hallo Community,

also vorweg ist der Titel des Threads vielleicht nicht glücklich gewählt... Ich hoffe meine Beschreibung macht euch das Problem klar.

Also, ich erstelle in meinem Spiel ein eigenes Menü. Dieses basiert auf normalen Maps. Um nun im Menü teilweise in ein anderes Untermenü zu kommen,
soll eine "Enter Password"-Abfrage fungieren. So weit so gut. Ich will also die Taste 7 dazu verwenden, in das nächste Untermenü zu gelangen. Eigentlich sollte das kein Thema sein, dachte ich.

Ich habe auf der Map ein Event mit einem Parallel Process, der nach der Eingabe der Taste 7 ständig abfragt. Wird 7 gedrückt, soll ein Teleport auf die nächste Map erfolgen. Allerdings soll während des Teleports noch ein Event auf der neuen Map aufgerufen werden, welches zunächst dafür sorgt, dass im neuen Bildschirm die Events positioniert werden (sonst hätte man ein unschönes Bildwirrwarr).

Mein Event-Code sieht für die beschriebene Funktion so aus:

http://www11.pic-upload.de/30.12.14/mnoj4vobzvt.jpg

Wenn ich nun die "7" drücke, sieht man den Fade-Out des Screens und danach nur noch schwarzen Bildschirm. Drücke ich Tasten, kann ich aber hören, dass ich wohl auf der neuen Map bin (oder weiter auf der alten, das sieht man ja nicht^^). Den Übeltäter habe ich schon gefunden. Das ist der kleine Wait-Command, bevor der Screen wieder auftauchen soll. Lösche ich diesen raus, so taucht der Bildschirm zwar richtigerweise auf, aber das "Alles sortieren"-Event wurde nicht aufgerufen, sprich ich habe die Events kreuz und quer auf dem Bildschirm verteilt...

Ich habe schon alles ausprobiert und bin echt ratlos. Vor allem ärgert mich das so, weil ich diese Funktion anderweitig ja auch schon so benutze und es da funktioniert. An dem Event-Code habe ich nichts verändert, das habe ich vorher noch gefühlte 50 mal verglichen. :(

Wäre toll, wenn jemand eine Lösung für mein Problem hat :)

Kelven
30.12.2014, 17:48
Das Sortieren könntest du auf der neuen Map über einen Parallel Process machen lassen (den du dann mit Erase Event löschst). Diese Events werden direkt nach dem Teleport und vor dem Aufbau der Map schon ausgeführt. Und wenn sich der Spieler während das Menü aktiv ist nicht bewegen braucht, dann könntest du die Abfragen per Autostart-Event machen. Das ist mMn "robuster" als ein Parallel Process.

IndependentArt
30.12.2014, 18:04
ich stimme kelven bei dem parallel process und dem erase event zu.

noch andere tipps:
verwende keine effekte beim fade in und fade out. das dauert jedes mal ne sekunde oder so und erschwert das bewegen im menü. sondern benutze "instanteous"

verwende zur steuerung des menüs keine mapevents, sondern common events. ich hab das auch am anfang gemacht, bringt aber eher probleme. common events können nunmal global agieren, das is ein riesen vorteil.

(hab jetz nur flüchtig gelesen, antworte evtl später nochmal ausführlicher)

caesa_andy
01.01.2015, 03:45
Es gibt in allen Makerversionen bis hoch zum ACE einen schweren Bug der in Kombination mit Fades oder Teleports und einigen Eventfunktionen auftritt. Nach deine Beschreibung ist das hier glaube ich ein solches Problem.

Kurz gesagt, gibt es event funktionen, z.B. Move-Commands und Textbox-Befehle, die, wenn sie zwischen einem Fade Out und einem Fade In platziert werden, das System zum Crashen bringen. Diese Kommandos können nur ausgeführt werden, während der Screen sichtbar ist. Blendest du ihn mit einem Fade-Out aus, kann der Maker diese Kommandos nicht ausführen und blockiert jedes momentan im Prozess befindliche Event, dass ein solches Kommando aufruft.

Normalerweise findet man solche Fehler sehr schnell. Problematisch wird es aber in Kombination mit Parallelprozessen, weil diese oft schon während eines Teleports aufgerufen werden - und nicht erst, nachdem die Map "gültig" ist. Hier hat man also ein geringfügig anderes Timing bei des Ausführung. Wenn du jetzt beispielsweise in einem Event einen Fade-Out setzt und dann einen PP ausführst, der eine solche Crash-Funktion enthält...crasht das Spiel.
Für sich genommen sind beide Events wahrscheinlich völlig in Ordnung, das Problem ist das Timing, durch das die Events hier aneinander geraten. Dadurch, das der PP versucht eine bestimmte Anweisung auszuführen, die einen sichtbaren Screen erfordert, während das Bild durch das andere Event noch dem Fade-Out unterliegt, bleiben beide Events - und damit das Spiel - hängen.

Und soweit ich weis ist die "Set-Event-Position" Anweisung eine jener Anweisungen, die nicht während eines ausgeblendeten Screens ausgeführt werden kann. Deshalb vermute ich, das hier ein ähnliches Problem vorliegt. Du teleportierst auf die neue Map und callst dann dein Sortieren-Event. Dieses versucht vermutlich direkt im Anschluss die Events auf der neuen Map zu bewegen, kann das aber nicht, weil der Paralelprozess schon weiter arbeitet, während die Map noch geladen wird und der Screen nach dem Teleport somit noch ausgeblendet ist, wenn die Events bewegt werden sollen.

Um das Problem zu lösen musst du das Timing deiner Events so ändern, dass das neue Event erst dann anfängt, die Events auf der Map neu zu platzieren, wenn der Screen wieder sichtbar ist. Ich würde zuerstmal versuchen, einen "Wait" zwischen den Teleport und den Event-Call zu platzieren. Wenn das nicht klappt, schmeiß den Event-Call aus dem Script raus, und starte das neue Event über Autorun um sicherzustellen, dass es erst ausgeführt wird, wenn die Map gültig ist.

Vaulthas1987
02.01.2015, 18:07
Vielen Dank für die Antworten!

Dank eurer Hilfe und ein bißchen rumtüfteln klappt es nun wie gewünscht :)

Danke dafür, das hat mich echt etwas auf die Palme gebracht die letzten Tage :D