Map-Übergang

Dieser Artikel beschreibt Map-Übergänge. Es werden alle Möglichkeiten erläutert, mit denen der Spieler sich von einer Map zur anderen bewegen kann.

Weiterführende Links
  • Fortbewegen
    • Dieser Artikel beschreibt das Gehen, Rennen, Fahrrad fahren, Surfen und Tauchen.
  • Maps verbinden
    • Wie man zwei Maps miteinander verbindet und den Spieler zwischen denen reisen lässt.
  • Feldattacken
    • Manche Feldattacken können benutzt werden, um den Spieler woanders zu transportieren (z.B Teleport oder Fliegen).

 

Inhalt

Türen

Türen sind grundlegende Events, die dem Spieler ermöglichen von einen Ort zum anderen zu wechseln. Tür-Events sind deswegen so komplex aufgebaut, weil sie die Tür-Animation abspielen, den Spieler bewegen, einen Sound-Effekt abspielen und den Bildschirm auf- und abblenden.

Tür-Events besitzen zwei Seiten. Die erste Seite ist für das Betreten einer Tür, während die zweite Seite für den Fall ist, dass der Spieler von der Tür herauskommt.

Auch wenn Events nur ein Tile groß sind, kann man auch größere Türen besitzen. Man muss die Events nur richtig einstellen.

Die Tür-Grafiken sollten eine Charset-Grafik sein (Im Ordner Graphics/Characters). In den Beispielen der Tür-Events von Pokémon Essentials sieht man, wie genau das gemacht wird.

Seite 1

Diese Seite besitzt keine Bedingungen und wird durch Player Touch ausgelöst. Es besitzt die Grafik einer geschlossenen Tür. Im Normalfall lauten die Befehle folgendermaßen:

Beachte, dass die Befehle Change Screen Color Tone und Transfer Player auch für andere Arten von Spieler-Transport nützlich sind.

Seite 2

Diese Seite hat als Bedingung, dass der globale Switch 22 auf On ist. Zudem läuft das Event per Autorun. Die Grafik ist dieselbe wie die von der ersten Seite. Im Normalfall lauten die Befehle folgendermaßen:

Die Seite überprüft, ob der Spieler gerade auf das Event draufsteht. Ist dies der Fall, dann kommt der Spieler aus dieser Tür heraus. Wenn man also einen Teleport nach draußen machen will, dann sollte man als Standort die Tür selbst auswählen und nicht das Tile darunter.

Treppen

Treppen verhalten sich wie Türen, mit der Ausnahme, dass sie nicht animiert sind, wenn man darauf geht.

Aufgrund der Spielperspektive sind Seitentreppen ein Problem, da der Spieler nur einen halben Tile nach oben/unten gehen dürfte, wenn er ein Tile nach rechts/links geht. So eine Bewegung kann im RPG Maker XP nicht nachgestellt werden und in den meisten Fällen muss man sich damit arrangieren. Man kann den Spieler teleportieren lassen, bevor die falsche Bewegung sichtbar wird.

In Pokémon Essentials findet man Beispiele für Treppen.

Warptiles

Warptiles sind einfach nur Tiles, die den Spieler teleportieren, wenn er darauf tritt. Sie funktionieren genau wie Türen und Treppen, nur dass sie lediglich den Transfer Player-Befehl verwenden.

Man kann auch Animationen einfügen, wie z.B dass der Spieler sich dreht, bevor er teleportiert wird oder der Bildschirm blitzt oder dass das Warptile selbst animiert ist.

Höhleneingänge und -ausgänge

Es gibt spezielle Animationen, die man benutzen sollte, wenn man eine Höhle betretet bzw wieder verlässt. Diese Animationen werden durch die zwei Methoden pbCaveEntrance und pbCaveExit abgespielt. In den Beispielmaps befinden sich Beispiele.

Wie weiter unten erwähnt, sind diese Animationen mit Schaufler und Fluchtseil verbunden (d.h diese können in Höhlen benutzt werden).

Während des Surfens

Die normale Methode, um einen Spieler zu teleportieren würde das Surfen abbrechen, wenn diese benutzt wird. Um dies zu verhindern, muss man eine alternative Methode verwenden:

Das Script wird den Spieler auf eine andere Map transferieren, während er weiterhin surft. In diesem Beispiel hat das Ziel die Map-ID 42 und besitzt die Koordinaten 10,14. Der vierte Parameter ist optional und ist die Richtung, in der der Spieler guckt (standardmäßig behält er die Blickrichtung bei).

Dies erlaubt es dem Spieler in Unterwasserhöhlen und Ähnliches zu surfen.

Während des Tauchens

Die normale Methode, um einen Spieler zu teleportieren würde das Tauchen abbrechen, wenn diese benutzt wird. Um dies zu verhindern, muss man eine alternative Methode verwenden:

Das Script wird den Spieler auf eine andere Map transferieren, während er weiterhin taucht. In diesem Beispiel hat das Ziel die Map-ID 42 und besitzt die Koordinaten 10,14. Der vierte Parameter ist optional und ist die Richtung, in der der Spieler guckt (standardmäßig behält er die Blickrichtung bei).

Dies erlaubt es dem Spieler in Unterwasserhöhlen und Ähnliches zu tauchen.

Fliegen, Teleport und Schaufler

Siehe auch: Feldattacken

Die Attacken Fliegen, Teleport und Schaufler ändern den Standort des Spielers sofort.

Für mehr Informationen darüber, wie Schaufler den Fluchtpunkt auswählt (und wann es benutzt werden kann), siehe den Fluchtseil-Bereich darunter. Beide verwenden dasselbe System.

Fluchtseil

Das Fluchtseil ist ein Item, welches den Standort des Spielers ändert und ist in etwa dasselbe wie Schaufler. Es kann nur benutzt werden, wenn ein Fluchtpunkt gesetzt wurde und auch nur, wenn der Spieler keine abhängigen Events bei sich hat (z.B einen Partner-Trainer).

Meistens ist der Ort, an der der Spieler Fluchtseil/Schaufler verwenden kann, eine Höhle. In Höhlen verwendet man an den Ein- und Ausgängen die Methoden pbCaveEntrance und pbCaveExit (siehe oben). Diese Methoden setzen und löschen automatisch den Fluchtpunkt. Man muss diese also nicht manuell setzen. Wenn man den Fluchtpunkt setzen/löschen möchte, ohne dabei die Eingangs-/Ausgangsanimation abzuspielen, dann erfährt man unten wie das gemacht wird.

Wird eine Höhle oder ein anderer Ort mit Fluchtseil-Möglichkeit betreten, dann muss der Fluchtpunkt gesetzt werden ($PokemonGlobal.escapePoint). Dazu muss man einfach die Methode pbSetEscapePoint kurz vor der Teleportation verwenden (welches ein Eingang/Tür darstellen sollte). Diese Methode setzt den Fluchtpunkt auf die Stelle hinter dem Spieler (welcher direkt auf den Eingang stehen wird, wenn diese Methode aufgerufen wird).

Wird ein Ort mit Fluchtseil-Möglichkeit verlassen, dann muss der Fluchtpunkt wieder gelöscht werden. Dazu ruft man die Methode pbEraseEscapePoint bei jedem Map-Transfer auf, welches den Spieler aus dem Ort transportiert. Der Fluchtpunkt wird automatisch gelöscht, wenn man den Ort durch Fliegen, Teleport, Schaufler, Fluchtseil oder durch Ohnmächtig werden verlässt.

Der Effekt von Fluchtseil befindet sich im Script-Bereich PItem_ItemEffects.

Ohnmächtig werden

Besitzt der Spieler kein kampffähiges Pokémon mehr, wird er ohnmächtig und teleportiert sich zu dem Pokémon-Center mit dessen Krankenschwester er zuletzt gesprochen hat. Das passiert in der Regel, wenn das letzte Pokémon durch Gift besiegt wird (außerhalb des Kampfes) oder wenn man ein Kampf verliert.

Die Scripts, die den Spieler bei Ohnmacht teleportieren, befinden sich im Script-Bereich PField_Field. pbCheckAllFainted prüft dabei, ob alle Pokémon im Team besiegt sind und zeigt die dementsprechenden Nachrichten an, während Kernel.pbStartOver sich um die eigentliche Teleportation kümmert. Wird der Spieler ohnmächtig, weil er einen Kampf verloren hat, dann wird nur das letzte Script benutzt.

Der Ort an den der Spieler teleportiert wird, wird vom Script Kernel.pbSetPokemonCenter definiert. Dieser sollte am Anfang jedes Krankenschwester-Events stehen. Der Ort ist die momentane Position des Spielers, wenn er mit der Krankenschwester redet. Ist dieser Wert nicht gesetzt (d.h der Spieler hat noch mit keiner Krankenschwester gesprochen), dann werden stattdessen die Koordinaten der HomeMetadata verwendet.

Fällt der Spieler in Ohnmacht, dann wird der globale Switch, der in der Variable STARTING_OVER_SWITCH definiert wurde (im Script-Bereich Settings), auf true gesetzt. Standardmäßig ist das der globale Switch 1. Dies erlaubt es einem weitere Sachen einzustellen, wenn man zum letzten Heilpunkt zurückkehrt. Man könnte z.B einen NPC, der sich in der Nähe befindet, sagen lassen, dass man seine Pokémon nicht überanstrengen soll. Dazu verwendet man einfach ein Autorun-Event auf der Map, auf den der Spieler zurückkehren wird, welches den globalen Switch als Bedingung hat. Im Normalfall handelt es sich um die Mutter des Spielers.

Das Team des Spielers wird ebenfalls komplett geheilt.

Das Ortsschild

Manche Maps, die man betretet, lassen ein kleines Fenster oben links erscheinen, welches den Namen der Map enthält. Das wird als Ortsschild bezeichnet.

Nur Maps, die den ShowAreaMetadata gesetzt haben, zeigen ein Ortsschild. Im Normalfall sind es Outdoor-Maps und einige wichtige Indoor-Maps.

Die Scripts, die das Aussehen der Ortsschilder bestimmen, befinden sich im Script-Bereich PField_Visuals, in der Klasse LocationWindow. Diese Scripts werden von der Prozedur Events.onMapSceneChange im Script-Bereich PField_Field aufgerufen.

Im Falle, dass das Ortsschild eigentlich erscheinen sollte, der Spieler aber von einer Map kommt, der denselben Namen trägt, dann erscheint kein Ortsschild. Das ist nützlich wenn man größere Routen/Städte in mehrere Maps aufteilt. Dadurch wird das Ortsschild nicht mittendrin eingeblendet, wenn man durch die Route/Stadt geht (es erscheint also nur, wenn man die Map zum ersten Mal betretet).

Man kann auch bei anderen Maps einstellen, dass das Ortsschild nicht angezeigt wird. Dazu muss man im Script-Bereich Settings den Array NOSIGNPOSTS bearbeiten. Dort gibt man die Map-IDs der zwei Maps ein, bei denen das Ortsschild nicht angezeigt werden soll, wenn man zwischen denen reist. Die Reihenfolge der IDs ist nicht wichtig. Zudem kann man so viele Paare wie möglich einfügen. Beispiel:

Das Beispiel sorgt dafür, dass die Ortsschilder nicht angezeigt werden, wenn man von Map 4 zur Map 5 reist (und umgekehrt). Dasselbe gilt für Map 16 und 17, sowie Map 42 und 43.

Letzten Standort des Spielers aufzeichnen

Es gibt einen Array, welches die letzten Standorte aufzeichnet, die vom Spieler besucht wurden:

Dieses Array speichert die ID-Nummern der letzten 4 Maps, die der Spieler besucht hat, inklusive die Map, auf der sich der Spieler gerade befindet. Sie werden in der Reihenfolge von Neu nach Alt sortiert, d.h $PokemonGlobal.mapTrail[0] ist die aktuelle Map, $PokemonGlobal.mapTrail[1] ist die Map, die kurz davor besucht wurde, $PokemonGlobal.mapTrail[2] ist die Map davor usw.

Es wird im Script-Bereich PField_Field aktualisiert.