【解決済み】メニュー画面に装備を表示したい

にいやん

ユーザー
今、Altmenuscreen2を改変しているのですが、ステータス画面に表示されている装備しているアイテムを、そのままメニュー画面に表示できないでしょうか?
調べたところ、drawItemNameかdrawTextで表示できそうな感じがするのですが、良く分からなかったのでよろしくお願いします。
equips().nameとかがコードの中にあったのですが一括で取得しているのですか?
 

にいやん

ユーザー
あまりキレイな形じゃないけど自己解決しました。
this.drawText(actor.equips()[0].name, x, y, width);
一個ずつですが取得できました。装備がない状態だとエラー吐いちゃうんですね
 

DarkPlasma

ユーザー
Game_Actor の equips メソッドで取得できるのは装備データもしくはnullの配列です。
装備していない箇所についてはnullになるので、そのチェックをしてあげればエラーは防ぐことができます。

全装備の表示のために追加すべきプラグインは、座標の設定にもよりますが以下のようになるのではないかと

JavaScript:
(function(){
  'use strict';
  const _Window_MenuStatus_drawItem = Window_MenuStatus.prototype.drawItem;
  Window_MenuStatus.prototype.drawItem = function(index) {
    _Window_MenuStatus_drawItem.call(this, index);
    this.drawActorEquips(index);
  };

  Window_MenuStatus.prototype.drawActorEquips = function(actorIndex) {
    const actor = $gameParty.members()[actorIndex];
    const equipPositions = [
      [XXX, YYY], // 装備数分、X座標とY座標を定義しておく
      ...
    ];
    const width = WWW;  // 適当な幅を指定する
    actor.equips().forEach((equip, index) => {
      const x = equipPositions[index][0];
      const y = equipPositions[index][1];
      this.drawText(equip ? equip.name : "", x, y, width);
    });
  };
})();
 

にいやん

ユーザー
DarkPlasmaさん、全装備のコード詳しくありがとうございます。
一応、エラーが出ないようにチェックをして回避することができました。
 
トップ