[解決済み]場面に応じメッセージウィンドウ行数を変更

初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

[解決済み]場面に応じメッセージウィンドウ行数を変更

投稿記事by 初心者&質問者 » 2020年9月14日(月) 10:53

立ち絵のピクチャの場合はメッセージウィンドウは4行
絵全体を見せたい場合、メッセージウィンドウが
ピクチャに、なるべく重ならないように
2行、あるいは1行と、変更したいのですが
自分で調べながら試したところ、失敗が続いています。

解決方法が分かる方いらっしゃいましたら、教えてください。
よろしくお願いします。

なお、現在私が試して失敗しているのは、下記のような具合になります。

----------------------------------------------------------------------------

まず

こちらのサイトを参考に
http://rpgmaker-script-wiki.xyz/changem ... wazamv.php

イベントコマンドの変数代入にて
メッセージウィンドウの行数を変えられる方法を試しました。


「rpg_windows.js」内の

----------------------------------------------------------------------------

Window_Message.prototype.newPage

の下の

textState.height = this.calcTextHeight(textState, false);

----------------------------------------------------------------------------

の下の行に

----------------------------------------------------------------------------

this.height = $gameVariables.value(1)*45;

----------------------------------------------------------------------------

を追加し

----------------------------------------------------------------------------

Window_Message.prototype.numVisibleRows = function() {
return ;
};

----------------------------------------------------------------------------

のリターンの後に


----------------------------------------------------------------------------

$gameVariables.value(1);

----------------------------------------------------------------------------

を加えてみました。
そして、

イベントコマンドで
「変数0001」を変更する事で行数を変えようとしました。

そのテストとして打ち込んだイベントコマンドが
添付画像になります。


しかし、結果、行数は指定通りに減っているものの

①文字が表示されない
②1行ごとページが送られる(4行は4ページ送られ、3行は3ページ送られます)

例えば、「1度に4行分の文章」を表示した場合
文字が無表示のまま、空っぽのウィンドウが「4回」表示され

「1度に3行分の文章」を表示した場合
文字が無表示のまま、空っぽのウィンドウが「3回」表示されます。
添付ファイル
メッセージウィンドウ変更.png
メッセージウィンドウ変更.png (16.16 KiB) 閲覧数: 2308 回
最後に編集したユーザー 初心者&質問者 on 2020年9月15日(火) 17:24 [ 編集 1 回目 ]

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 場面に応じメッセージウィンドウ行数を変更

投稿記事by Plasma Dark » 2020年9月14日(月) 11:57

こちらのサイトを参考に
http://rpgmaker-script-wiki.xyz/changem ... wazamv.php

イベントコマンドの変数代入にて
メッセージウィンドウの行数を変えられる方法を試しました。


このサイトには rpg_****.js を直接書き換えるように書かれていますが、危険ですのでやめましょう。
以下のような内容のプラグインを追加することで試してください。

コード: 全て選択

(function () {
  'use strict';

  const _Window_Messaage_startMessage = Window_Message.prototype.startMessage;
  Window_Message.prototype.startMessage = function() {
    this.height = this.windowHeight();
    this.createContents();
    _Window_Messaage_startMessage.call(this);
  };

  Window_Message.prototype.numVisibleRows = function() {
    return $gameVariables.value(1);
  };
})();


また、対象ページに書かれた内容が古いのか、1.6.2で試しても同様の症状になります。
ウィンドウは生成時に描画対象範囲を決定し、その大きさ分の領域を確保します。
デフォルトでは4行固定の範囲で生成されます。
numVisibleRows で返す値が4固定であったのはそのためです。

これを変数にしてしまうと、ニューゲーム開始時には対象変数の値が0として扱われ、縦範囲0(正確には、最低値保証で1px)の領域が確保されます。
当然そんな狭い範囲には文字を描画できないので、メッセージは表示されません。
同じページ内の領域にもう行を追加で表示できない場合にページ送りが発生するため、1行ごとにページが送られてしまいます。

先程提示したサンプルプラグインでは、 createContents を呼び出すことでメッセージの開始ごとに領域を再度確保しています。
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 場面に応じメッセージウィンドウ行数を変更

投稿記事by 初心者&質問者 » 2020年9月15日(火) 08:39

どうも、ありがとうございます。

内容が古いためエラーが出ていること
対象変数の値が0として扱われ、縦範囲が0になってしまう事
分かりました。
とても参考になります。

いただいたサンプルなのですが
どのように使えばよいでしょうか。

jsファイルにして、プラグインフォルダに入れ
プラグイン管理から「状態をon」にする形でしょうか。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 場面に応じメッセージウィンドウ行数を変更

投稿記事by Plasma Dark » 2020年9月15日(火) 08:52

jsファイルにして、プラグインフォルダに入れ
プラグイン管理から「状態をon」にする形でしょうか。


はい。この方法でご利用ください。

プラグインを用いれば、 rpg_****.js のファイルはそのままに、処理のみを上書きすることができます。
この方法であれば、 rpg_****.js を直接編集するより遥かに安全です。
元に戻したいと思ったときにもプラグインをOFFにするだけで済みます。

コード: 全て選択

(function () {
  'use strict';
 
  /* ここに処理を書く */
})();


rpg_****.js の中で書き換えてみたいな、と思った処理は、上記のような形式のプラグインを作り、処理のみを上書きして試してみると良いでしょう。
初心者&質問者
記事: 148
登録日時: 2020年9月03日(木) 09:22

Re: 場面に応じメッセージウィンドウ行数を変更

投稿記事by 初心者&質問者 » 2020年9月15日(火) 17:22

プログラムには弱いので、ご助言くださったとおり
rpg_****.jsは、いじらずにおいたほうがいいという事
頭に留めておきます。

プラグインに入れてみたところ
メッセージウィンドウの行数を変数で変更することができました。

どうも、ありがとうございました。
とても、助かりました。

“MV:質問” へ戻る