【解決済】メニューを開く処理で装備画面を表示させたい

返信する
アバター
Sadame Hanabiki
記事: 14
登録日時: 2020年9月10日(木) 21:59

【解決済】メニューを開く処理で装備画面を表示させたい

投稿記事 by Sadame Hanabiki »

メニュー画面を開いた時に、通常のメニュー画面ではなく、いきなり装備画面を開くようにしたいと考えているのですが、必要な処理を教えていただけないでしょうか?

試したこととして、
rmmz_scenes.js 内の"Scene_Map.prototype.callMenu"のSceneManager.push()内の記述を"Scene_Equip"に修正することで、メニューボタンを開いた場合に装備画面が表示されると思ったのですが、
装備画面への遷移は出来たのですが、なぜか通常表示されるはずのアクターの顔画像が1回目にメニューを開いた時に表示されなくなってしまいました。(なぜか2回目以降は表示されます)

【ソースコード修正内容】
Scene_Map.prototype.callMenu = function() {
SoundManager.playOk();
SceneManager.push(Scene_Equip);
Window_MenuCommand.initCommandPosition();
$gameTemp.clearDestination();
this._mapNameWindow.hide();
this._waitCount = 2;
};

何か処理が必要なのだとは思うのですが、把握することが出来ませんでした。
こちら、正常に表示させるために他に改造をするべき点など何かあればご指摘をお願い致します。
最後に編集したユーザー Sadame Hanabiki [ 2022年11月29日(火) 20:35 ], 累計 1 回
アバター
Plasma Dark
記事: 731
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: メニューを開く処理で装備画面を表示させたい

投稿記事 by Plasma Dark »

なぜか通常表示されるはずのアクターの顔画像が1回目にメニューを開いた時に表示されなくなってしまいました。
顔グラのローディングが間に合っていないためです。
通常、メニューを開く際には画像のロードなどの諸々の準備が整った後に、メニューのパーティメンバー一覧をリフレッシュする処理が行われます。
この処理は Scene_Menu.prototype.start に書かれています。

装備画面でも同様にするのが良いと思います。

rmmz_XXXX.js を直接書き換えるとコアスクリプトのアップデート時にすべて巻き戻ってしまうので、以下のようなプラグインを読み込んで使用してみてください。

コード: 全て選択

(() => {
  'use strict';

  Scene_Map.prototype.callMenu = function () {
    SoundManager.playOk();
    SceneManager.push(Scene_Equip);
    Window_MenuCommand.initCommandPosition();
    $gameTemp.clearDestination();
    this._mapNameWindow.hide();
    this._waitCount = 2;
  };

  const _Scene_Equip_start = Scene_Equip.prototype.start;
  Scene_Equip.prototype.start = function () {
    _Scene_Equip_start.call(this);
    this._statusWindow.refresh();
  };
})();
全くの余談ですが、メニューシーンが完全に不要で、イベントコマンドからも開けなくて良いとするならば、 callMenu の処理を上書きする箇所は

コード: 全て選択

Scene_Menu = Scene_Equip;
としてしまう手もあります。
アバター
Sadame Hanabiki
記事: 14
登録日時: 2020年9月10日(木) 21:59

Re: メニューを開く処理で装備画面を表示させたい

投稿記事 by Sadame Hanabiki »

Plasma Dark様

おかげ様で問題を解決することが出来ました。
大変わかりやすい丁寧な解説をしていただき、ありがとうございました。
返信する

“MZ:質問”に戻る