ページ 1 / 1
【解決済み】バトルスタート時のメッセージ
Posted: 2022年10月30日(日) 18:36
by inuneko
ウインドウサイズを調整するプラグインを使っています。(参照する変数の値によってウインドウの縦幅を変えるというもの)
バトル直前に変数代入を実現したくて、
Scene_Battle.prototype.startを再定義し入力したパラメータをコモンイベントのIDとし、コモンイベントを呼び出せるプラグインを作り、変数操作をし、うまくいったかのように見えたのですが、「~が出現!」のウインドウだけスルーされ、(ウインドウのサイズが変わらず)、そのあとはうまくウインドウサイズが変わるという結果になりました
「~が出現」の直前で変数を代入するにはどうすればよいのでしょうか、プログラミング自体始めたばかりなのですが、どなたかご教授ください
Re: バトルスタート時のメッセージ
Posted: 2022年10月31日(月) 14:58
by Plasma Dark
ウインドウサイズを調整するプラグインを使っています。(参照する変数の値によってウインドウの縦幅を変えるというもの)
ウィンドウの縦幅とは、メッセージウィンドウの行数のことでしょうか。
利用されているプラグインの入手元を可能であればURL込で提示していただけると、回答側の認知負荷が軽減され、より解決につながりやすくなります。
バトル直前に変数代入を実現したくて
戦闘中のみメッセージウィンドウの行数を変更したい、ということでしょうか。
戦闘開始時のメッセージ表示は、戦闘中のコモンイベント処理の開始よりも先に行われます。
メッセージウィンドウのサイズ調整を行うプラグインを使いつつ、このメッセージのウィンドウサイズも含めて変更したいとなると、コモンイベントによる変数操作ではなく、プラグイン内で直接変数を操作してしまうのが楽でしょうか。
コード: 全て選択
(() => {
'use strict';
const VARIABLE_ID = 1;
const MESSAGE_WINDOW_ROWS_IN_BATTLE = 3;
const _Scene_Battle_start = Scene_Battle.prototype.start;
Scene_Battle.prototype.start = function() {
$gameVariables.setValue(VARIABLE_ID, MESSAGE_WINDOW_ROWS_IN_BATTLE);
_Scene_Battle_start.call(this);
};
})();
戦闘開始時のメッセージは、 Scene_Battle.prototype.start の中から呼び出される処理を追っていくと見つけることができます。
戦闘中とそれ以外でメッセージウィンドウの行数を変えたいが、それぞれは固定値で良いという場合には、別のアプローチもあります。
コード: 全て選択
(() => {
'use strict';
const MESSAGE_WINDOW_ROWS_IN_BATTLE = 3;
Scene_Battle.prototype.messageWindowRect = function() {
const width = Graphics.boxWidth;
return new Rectangle(
(Graphics.boxWidth - width) / 2,
0,
width,
this.calcWindowHeight(MESSAGE_WINDOW_ROWS_IN_BATTLE, false) + 8
);
};
})();
Scene_BattleクラスはScene_Messageクラスを継承しており、メッセージウィンドウの大きさはScene_Messageクラスで定義されています。
継承されている定義をScene_Battleクラスで上書きすれば、マップ上のメッセージウィンドウと行数を変えることができます。
Re: バトルスタート時のメッセージ
Posted: 2022年10月31日(月) 17:11
by inuneko
粗雑な質問に丁寧にご回答くださり本当に感謝しています
ご提案していただいたように「メッセージウィンドウの大きさはScene_Messageクラスで定義されている」
ことを確認し、そちらのアプローチを採用することといたしました
不誠実な質問文のことを謝罪します、申し訳ありませんでした
本当にありがとうございました、またご縁があればよろしくお願いします