Yep_EquipCoreで装備タイプ名を重複表示させない方法

返信する
スギスズキ
記事: 71
登録日時: 2016年5月13日(金) 11:58

Yep_EquipCoreで装備タイプ名を重複表示させない方法

投稿記事 by スギスズキ »

いつもお世話になっております。

Yep_EquipCoreで装備配列を変更して、
同じ装備タイプの防具を複数装備できるようにしているのですが、

武器 剣
防具 ●●●●●
防具 ●●●●●
防具 ●●●●●

こんな感じで同じ装備タイプ名が並んでしまいます。
ちょっと不格好な気がするので

武器 剣
防具 ●●●●●
   ●●●●●
   ●●●●●

こんな風にしたいのですが、どうしてもうまくいきません。

コード: 全て選択

Window_EquipSlot.prototype.drawItem = function(index) {
    if (!this._actor) return;
    var rect = this.itemRectForText(index);
    this.changeTextColor(this.systemColor());
    this.changePaintOpacity(this.isEnabled(index))
    var ww1 = this._nameWidth;
    this.drawText(this.slotName(index), rect.x, rect.y, ww1);
    var ww2 = rect.width - ww1;
    var item = this._actor.equips()[index];
    if (item) {
      this.drawItemName(item, rect.x + ww1, rect.y, ww2);
    } else {
      this.drawEmptySlot(rect.x + ww1, rect.y, ww2);
    }
    this.changePaintOpacity(true);
};
この辺りが該当箇所なのはなんとなく分かったのですが、
this.drawText('防具', rect.x, rect.y, ww1);
みたいな感じで直接入れてみても、配列?でまとめて管理されてるみたいで
同じ文字がずらっと並んでしまいました。

もし方法が御座いましたらご教授よろしくおねがいいたします。
アバター
まっつUP
記事: 1149
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: Yep_EquipCoreで装備タイプ名を重複表示させない方法

投稿記事 by まっつUP »

スギスズキ様
お世話になります。

クリスマスプレゼントです。

var EQoldname = 0;
Window_EquipSlot.prototype.drawItem = function(index) {
if (!this._actor) return;
var rect = this.itemRectForText(index);
this.changeTextColor(this.systemColor());
this.changePaintOpacity(this.isEnabled(index));
var ww1 = this._nameWidth;
var newname = this.slotName(index);
if(EQoldname != newname) this.drawText(newname, rect.x, rect.y, ww1);
EQoldname = newname;
(var ww2以下省略)

ただし、改変は自己責任でお願いします。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
スギスズキ
記事: 71
登録日時: 2016年5月13日(金) 11:58

Re: Yep_EquipCoreで装備タイプ名を重複表示させない方法

投稿記事 by スギスズキ »

まっつUPさん

プレゼントありがとうございます!
いじってみて思っていた形にできました!
ただ、どういう処理で動作してるのか正直分からなくて?になってます、、(笑)

var newname = this.slotName(index);
if(EQoldname != newname) this.drawText(newname, rect.x, rect.y, ww1);
EQoldname = newname;

this.slotName(index);を0と比較するのはもしかして
防具(0) ●●●●●
防具(1) ●●●●●
防具(2) ●●●●●
この装備タイプ名の部分もindexがあるっていうことなのでしょうか?

とにもかくにもありがとうございます!
アバター
まっつUP
記事: 1149
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: Yep_EquipCoreで装備タイプ名を重複表示させない方法

投稿記事 by まっつUP »

var EQoldname = 0;
の部分は必要であったために宣言と代入を行っただけです。
0でなくてもスロット名と一切被らない値ならなんでもいいと思います。

と、今気が付いたんですがスロット[1,2,3]と[3,1,1]のように
装備スロットの名前についてそのアクターの最後尾の要素と別のアクターの先頭の要素が
被ってしまうとそのスロット名が消えることがあるので
if(EQoldname != newname)のところはこれよりも
if(index == 0 || EQoldname != newname)
の方がいいと思いました。
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
スギスズキ
記事: 71
登録日時: 2016年5月13日(金) 11:58

Re: Yep_EquipCoreで装備タイプ名を重複表示させない方法

投稿記事 by スギスズキ »

ありがとうございます!
その後症状を確認しまして、
こちらの方法で解決できました。
返信する

“MV:質問”に戻る