制作ノート:4h,(メニュー画面テキスト、状態異常ステート反映)_20240707
タスク
何をしないといけないんだっけ?
あとはシナリオガリガリやるだけ! とかメモしたのは覚えてる。
そう思って今ある分だけプレイしたら、結構足りてなかった。
とりあえず、現在時刻がわからないのが不便なのでこれを表示させる。
あと体力0(内部的には1)になったときのイベントが用意されてないので作る。
↑ わき道にそれたから今日は結局やってない。
マップ上の任意の位置に文字を表示する。(できなかった
任意の位置に文字を表示させるには、まずテキストを表示するWindow
を用意してあげる必要があるっぽい。
このWindow
はScene
に依存するらしい(?)。
タイトル画面はシーン、タイトル画面にある「最初から」とかのボタンはウィンドウ(たぶん)。
メニュー画面もシーン、メニュー画面の「アイテム」とか「ステータス」とかのボタンを表示してるのがウィンドウ(たぶん)。
だとすると、キャラクターをマップ上で操作してるときのシーンに、ウィンドウを追加すればいいっぽい。
で、これってなんのシーンなわけ?
シーン一覧みてもよくわからん。
Scene_Message @MZ
Scene_Battle (継承位置変更)
Scene_Map (継承位置変更)
Scene_Mapかな…?
これめちゃむずい。意味わからん。
メニュー画面のステータス
こっちはScene_Menu
がわかってるので、こっちのほうが簡単そう。
適当なプラグインの中で、Scene_Menu.prototype.create
をオーバライドする。
Scene_Menu.prototype.create = function() {
Scene_MenuBase.prototype.create.call(this);
this.任意の関数();
this.createCommandWindow();
this.createStatusWindow();
};
Scene_Menu.prototype.任意の関数 = function() {
rect = new Rectangle(100,400,200,250);
this._mystatus = new Window_Base(rect);
this._mystatus.drawText("aaaaaa", 10,0,100, "right");
this.addChild(this._mystatus);
}
これでとりあえず任意の文字列が表示できる。
ビジュアルをいい感じに調整するだけ。
調整版。
Scene_Menu.prototype.任意の関数 = function() {
rx = 50;
ry = 340;
rw = 260;
rh = 350;
margin = 14;
rop = 0; //背景と枠を透過。
this._mystatusWwidth = 250;
rect = new Rectangle(rx,ry,rw,rh);
this._mystatus_1 = new Window_Base(rect);
rect = new Rectangle(rx+rw+margin, ry, rw, rh);
this._mystatus_2 = new Window_Base(rect);
rect = new Rectangle(rx+rw+rw+margin+margin,ry,rw,rh);
this._mystatus_3 = new Window_Base(rect);
this._mystatus_1.opacity = rop;
this._mystatus_2.opacity = rop;
this._mystatus_3.opacity = rop;
this.addChild(this._mystatus_1);
this.addChild(this._mystatus_2);
this.addChild(this._mystatus_3);
}
これを状態異常に応じて表示させる。
ステータス画面への状態異常反映
$gameActors.actor(1).isStateAffected(10)
とかからステートの判定を持ってきて、this._mystatus_1.drawTextEx(文字列, 0, 0, this._mystatusWwidth);
に反映させるだけ。
数があるから適当にarrayにしてjoin("\n")
する。
できた。
このぶんだとほかのメニュー画面も簡単かも。
マップ上にテキスト表示させるのはまだよくわからん。