Pokémon Spiel

  • Hallo,

    Ich erstelle gerade mein eigenes Pokémon Spiel. Und hänge gerade beim Arenaleiter fest. Wie lautet das Script zum Arenaleiter. Wenn er 3 Pkmn einsetzt, dass auch ich nur 3 Pkmn einsetzen darf? Ich würde gerne ein Auswahl Verfahren haben.

    Kann mir jemand weiterhelfen?

  • Mit den Infos kann dir wohl kaum einer helfen.


    1. Welchen Maker nutzt du?

    2. Welche Script nutzt du?


    Ich habe mir letze Woche Pokemon Furui Sekai runtergeladen. Ich weiß nicht mit welchen Maker es erstellt wurde, aber alle Daten sind offen.

    40x40 Pixelgröße und die Script sind .TXT - Daten. Über 850 Pokemon vorprogrammiert :-)

    Daher währe es gut zu wissen, womit du arbeitest.

  • Pokemonkämpfe sind aber kein Standard-Inhalt des RPG Makers.


    Nutzt du für den RPG Maker XP irgendwelche gedownloadeten Skripte oder Erweiterungen für Pokemon? Oder baust du es von Grund auf selbst?

  • Hier ist das Script zum Arenaleiter. Und dafür benötige ich ein Script der besagt, dass ich nur zwei oder drei Pkmn einsetzen darf. Cool wäre es wenn ich ein Auswahlverfahren hätte, dass ich zwei oder drei Pkmn von den sechs pokemon im Team auswählen kann und mit diesen den Arenaleiter herausfordern kann. Das wäre die Ideallösung bin aber gegenüber anderen Vorschläge nicht abgeneigt. Mir ist wichtig das es bei einem 2 vs 2 oder 3 vs 3 hinausläuft, auch wenn ich bereits 6 pkmn im Team habe.

  • Da es keine wirkliche Funktion gibt um n Pokémon aus seinem Team auszuwählen (geschweige denn mit n Pokémon aus dem Team einen Kampf zu starten), wird das ganze etwas komplizierter, als du vielleicht denkst :S


    Es gibt eine Dokumentation und dort einen Eintrag wie man aus seiner Party 1 Pokémon auswählt: Link

    Wir müssen also:

    1) Überprüfen ob der Spieler überhaupt 3 Pokémon hat. $Trainer.ablePokemonCount >= 3

    2) In einer Schleife den Spieler ein Pokémon auswählen lassen. pbChooseAblePokemon(var1, var2)

    var1 ist die ID der Variable in welcher der Index des ausgewählten Pokémon gespeichert wird

    var2 ist der (Nick-)Name des ausgewählten Pokémon

    3) Überprüfen ob der Spieler die Auswahl abgebrochen hat. var1 < 0

    4) Überprüfen ob der Spieler ein bereits ausgewähltes Pokémon erneut ausgewählt hat.


    Nun haben wir zwar 3 Pokémon ausgewählt, allerdings müssen wir ja auch noch einen Kampf, nur mit den 3 starten.

    Da es keinen Befehl gibt um einen Kampf nur mit n Pokémon aus der Party zu starten, müssen wir die nicht ausgewählten Pokémon

    1) Speichern

    2) Entfernen

    3) Nach dem Kampf wieder hinzufügen


    Dazu müssen wir erstmal herausfiltern, welche wir überhaupt entfernen müssen. Das kann man mit den 3 Indexen, die beim Auswählen gespeichert wurden.

    Vorzugsweise sind diese 3 Indexe in einem Array, wodurch man eine Schleife durch die gesamte Party ziehen kann und alle Pokémon, die nicht als Index in dem Array gespeichert wurden, speichern und entfernen kann.

    Dazu erstellen wir ein neues Array, in welchem dann die Referenzen zu den Pokémon gespeichert werden. In derselben Schleife können die Pokémon auch direkt entfernt werden, allerdings muss sie rückwärts ablaufen,

    da sich sonst die Indexe ungewollt verschieben. Nun haben wir in unserer Party nur noch die ausgewählten Pokémon.


    Der Kampf startet, egal ob gewonnen oder verloren, müssen die Pokémon nach dem Kampf wieder hinzugefügt werden. Wir erstellen also noch eine Schleife, diesmal durch das Array mit den Referenzen

    und benutzen pbAddPokemonSilent um sie wieder hinzuzufügen (Zum Glück nimmt die Funktion Referenzen...)


    Das hat zwar wieder ziemlich lang gedauert, aber irgendjemand muss es ja machen :/

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von Grandro ()

  • So schon mal herzlichen Dank für deine Mühe... Das hat sicherlich eine Weile gedauert das zu erstellen.


    Ich verstehe nur die Hälfte davon, da ich erst angefangen habe. Mal schauen wie ich dies in die Praxis umsetzen kann.

  • Mein Problem bei deiner Beschreibung die sehr ausführlich war ist, dass ich nicht weiß wie man die Arrays schleifen einbaut. oder diese Variable. Sind das die Conditional Branches? beim RPG maker

  • Hey ich hab mir dein Projekt mal angeschaut. Folgendes sollte nicht zu sehen sein.


    Hab das jetzt mal kopiert, aber bei deinem Projekt ist dies auch sichtbar. Aber zumindest funktioniert es bei dir schon mal so wie ich es mir vorgestellt habe. Das ist ganz schön kompliziert ?? ich habe es mir leichter vorgestellt.

    Gibt es eine einfachere Lösung? Z.b das ein NPC mir den Weg versperrt und mir erst Platz macht, wenn mein Team <=3 oder so ist. Bei Variante eins Blick ich nämlich nur zur Hälfte durch.

  • Stimmt, habe ich leider nicht drüber nachgedacht. Mein Fehler.

    Ich werde das Projekt wieder runternehmen, mehr kann ich sowieso nicht tun um die Frage zu beantworten...


    Du kannst die Texte natürlich löschen, auch Variablen Indexe musst du gegebenenfalls anpassen.

  • Wenn du nen NPC machen willst, der dir den Weg versperrt, solange du mehr als 3 Pokemon im Team hast, müsstest du einfach

    Code
    1. $Trainer.party.length > 3

    als Script in einen Conditional Branch reinpacken können, um das zu überprüfen.

    Da würde dann der Blockadetext reinkommen, und in das else das Freimachen des Weges.

  • Jain, das Problem dabei wäre ja, dass das nur kampffähige Pokemon zählt, was ja an sich kein schlechter Ansatz ist, aber so könnte man z.B. zwei besiegte und drei kampffähige Pokemon im Team haben, den NPC ansprechen und durchgehen, und die besiegten Pokemon dann wieder heilen, wenn ich das richtig verstanden habe. (Ansonsten korrigiert mich gerne)

    Was ich da noch als Möglichkeit sehe, wäre, die beiden in einer kombinierten Abfrage zu verwenden:

    Code
    1. $Trainer.party.length <= 3 && $Trainer.ablePokemonCount >= 3

    Dies würde dann zunächst überprüfen, ob man 3 oder weniger Pokemon im Team hat, und dann noch, ob mindestens 3 Pokemon kampffähig sind.

  • Hey vielen Dank für die Zahlreichen Antworten. Ich werde es mal probieren. dieses Fangame, was ich erstelle ist nur für mich und nicht für den weiterverkauf etc. gedacht. Siehe Uranium und Co.