【ツクールMZ】バトル中の選択肢でステータスウィンドウを表示する

この記事は約4分で読めます。

RPG ツクール MV の後継の MZ なんて出てたんですね。
昨日存在を知って、昨日までセールだったらしいのでなんとなく買いました。

 

で、本題。
RPG ツクール MZ で、『メッセージや選択肢を表示すると勝手にステータスウインドウが消える』っていう困った仕様があります。
例えばバトル中に現在のアクターのステータスをみた上で、選択を決定したいっていうシチュエーションが作れないんですよね。

ツクール MV だと以下のようなフォーラムがあって

【解決済】戦闘中にメッセージや選択肢を表示してもステータスウインドウが消えないようにしたいです。
https://forum.tkool.jp/index.php?threads/%E3%80%90%E8%A7%A3%E6%B1%BA%E6%B8%88%E3%80%91%E6%88%A6%E9%97%98%E4%B8%AD%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%84%E9%81%B8%E6%8A%9E%E8%82%A2%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%A6%E3%82%82%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%A6%E3%82%A4%E3%83%B3%E3%83%89%E3%82%A6%E3%81%8C%E6%B6%88%E3%81%88%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99%E3%80%82.1544/

このような神様みたいな人が出てきて質問者以外をも助けてくれるのですが、
このプラグイン「BattleStatusWindowAlwaysOpen」は残念ながら MZ では動きません。

MZ はリリースされてさほど時間がないからなのか、まだ無いんですよね。

で、私はプログラマじゃない初心者でプラグインの作り方とか、
サッパリよく分からないので、スクリプトを直接書き換えることで解決しました。

「rmmz_scenes.js」の 3050行目あたり、関数「updateStatusWindowVisibility」

Scene_Battle.prototype.updateStatusWindowVisibility = function() {
if ($gameMessage.isBusy()) {
        if ( $gameMessage.isChoice()) {

           this._statusWindow.open();
        }else{
this._statusWindow.close();
        }
} else if (this.shouldOpenStatusWindow()) {
this._statusWindow.open();
}
this.updateStatusWindowPosition();
};

〇DIFF

***************
*** 3052 ****
! this._statusWindow.close();
--- 3052,3058 ----
! if ( $gameMessage.isChoice()) {
!
! this._statusWindow.open();
! }else{
! this._statusWindow.close();
!
! }

赤字が追加したところ。

isBusy() でメッセージウィンドウが使われているかを判別しているっぽいですが、
$gameMessage.isChoice() で「選択肢か?」をさらに判定しています。
結果、選択肢であれば(close しなきゃ良いだけなので特に意味なく)
ステータスウィンドウをOpen しています。

この判定をしておかないと、選択肢以外のメッセージの時まで、
ステータスウィンドウが開きっぱなしになっちゃいます。(こちらは閉じてほしい)

同じことで困っている人がいたら参考になればよいのですが、デグレを引き起こすかもしれないし、
「ここは ~っぽい!」なノリで書き換えているから自己責任でお願いしますね。

神様みたいな人がプラグインをリリースされたら、
バックアップから戻してプラグインを適用してからこの記事の事は忘れてください。

タイトルとURLをコピーしました