ページ 11

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

Posted: 2016年12月23日(金) 16:21
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);
みたいな感じで直接入れてみても、配列?でまとめて管理されてるみたいで
同じ文字がずらっと並んでしまいました。

もし方法が御座いましたらご教授よろしくおねがいいたします。

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

Posted: 2016年12月23日(金) 18:57
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以下省略)

ただし、改変は自己責任でお願いします。

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

Posted: 2016年12月23日(金) 19:28
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があるっていうことなのでしょうか?

とにもかくにもありがとうございます!

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

Posted: 2016年12月23日(金) 20:47
by まっつUP
var EQoldname = 0;
の部分は必要であったために宣言と代入を行っただけです。
0でなくてもスロット名と一切被らない値ならなんでもいいと思います。

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

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

Posted: 2016年12月28日(水) 13:16
by スギスズキ
ありがとうございます!
その後症状を確認しまして、
こちらの方法で解決できました。