筆者は普段から、RPGツクールMV/MZに関する様々な質問を見ています。
時折「コアスクリプトを直接書き換えて変更を実現しようとする」人を見かけます。
これはお勧めできない行為です。
これをプラグインで実現する方法を理解すると、管理がとても楽になります。
コアスクリプトを書き換えるデメリット
コアスクリプトを直接書き換えてしまうと下記のようなデメリットがあります。
- コアスクリプトの変更箇所を把握するコストが大きい。
- コアスクリプトが更新・破損して、入れ替わった場合、変更箇所が消えてしまう。
- 他のプラグインを入れた時に、不具合が生じる(競合する)可能性が上がり、調査も難しくなる。
これらから、変更箇所をプラグインにしてしまう事をお勧めします。
プラグインを作る
今回は、RPGツクールMZでMPを表示しない方法を例にします。
RPGツクールMVでもやり方は同じですので、「自分は今の作成中のゲームで直接書き換えてるよ」という人はぜひ、変更箇所が分かるうちにプラグインにしてしまうことをお勧めします。
スクリプト内を検索して、変更箇所を突き止められるようになったら、プラグインを作れるようになるのは、あと一歩もかかりません。
テキストエディタを用意
筆者は Visual Studio Code(無料)を使用しています。
azure.microsoft.com/ja-jp/products/visual-studio-code/
これはメモ帳でも何でも良いのですが、UTF-8(文字コード)で保存できる必要があります。
UTF-8を指定できるエディタであれば、とりあえず動きます。
できれば、下記機能があるとベターです。
- BOMあり、なしを指定できる。(ツクールコアと合わせるとBOMなしです)
- 改行コードを指定できる。(ツクールコアと合わせるとLFです)
- コードを色分け表示できる。
- フォーマッター(コード自動整形機能)がある。
実際にプラグインを作る
まず、プラグインの雛形を用意しました。
この書き方は、現時点では深く考えず「この中に書けば動くんだな」くらいの認識で良いです。
/*:
* @target MZ
* @plugindesc 一覧に表示される概要
* @author 作者名
*
* @help
* 動作内容をメモ
*/
(() => {
"use strict";
//動作コード
})();
実際にコードを書く
コードを書く前に「その場所はどうやって探すんだ?」という疑問はあると思います。
これについては次の記事(プラグインの作り方入門その2:コアの変更箇所を検索)で触れています。
この先は「既にコアを書き換えてしまっている人向け」に具体例として書いています。
rmmz_windows.js 内にある Window_StatusBase.prototype.placeBasicGauges がHP、MP、TPのゲージ表示を決めています。
ここからMPを表示させる部分を動作させなければ、表示されなくなります。
(あくまで表示させないだけで機能は残ります)
Window_StatusBase.prototype.placeBasicGauges = function(actor, x, y) {
this.placeGauge(actor, "hp", x, y);
this.placeGauge(actor, "mp", x, y + this.gaugeLineHeight());
if ($dataSystem.optDisplayTp) {
this.placeGauge(actor, "tp", x, y + this.gaugeLineHeight() * 2);
}
};
上記を下記のようにします。
Window_StatusBase.prototype.placeBasicGauges = function(actor, x, y) {
this.placeGauge(actor, "hp", x, y);
// this.placeGauge(actor, "mp", x, y + this.gaugeLineHeight());
if ($dataSystem.optDisplayTp) {
this.placeGauge(actor, "tp", x, y + this.gaugeLineHeight() * 2);
}
};
MPの表示らしき箇所の行の最初に「//」を入れました。
これはコメントアウトという、本来はコード内にメモをする機能です。
1行の中に//が書かれている箇所より後ろの文字は処理で無視されます。
削除しても良いのですが、最初の頃は元がどうだったのか覚えていないと思うので、この方法を推奨します。
この内容をプラグインの雛形の動作コードの箇所に貼り付けます。
/*:
* @target MZ
* @plugindesc MPを非表示にする
* @author munokura
*
* @help
* MPを非表示にする
*/
(() => {
"use strict";
Window_StatusBase.prototype.placeBasicGauges = function(actor, x, y) {
this.placeGauge(actor, "hp", x, y);
// this.placeGauge(actor, "mp", x, y + this.gaugeLineHeight());
if ($dataSystem.optDisplayTp) {
this.placeGauge(actor, "tp", x, y + this.gaugeLineHeight() * 2);
}
};
})();
この内容のファイルを ~.js の名前で保存します。
~の部分は半角英数字を推奨しますが、日本語でも一応は動作します。
これをpluginsフォルダに入れて、プラグイン管理から有効化します。
動作させると、メニューや戦闘画面で表示されるゲージからMPが消えたのを確認できます。
プラグインを修正する
各シーンを見ると分かりますが、このゲージはメニューだけでなく、ステータスや戦闘シーンでも同様に変化します。
HPとTPの位置が離れてしまっているので、HPの表示をもともとMPが表示されていた場所に変更します。
// this.placeGauge(actor, "hp", x, y);
this.placeGauge(actor, "hp", x, y + this.gaugeLineHeight());
HPの表示が一段下がり、TPと隣合わせで不自然な印象が減りました。
次のステップ
この記事では、「既にコアを書き換える場所を見つけて、直接書き換えてしまっている人」向けに情報整理しました。
次のステップ「プラグインの作り方入門その2:コアの変更箇所を検索」では、自分の希望がコアのどこを変えることで変更できるか、変更箇所を探す方法の情報を整理します。
コメントを投稿するにはログインしてください。