アイストマトバズーカのゲーム制作日記

いろいろ超初心者がゲーム制作に挑戦。現在RPGツクールMZでフリーゲーム制作中。フリー素材も作って置いてます。

MENU

【RPGツクールMZ】プラグインパラメータをゲーム中に変える初心者の試み(; ・`д・´)【プラグインコマンド化とPluginCommonBase.js】

こんにちは。

 

体調を崩してちょっと停止してしまいました。体調を崩したと言っても風邪程度のもので今後に影響を与えるやつではなくほぼ回復しました。

 

さて今回はRPGツクールMZ(RPG Maker MZ)のプラグインのハナシ。

ツクールMZはプラグインをセットすることで機能が追加されたり便利になったりしますね。

 

そしてそのプラグインにはいくつか種類があります。

①導入するだけで効果があるもの

②プラグインパラメータで設定する項目があるもの

③プラグインコマンドで効果を発動したり変えたりするもの

④プラグインパラメータとプラグインコマンド両方を使用するもの

⑤その他、メモ欄などを使って効果を設定するものなど

 

②と③の違いを説明すると、プラグインパラメータはプラグイン設定画面で値を編集するため、基本的にはゲーム中に値が変わらないことを意味します。(※値に変数やスイッチを指定できたりするものもあるため必ずではありません。)

プラグインコマンドはイベントコマンドと同じくイベント内に設定するものなのでゲーム中の特定条件で値が変わったりすることになります。

 

そのプラグインの特性によってどちらが適しているかをプラグイン制作者が考え選択したものになっており、ゲーム内で統一の値しかない場合は②のプラグインとして作られるでしょう。

 

しかし全ての事象に於いて絶対は無いもので、普通は変えなくていいものでも変えたいと思うゲーム制作者もいるかも知れません。

 

プラグインパラメータの値をゲーム中に変えるなら、A.プラグインコマンドを加えてやるか、B.パラメータに変数やスイッチを指定できるようにしてやるか、です。

(私が思いつく限りでは)

 

まずはAの方法をやってみます。Bの方法はPluginCommonBase.jsというプラグインを利用してパラメータに制御文字を使えるようにするというものですが最後のほうにちょっとだけ書きます。

 

Aの方法は当然かもですが②と③両方のプラグインの作り方が必要。

 

しかしながらプラグインの作り方だと別記事になっちゃいます。

難しいことはいいからとにかくパラメータをゲーム中に変更できりゃいいんだ!って人用に今回の記事ではマネしたらとりあえずできるような感じに書きますね。

但し…↓

※初心者がやってみた、という内容です。同じようにしてトラブルが起きたとしても責任は負いかねます。プラグインの利用規約をしっかり確認の上、自己責任でお願い致します。

※後述もしますが必ず狙った効果が得られるものではありません。可能性は低いと思ってください。

※間違ったことを言っている可能性も十分あります。

 

サンプルとして使うプラグインはこちら。

ITB_ResizeMessageWindow.js !メッセージウインドウのサイズを変更するプラグインです。中身がとっても単純なのでサンプルには持ってこい。

まずはメモ帳などのテキストエディタでプラグインを開きます。

 

中身↓

上の方にある ” * ” で始まっている行がプラグイン設定画面を開いたときに表示されるような内容です。その中で@paramとなっているところがパラメータ。

だいたいの場合はひとかたまりで空白行を挟んでいて見やすくなっているのですがこのプラグインはそうなっていませんねw 

まぁでも@helpのところはヘルプ欄の内容が書いてあるのでその上までってことはなんとなくわかるかと思います。

 

後半の "(()=>{" 以降がプラグインの本体部分。"(function(){" と始まっている場合もあります。稀にconst/var/let などから始まっているケースも。まぁ" */ "の後って解釈でもいいかも知れません。

 

まずは変更したいパラメータの部分をコピペします。@textや@descのところに説明があるのでどれがどのパラメータかっていうのはわかります。

 

例として”ウインドウ高さ(行)”のパラメータをプラグインコマンド化します。実際、通常4行のところを一時だけ3行に変えたいんです(私情)。

 

パラメータの直下、@helpの上にでも貼り付けておきます。

この貼り付けた部分を編集してプラグインコマンドにするのですが、まずは貼り付けた部分の上に@command setparavalueと書き加えます。setparavalueの部分は名前みたいなものなのでなんでもいいです。

@text と@desc も一応書いておきます。ゲーム制作者向け、つまり自分用なので適当でいいですけど。たぶん無くても動くとは思う。

 

続いて@paramのところを書き換えます。

@param mwrow →@arg mwrowc

大事なのはparamをargに変えること。その右はなんでもいいですが元の文字列から変えたほうが良いと思います。例ではcをつけただけ(コマンドのcのつもり)。

本体部分も弄ります。

 

プラグインの本体部分では最初にプラグイン名を定義しているハズです。

const pluginName = ○○○○○○

のところ。右辺はプラグインの名前が直接書かれてたり1行目を取得するように書かれてたりしますが左辺は99%同じ。pluginName のところが違う文字列の可能性もゼロではありませんが私が知る限りのプラグインでは同じ。違った場合は以降pluginNameのところをその文字列に置き換えてください。

 

その次あたりにパラメータ値をセットする箇所があると思うので探します。プラグイン名の次とは限らないのですがだいたいはそうだと思います。

const parameters = PluginManager.parameters(pluginName);

という文があったらラッキーです。ズバリそれです。この"parameters"にプラグインパラメータの値がすべて入っています。

さらにシングルクオーテーションやダブルクオーテーションでパラメータ名が囲われている部分を探してみましょう。

'○○○' や ”○○○”となっていて○○○が@paramの右側に書かれた文字列になっている箇所です。パラメータの値を変数へ格納している可能性が高いです。

 

例のように両方ある場合もあればどちらかしかない場合も有り得ます。お目当てのパラメータの値が格納されている変数を見つけたら const のところを let に変えます。

const parameters = pluginmanager.~ の文しか見つからなかったらそのconst を let に変えます。

もし初めから const じゃなくて var や let だったら変えなくて良いですが、その場所以外でも値の代入が行われてたりする可能性があるので注意。

 

そして直下に次を書き加えます。

'○○○' があったときのパターンはこう

    PluginManager.registerCommand(pluginName, "setparavalue", args => {
        mwrow = args.mwrowc;
    });

 

'○○○' が無くてconst parameters = pluginmanager.~しかないパターンはこう↓

    PluginManager.registerCommand(pluginName, "setparavalue", args => {
        parameters['mwrow'] = args.mwrowc;
  });
 

これはこういうものだと思ってそのまま書くのだ。

 

各文字列がどこから来ているかを示すと↓

これでプラグインコマンドを実行することでプラグインパラメータの値が割り当てられていたところがプラグインコマンドの値に置き換わることとなり、プラグインの効果が変わる可能性があります。

 

プラグイン次第ですが、サンプルのプラグインの場合、コアスクリプトと置き換わる部分がメッセージウインドウの表示のたびに呼び出されるところじゃないのです。

なのでプラグインコマンドを実行後すぐにメッセージウインドウを表示させても高さ(行数)は変わりません。

メッセージウインドウの高さ(行数)を表示毎に変更したければ、ベースとすべきプラグインがそもそもコレじゃないってことになります。

 

こんなのはプラグイン初心者が区別するのは難しいと思うので運任せみたいなものですね。やって試すしかないでしょう。

 

ちなみにゲームスタートと場所移動の時に更新されるっぽいのでマップ毎には変えることができそうです。私的にはこれなら利用可能。

(コマンド実行時にそれっぽい関数を呼ぶようにして表示毎に変更されるよう一度試みたのですが変な不具合が出たのでやめました。)

 

 

パラメータに変数・スイッチ(制御文字)を使えるようにする方法

パラメータに制御文字を使えるようにするには公式のPluginCommonBase.jsを利用することで簡単に可能です。

作者様による詳細ページ↓

プラグインコマンド化の方法のときに探した値をセットする箇所、

const parameters = PluginManager.parameters(pluginName);

const param = PluginManagerEx.createParameter(document.currentScript);

に置き換えます。名前は元の方に合わせた方が楽だと思います。今回の場合ならparameters。

なのでこう。

const parameters = PluginManagerEx.createParameter(document.currentScript);

 

こうするだけでパラメータに変数とスイッチの制御文字が使えるようになります。

 

しかし例に挙げたプラグインでは狙った挙動(リアルタイムにサイズが変わる)にはなりません。parametersの値を再度個別で定数にしており、その処理が走るのは起動時の1度だけだからです。

値が更新されるタイミングを考えて中身を弄らなければならない可能性があるのはこちらの方法でも同じ。対象のプラグイン次第。やって試すしかないでしょう。

 

プラグインコマンドを追加する方法だと、コマンド実行時に registerCommandのところが確実に走るので編集が必要な場合はプラグインコマンドのほうがやりやすいのかなと個人的には思いました。パラメータ値だけ置き換えられれば上手く行くって場合なら制御文字のほうが改変作業が楽ですね。(すべて初心者の感想です)

 

いずれにしてもプラグイン制作者が想定していることではないハズなので できたらラッキーくらいのつもりで試みましょう。あ もう一度言いますが改変可能であるか利用規約の確認はしてくださいね。

 

 

中途半端な結果となり申し訳ありませんが以上です。

ところで気づいたんですけど、このサイズ変更プラグインで行数増やしたときってスクリプト使わないと5行目以降の文章編集できないじゃんww

 

スクリプトはこちらのサイト様が参考になります↓

 

ありがとうございました。