[MV] Mini-Tutorial: Eigene Optionen erstellen mit Yanfly Option Core

  • Hallo allerseits,


    ich hoffe, ich bin hier richtig und es gibt so ein Tutorial noch nicht - zumindest konnte ich keins finden.


    Da ich jetzt schon des öfteren vor dem Problem stand, das "Options Core" Plugin von Yanfly um eigene Punkte ergänzen zu wollen und nicht wusste, wie es geht und echt Mühe hatte, es überhaupt zum Laufen zu kriegen, dachte ich mir, ich mache mal ein Mini-Tutorial für alle, die vor dem gleichen Problem stehen.


    Zuerst brauchen wir das entsprechende Plugin von Yanfly.

    Liste aller Plugins von Yanfly (zu beachten ist, dass ein Teil der Plugins mittlerweile kostenpflichtig ist. Wer sie aber noch von früher hat, darf sie auch weiter benutzen.)

    Und hier gibt es das Option Core Plugin.

    Das müssen wir herunterladen und es in unseren Projektordner schieben unter /deinSpiel/js/plugins.


    Dann müssen wir es im Pluginmanager hinzufügen und einschalten:




    Das Plugin an sich hat eine Menge Unterpunkte und Einstellungen, auf die ich hier nicht eingehen werde. Yanfly erklärt die Funktionen in ihrem Hilfetext aber recht gut.


    Was aber, wenn wir noch eine weitere Option einbauen möchten? Wie zb. diverse Anzeigen, Sprache, Einstellungen die der Spieler selber umstellen können soll und die das Plugin von Haus aus nicht anbietet?


    Als Beispiel nehme ich mal eine Anzeige zum Gebietswechsel, damit der Spieler sieht, wo er die nächste Map betreten kann. In meinem Spiel verwende ich dafür einfach rote Pfeile:




    Oben sind deutlich zu erkennen die beiden roten Pfeile, die dem Spieler anzeigen, dass er hier das Gebiet verlassen kann. (Dies ist nur ein Beispiel - wie du es umsetzt, bleibt natürlich deine Entscheidung.)

    Aber was, wenn der Spieler diese Anzeige gar nicht sehen möchte? Dazu muss man dem Spieler die Möglichkeit im Optionsmenü anbieten.


    Bei mir sieht das so aus:




    Schaltet der Spieler "Zeige Kartenübergänge" aus, verschwinden die roten Pfeile im Spiel.

    Aber wie habe ich das gemacht?


    Dazu gehen wir in das Plugin und klicken auf "Options Categories" und dann auf die gewünschte Kategorie. In meinem Beispiel habe ich mich für "Allgemein" entschieden. Hier klickt man nun auf den Eintrag "Options List" und erstellt eine neue Zeile mit dem gewünschten Eintrag oder man kopiert eine bereits vorhandene Funktion, um sie zu editieren (dies ist leichter, da bereits alle Befehle voreingestellt sind).


    Hier mal als Beispiel die Einträge meiner Funktion mit den Kartenübergängen:




    Name: Einfach einen aussagekräftigen Namen hinschreiben, mit dem der Spieler was anfangen kann.

    Help Description: eine ausführlichere Erklärung, worum es geht.

    Symbol: dies wird nirgends angezeigt. Dient nur intern dem Maker für die Zuordnung. Hier unbedingt einen Text reinschreiben, den du dir merken kannst und der einzigartig ist, also noch nicht in den anderen Optionsunterpunkten verwendet wird. Dieses Symbol benötigen wir gleich noch. Ich habe es "changemap" genannt, da es um die Mapübergänge geht.

    Alle anderen Punkte können so gelassen werden, wie sie standardmäßig sind.

    Ausnahme: Wenn wir die Optionen "An" und "Aus" gern umbenennen möchten (standardmäßig sind sie wohl auf Englisch). Hierfür den Code bei "Draw Options Code" ändern in:

    Code
    1. var rect = this.itemRectForText(index);
    2. var statusWidth = this.statusWidth();
    3. var titleWidth = rect.width - statusWidth;
    4. this.resetTextColor();
    5. this.changePaintOpacity(this.isCommandEnabled(index));
    6. this.drawOptionsName(index);
    7. this.drawOptionsOnOff(index, "AN", "AUS");

    Die Texte "AN" und "AUS" kannst du so umbenennen, wie du sie im Spiel angezeigt bekommen möchtest.


    Jetzt haben wir die Option zwar eingebaut, so dass der Spieler sie ein- und ausschalten kann - passieren tut dadurch aber erstmal noch nix. Wir brauchen jetzt noch eine Abfrage, die das Ganze auch im Spiel umsetzt.

    Dafür habe ich gleich nach Spielstart einen Schalter eingebaut. Sobald man das Spiel startet, wird dieser Schalter eingeschaltet und bleibt es dann auch den Rest des Spiels über. Mit diesem Schalter bauen wir nun ein Common Event und fragen ab, ob der Spieler etwas an unseren Kartenübergang-Optionen geändert hat.


    Das sieht bei mir so aus:




    Was passiert hier?


    Die Skript-Abfrage "ConfigManager.changemap" ist die Zuordnung zum Befehl in Yanflys Plugin, den ich vorhin mit dem Symbol "changemap" erstellt habe. Diese Abfrage prüft nun, ob das Symbol changemap an oder aus ist. Wenn es an ist, schalten wir die Anzeige der Pfeile an, und wenn es aus ist, schalten wir die Pfeile aus.


    Auf diese Art und Weise kann man auch noch andere Sachen ins Optionsmenü einbinden, wie zb. die Auswahl der Sprache. (Wenn gewünscht, zeige ich gern, wie man zb. SRD Translation Plugin oder Iavras Übersetzungsplugin dort hineinbekommt.)


    Ich hoffe, dass diese Erklärung hilfreich war und bin natürlich offen für Feedback, Verbesserungsvorschläge, Fragen und Kritik. :)

  • schöne, verständliche Erklärungen. Optionen und Menüs erweitern sind nie so einfach und das plugin ist auch recht umfangreich mit den ganzen Einstellungsmöglichkeiten. Danke:thumbup:

  • Ist zwar schon etwas älter, aber knntest du das einmal zeigen?
    ich bekomme es nicht hin :(

    Puh, das ist schon wieder eine Weile her, dass ich mit Yanflys Options Menu gearbeitet habe. Mach damit schon länger nichts mehr.

    Habe es mal kurz versucht, nachzubauen, was ich damals gemacht hab.

    Müsste theoretisch genauso gehen wie ich es oben geschrieben habe, mit ein paar kleinen Änderungen natürlich:

    Code
    1. var rect = this.itemRectForText(index);
    2. var statusWidth = this.statusWidth();
    3. var titleWidth = rect.width - statusWidth;
    4. this.resetTextColor();
    5. this.changePaintOpacity(this.isCommandEnabled(index));
    6. this.drawOptionsName(index);
    7. this.drawOptionsOnOff(index, "Deutsch", "English");

    Die Texte "AN" und "AUS" einfach ändern in die gewünschten Sprachen.

    Und dann im Common Event:

    If ConfigManager.DEINSYMBOLNAME

    Plugin-Befehl SetTranslation Deutsch

    Else

    Plugin-Befehl SetTranslation English


    Fertig. Habs aber nicht getestet, da ich mit SRD Translation Engine noch nie wirklich klargekommen bin.


    Hoffe trotzdem, dass es hilft :)

  • Schade, klappt leider nicht jetzt ist das Spiel nurnoch auf English egal was ich mache xD

    Trotzdem Danke fr die Mühe ^^

    Das ist dann vermutlich ein Fehler mit SRD. Das Plugin hat einen Fehler, wenn man sein Spiel standardmäßig auf Deutsch macht. Du musst Standard Englisch eingeben oder den Fix laden (weiß grade nicht mehr, wo es den gab).

  • so hab was gefunden, falls nochmal jemand auf dieses Thema stößt ^^
    anstelle von


    Plugin-Befehl SetTranslation Deutsch

    Else

    Plugin-Befehl SetTranslation English


    benutzt man


    ConfigManager._language = X;

    Else

    ConfigManager._language = X;


    X entspricht dann den Wert 0 als Hauptsprache (bei mir Deutsch) und 1 für die zweite Sprache und dann immer so weiter 3,4,5,...

    auch wenn ich jetzt nicht wüsste wie man mit etwas anderes als drawOptionsOnOff nutzen kann xD