【解決】左上のマップ名を常に表示したい

返信する
おのき
記事: 14
登録日時: 2017年8月28日(月) 18:07
連絡する:

【解決】左上のマップ名を常に表示したい

投稿記事 by おのき »

お邪魔します。
今回,左上に表示されるマップ名を常に表示するため以下のプラグインを追加しました。
しかし現状ではメニューを開いて閉じると消えてしまいます。
たぶんScene_Mapの中でthis._mapNameWindow.open()を呼び出すと思うのですが,
どこで呼び出すのがいいのか知りたいです。

あと,他にも変更した方がいい箇所がありますでしょうか。
私のゲームではエンカウントしないので戦闘シーンは弄らなくていいですが。
アドバイスよろしくお願いします。

コード: 全て選択

(function() {
  'use strict';//厳格モード

  /////////////////////////////////////////////////////////////////////////////
  //Window_MapName
  Window_MapName.prototype.update = function() {
    Window_Base.prototype.update.call(this);
    if (this._showCount > 0 && $gameMap.isNameDisplayEnabled()) {
      this.updateFadeIn();
      //this._showCount--;
    } else {
      this.updateFadeOut();
    }
  };

  Window_MapName.prototype.updateFadeIn = function() {
    if (this.contentsOpacity < 256) {
      this.contentsOpacity += 16;
    }
  };
})();
最後に編集したユーザー おのき [ 2017年9月01日(金) 17:18 ], 累計 1 回
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 【】左上のマップ名を常に表示したい

投稿記事 by しぐれん »

マップ名の表示は、Scene_Map.prototype.start()で最初のマップ表示が行われています。
シーン開始時にこの関数が呼び出されますが、直前のシーンがマップ(≒別のマップから移動してきた)場合のみ名前を表示します。
常に表示したいのであれば、Scene_Map.start()に条件をチェックせずにマップ名ウィンドウを開く処理を追加しましょう。
時間経過で閉じてしまうので、Window_MapNameのupdateも必要に応じて改造してください。
現在、プラグイン依頼はお休み中です。
おのき
記事: 14
登録日時: 2017年8月28日(月) 18:07
連絡する:

Re: 【】左上のマップ名を常に表示したい

投稿記事 by おのき »

>しぐれん様
前回に続きありがとうございます。
おかげさまで無事実装できました。

コード: 全て選択

(function() {
  'use strict';//厳格モード

  /////////////////////////////////////////////////////////////////////////////
  //Scene_Map
  Scene_Map.prototype.start = function() {
    Scene_Base.prototype.start.call(this);
    SceneManager.clearStack();
    if (this._transfer) {
      this.fadeInForTransfer();
      //this._mapNameWindow.open();
      $gameMap.autoplay();
    } else if (this.needsFadeIn()) {
      this.startFadeIn(this.fadeSpeed(), false);
    }
    this._mapNameWindow.open();//常に表示
    this.menuCalling = false;
  };

  /////////////////////////////////////////////////////////////////////////////
  //Window_MapName
  Window_MapName.prototype.update = function() {
    Window_Base.prototype.update.call(this);
    if (this._showCount > 0 && $gameMap.isNameDisplayEnabled()) {
      this.updateFadeIn();
      //this._showCount--;
    } else {
      this.updateFadeOut();
    }
  };

  Window_MapName.prototype.updateFadeIn = function() {
    if (this.contentsOpacity < 256) {
      this.contentsOpacity += 16;
    }
  };
})();
p.s.
私はこれからマップ自動生成システムの実装に取り掛かります。
まだMVのセーブデータ形式について把握しておりませんが,
おそらくマップの地形については$dataMap(Infos?)を通してゴニョゴニョすることになるので,
$game…でないデータはセーブには含まれませんよね。
つまり自前でシリアライズする必要があるという認識です。

あるいはマップエディタであらかじめ条件付きの壁を用意してスクリプトで掘っていくか。
セルフスイッチとか使えばラクそうですよね。
まあ悩ましいところです。
返信する

“MV:質問”に戻る