[Scripting] Plugin Parameter (MV)

  • i_RMMV


    Hey! Heute gibt es ein weiteres Tutorial von mir zum Thema Scripting/Plugins für den RPG Maker MV.


    Voraussetzungen:

    • Ihr braucht ein Programm, mit dem man programmieren kann, da es im MV keinen eingebauten Editor mehr gibt, wie es beim VX Ace war. Ich benutze Notepad++ (Download).
    • Dieses Tutorial baut auf dem ersten Teil auf (Link).


    Grundlage für dieses Tutorial ist das Plugin, welches wir im ersten Tutorial erstellt haben. Wie Ihr sehen könnt, habe ich noch ein paar Dinge hinzugefügt.

    Heutiges Thema: Plugin Parameter


    Wir ihr sehen könnt habe ich das Plugin schon um einige Dinge erweitert.


    Imported Object
    Das ist ein globales Objekt. Der Ausdruck Imported II {} prüft, ob das Objekt bereits definiert wurde. Falls ja, wird das schon vorhandene Imported Objekt der Variable zugewiesen. Andernfalls wird mit dem Object-Literal (mehr Infos hier) ein neues leeres Objekt erzeugt. Danach setzen wir die Eigenschaft (im englischen Property) WAY_TitleSceneAddon auf true, um zu signalisieren, dass unser Plugin importiert wurde.
    (mehr Infos zu Objekteigenschaften und der Punkt-Notation hier).


    Die meisten Plugin Coder verwenden das, denn damit kann man ganz leicht überprüfen, ob dieses Plugin verwendet wird. Das spielt zum Beispiel eine Rolle, wenn ich bestimmte Funktionsweisen anpassen muss, um Inkompatibilität von Plugins zu verhindern oder wenn ich ein Plugin schreibe, dass ein anderes Plugin voraussetzt.


    Namespace
    Im ersten Tutorial haben wir ja ein Nametag kennengelernt. Dieses werden wir heute noch für weitere Dinge benutzen. Wir legen von unserem Nametag ein globales Objekt an. Über dieses Objekt haben wir Zugriff auf alle unsere Plugins.


    Jetzt können wir endlich mit dem eigentlichen Thema beginnen.:)


    Plugin Parameter
    Plugin Parameter sind ein echt praktisches Feature des MV. Man kann damit ganz leicht Werte im Pluign ändern. In den früheren Makern musste man immer in den Code reinschauen und dort die Werte anpassen. Gerade für Anfänger ist das vielleicht gar nicht so leicht. Deshalb hat man über den Plugin-Manager Zugriff auf die einzelnen Pluign Parameter.


    Manchmal sind sie aber echt nervig, da es gerade bei vielen Plugin Parametern im Editor echt unübersichtlich werden kann.


    JavaScript
    1. //=============================================================================
    2. // Plugin Parameters
    3. //=============================================================================
    4. var params = PluginManager.parameters('WAY_TitleSceneAddon');


    Um auf meine Plugin Parameter Zugriff zu bekommen, verwendet man die Funktion PluginManager.parameters(pluginName). Die Funktion gibt ein Array zurück, welches wir in der Variable params speichern (mehr zu Arrays hier).

    Es ist wichtig, dass das Plugin genauso heißt, wie der Parameter der übergeben wird. Die Funktion rufen wir in userem IIFE Ding ganz oben auf.


    Um einen Plugin Parameter im Editor hinzuzufügen, verwendet man eine ganz bestimme Methode. Die Plugin Parameter werden als Kommentar oben eingefügt.
    Mit unserem Plugin können wir ja die Position des Command Windows ändern. Damit man nicht jedes mal, wenn man die Position ändern will, in den Code schauen muss, fügen wir Plugin Parameter hinzu.



    Plugin Paramter bestehen aus mehreren Teilen. Den Namen des Parameters gibt man mit @param an. Danach kann man mit @desc eine kleine Beschreibung hinzuzufügen.

    Außerdem kann man dem Parameter noch einen default Wert geben, indem man @default benutzt. Jedoch könnte man die Letzten beiden auch weglassen.


    Wenn wir nun in den Plugin-Manager schauen, können wir unsere beiden Parameter sehen und auch Werte eintragen. Diese Werte wollen wir dann für die Command Window Position nutzen.


    JavaScript
    1. //=============================================================================
    2. // Plugin Parameters
    3. //=============================================================================
    4. var params = PluginManager.parameters('WAY_TitleSceneAddon');
    5. WAY.TitleSceneAddon.x = Number(params['Command Window X']);
    6. WAY.TitleSceneAddon.y = Number(params['Command Window Y']);


    Da params ein Array ist, können wir über den Namen des Parameters auf den Wert zugreifen und speichern diese jeweils in einer Variable.
    Die beiden Variablen können wir jetzt in unserer Funktion updatePlacement verwenden. Aber hier müssen wir aufpassen. Die Werte sind eine Zeichenkette (im Englischen String) deshalb müssen wir diese erst zu einer Zahl umwandeln. Dazu nutzen wir die Funktion
    Number(n), die beliebige Werte zu einer Zahl umwandelt (mehr Infos zu Number hier).


    JavaScript
    1. //=============================================================================
    2. // Window_TitleCommand
    3. //=============================================================================
    4. Window_TitleCommand.prototype.updatePlacement = function() {
    5. this.x = WAY.TitleSceneAddon.x;
    6. this.y = WAY.TitleSceneAddon.y;
    7. };


    Wir können noch weitere Parameter hinzufügen, wie den Namen des Quit Commands, Command Alignment und die Opacity vom Command Window.



    Wir speichern uns die Werte wieder in Variablen.


    JavaScript
    1. WAY.TitleSceneAddon.commandName = params['Command Name'];
    2. WAY.TitleSceneAddon.opacity = Number(params['Command Window Opacity']);
    3. WAY.TitleSceneAddon.align = params['Command Text Align'];


    Wir ersetzen den vorherigen Namen des Command einfach mit der Variable _.commandName. Außerdem prüfen wir vorher mit einer If-Bedingung, ob ein Name eingetragen wurde, wenn nicht fügen wir kein Command hinzu (mehr Infos zu If hier).


    JavaScript
    1. var _Window_TitleCommand_makeCommandList = Window_TitleCommand.prototype.makeCommandList;
    2. Window_TitleCommand.prototype.makeCommandList = function() {
    3. _Window_TitleCommand_makeCommandList.call(this);
    4. if (WAY.TitleSceneAddon.commandName !== '') {
    5. this.addCommand(WAY.TitleSceneAddon.commandName, 'exitGame');
    6. }
    7. };


    Mit der Funktion itemTextAlign können wir das Alignment bestimmen. Die Funktion hat als Rückgabewert entweder 'left', 'center' oder 'right'. Dei Funktion fügen wir einfach unserem Plugin hinzu.

    JavaScript
    1. Window_TitleCommand.prototype.itemTextAlign = function() {
    2. return WAY.TitleSceneAddon.align;
    3. };


    Außerdem erweitern wir die Funktion createCommandWindow. Nachdem das Command Window erstellt wurde, setzen wir die Opacity auf unseren Wert.


    JavaScript
    1. var _Scene_Title_createCommandWindow = Scene_Title.prototype.createCommandWindow;
    2. Scene_Title.prototype.createCommandWindow = function() {
    3. _Scene_Title_createCommandWindow.call(this);
    4. this._commandWindow.setHandler('exitGame', this.commandExitGame.bind(this));
    5. this._commandWindow.opacity = WAY.TitleSceneAddon.opacity;
    6. };


    Das komplette Plugin sieht nun so aus.



    Vielen Dank für's lesen! Ich hoffe es hat Spaß gemacht und es konnte einen kleinen Einblick geben, wie man mit Plugin Parametern arbeitet und was man damit so alles anstellen kann.;)


    lg

    waynee95







  • Warum auch immer sind alle Kommentare aus den Codeblöcken verschwunden, was irgendwie echt doof ist, weil Plugin Parameter ja mit Kommentaren definiert werden.


    Ich habe keine Ahnung warum das passiert ist, ich hoffe ich kann diese bald nachtragen.

  • Um es schnell zu fixen vllt den kompletten code extern hochladen damit man reingucken kann...

    Danach kannst du ja immernoch der sache nachgehen.

    Alles was ich sage ist nicht persönlich zu nehmen und bezieht sich idR auf das aktuelle Thema.
    Rechtschreibfehler sind bitte zu sammeln und im richtigen Papierkorb zu entsorgen.