皆様、いつも大変お世話になっております。 この度、装備画面の装備中のアイテムが表示されるウインドウに 装備画面を開いた該当のアクターが 特定のステートに掛かっている場合のみアイコンを表示したく コード: Window_EquipSlot.prototype.drawItem = function(index) { if (this._actor) { var rect = this.itemRectForText(index); this.changeTextColor(this.systemColor()); this.changePaintOpacity(this.isEnabled(index)); this.drawText(this.slotName(index), rect.x, rect.y, 138, this.lineHeight()); this.drawItemName(this._actor.equips()[index], rect.x + 138, rect.y); this.changePaintOpacity(true); if a.isStateAffected(1)){ this.drawIcon(1, 1, 1); } } }; 他のサイト様なども参考にし上記のようなコードを書き 導入した所、上手く作動してくれません 「if a.isStateAffected(1)){ 」と「 }」を1つ消すとアイコンは表示されるので 「if a.isStateAffected(1)){ 」の書き方がおかしいとまでは分かるのですが 当方の知識ではどの様な書き方が正しいのかが分からず作業が進まない状況です。 どなたか良ければ御教示いただけないでしょうか。 宜しくお願い致します。
ええっと、豆豆豆さんのやりたいことがどうも文章から伝わらないのですが、 「例えばステート1が付加されている時だけ、武器や防具のアイコンを表示、 それ以外の時は表示しない」という意味でいいでしょうか? だとしたら、以下のようになります。 PHP: Window_EquipSlot.prototype.drawItem = function(index) { if (this._actor) { var rect = this.itemRectForText(index); this.changeTextColor(this.systemColor()); this.changePaintOpacity(this.isEnabled(index)); this.drawText(this.slotName(index), rect.x, rect.y, 138, this.lineHeight()); if (this._actor.isStateAffected(1)) { this.drawItemName(this._actor.equips()[index], rect.x + 138, rect.y); } else { var equip = this._actor.equips()[index]; this.drawText(equip ? equip.name : '', rect.x + 138 + Window_Base._iconWidth + 4, rect.y, 312, this.lineHeight()); } this.changePaintOpacity(true); }}; 以上はイベントコマンド「スクリプト」でやるには長すぎるので、 改行を減らすか、またはプラグイン化してご使用下さい。 ポイントは、「a.isStateAffected(1)」というのは、戦闘計算式の中でしか使えず、 ここでは「this._actor.isStateAffected(1)」のようにする必要があること、 「if (...)」のように、ifの後はかならず括弧を付けること、がポイントでしょうか。 また、this.drawItemNameは、アイテムの名前だけでなくアイコンも描画する関数です。 もし、違う意味(ステートのアイコンを表示したい)の場合、そもそも装備用のスロットに、 そういうアイコンを表示するスペースがないですよね。 そこんところご検討ください。
神無月サスケ様 いつも、ありがとうございます 泣 説明不足で申し訳ございませんでした。 当方がしたかったことは 装備のアイコン、ステート毎のアイコンを表示など複雑なことではなく 最初の投稿内容に書かせていただいた 「「this.drawIcon(1, 1, 1);」で表示される1種類のアイコンを 特定のステートに掛かっている時のみ表示したい」でした。 説明不足で申し訳ございません。 しかし、これも神無月サスケ様が補足で説明して下さった こちらの説明で無事に理想通り表示させることが出来で解決できました。 この説明は、この質問内容だけではなく 今後、スクリプトを改変する際などに大変役立つことで とてもとても大変勉強になりました。 この度も本当にありがとうございました;;