RPGツクールMZオリジナルのメニューボタンを作る

オリジナルのメニューボタンを作りたい場合はプラグインを自作します。

プラグインを作る前準備は
https://rpgmakerofficial.com/product/mz/plugin/make/koushiki.html
こちらの公式ページに詳しく載っていますのでその通りに作っていきます。

/*:
 * @target MZ
 * @plugindesc リスト上に表示されるプラグインの説明
 * @author 作成者名
 * @help プラグインの詳細な説明
 */

を一番上に書きます。
そして

(() => {
//全ての処理
})();

//全ての処理のところにスクリプトを入れたらなんでもプラグインになるのですが今回はオリジナルのメニューコマンドを実行するボタンを作ってみたいと思います。

addOriginalCommandsと言うのがrmmz_windows.jsにあるのでオリジナルのメニューコマンドを実行するボタンは自分で作れます。

今回はパーティ全員に何かしらの効果をかけるボタンを作ってみたいと思います。

//メニュー画面にボタンを作る準備
let MenuCommandWindow = Scene_Menu.prototype.createCommandWindow;
Scene_Menu.prototype.createCommandWindow = function() {
MenuCommandWindow.call(this);
this._commandWindow.setHandler('ApplyAll', this.commandApplyAll.bind(this));
};
//ボタンが押されたらパーティ全員に効果を施す
Scene_Menu.prototype.commandApplyAll = function() {
$gameParty.members().forEach(actor => actor.施したい効果);
this._statusWindow.refresh();
this._commandWindow.activate();
};
//メニュー画面にボタンを追加する
let OriginalCommands = Window_MenuCommand.prototype.addOriginalCommands;
Window_MenuCommand.prototype.addOriginalCommands = function() {
OriginalCommands.call(this);
this.addCommand('ボタンの名前', 'ApplyAll');
};

これを//全ての処理の中に入れればOK!

施したい効果は

recoverAll()
と書けばパーティ全員全回復しますし

addState(ステートID)
と書けばステートIDのステートをパーティ全員にかけますし

removeState(ステートID)
と書けばステートIDのステートをパーティ全員解除します。

ボタンを増やす場合は増やす分だけの変数が必要です。

//メニュー画面にボタンを作る準備
let MenuCommandWindow = Scene_Menu.prototype.createCommandWindow;
Scene_Menu.prototype.createCommandWindow = function() {
MenuCommandWindow.call(this);
this._commandWindow.setHandler('ApplyAll', this.commandApplyAll.bind(this));
this._commandWindow.setHandler('RemoveStateAll', this.commandRemoveStateAll.bind(this));
};
//ボタンが押されたらパーティ全員にステートを付与
Scene_Menu.prototype.commandApplyAll = function() {
$gameParty.members().forEach(actor => actor.addState(ステートID));
this._statusWindow.refresh();
this._commandWindow.activate();
};
//ボタンが押されたらパーティ全員のステートを解除
Scene_Menu.prototype.commandRemoveStateAll = function() {
$gameParty.members().forEach(actor => actor.removeState(ステートID));
this._statusWindow.refresh();
this._commandWindow.activate();
};
//メニュー画面にボタンを追加する
let OriginalCommands = Window_MenuCommand.prototype.addOriginalCommands;
Window_MenuCommand.prototype.addOriginalCommands = function() {
OriginalCommands.call(this);
this.addCommand('全員のステート付与', 'ApplyAll');
this.addCommand('全員のステート解除', 'RemoveStateAll');
};

これを利用して自分でステートを作り、タイプ:「特殊フラグ」、内容:「自動戦闘」を入れておけば自動戦闘ON、OFFボタンを作る事が出来ます。

稼働サンプルはRPGツクールMZ素材スライムのページRPGツクールMZ素材子供ドラゴンSimpleFantasyにあります。

他の効果は
https://rpgmakerofficial.com/product/mz/plugin/javascript/script_reference/gamedate.pdf

に載っています$gameParty.members()[n]のプロパティ、メソッド名のパーティに効果をかける系が色々使えると思います。
(そのままでは使えない物もあります)

工夫して是非自分のオリジナルプラグインを作ってみて下さい♪

コメント