【解決済み】アクターの名前や顔グラを、IDではなく条件で表示する際の記述を教えていただきたく・・・
Posted: 2023年3月09日(木) 23:57
WTR様
大変お世話になっております! またまたご回答くださって、ありがとうございます!
いえいえ、「これ試してみて」と言うものを提示していただけるだけでとてもありがたいです♪
なんて思ってましたが、外しちゃダメなのは e && の方だったとは! いやはや、お恥ずかしい(苦笑)。
さて、本題の顔グラ表示ですが、ご教授いただいたコードを当てはめてみましたところ・・・
Uncaught TypeError: this._itemData.name is not a function
at drawActorFace.$gameActors._data.find.e (SceneGlossary.js:2830)
at Array.find (<anonymous>)
at Window_Glossary.drawPicture (SceneGlossary.js:2830)
at Window_Glossary.drawItemSub (SceneGlossary.js:2632)
at Bitmap._callLoadListeners (rpg_core.js:1681)
at Bitmap.decode (rpg_core.js:1655)
at Bitmap._onLoad (rpg_core.js:1628)
と、出てしまいました。ですが、this._itemData.name の () を外してみたところ、想定通り選択中の
アイテムと同名のアクターの顔グラが表示されました!! ありがとうございます!!!
まだ、辞典を立ち上げた直後の最初に表示されるページや、読み込む画像ファイルが変わる際は
表示されない(一度他の項目やページに切り替えて戻ると表示される)と言った不具合が残っていますが、
これはステータス画面での遅延の無い表示の仕組みなどを調べてみようと思います。
ともかく、顔グラを流用できるようになったことで、手間や容量を大幅に軽減することができそうです。
WTR様、ご教授ありがとうございました!!
これであとは、if (隠しアイテムA と同じ名前のアクターがいる場合) { の記述が分かれば・・・。
こちらも、まずはデフォルト内の item に関する記述を調べてみるとします。
●3月12日・追記
しばらくして気づいたのですが、WTR様のコードは分岐の条件にもピタリと当てはまってくれました!
しかも、現在選択中のアイテムで判定した方がより確実ですしね! これで、“イベントのみに登場する
アクターのいない人物” を掲載してもエラーを出さずに済みます♪
表示遅延の検証はまだこれからですが、とにかく表示には成功しましたので、本件はこれにて
【解決済み】といたします。
プラグイン作者のトリアコンタン様、お時間を割いてご教授くださった剣崎 宗二様、WTR様、
本当にありがとうございました!!
大変お世話になっております! またまたご回答くださって、ありがとうございます!
いえいえ、「これ試してみて」と言うものを提示していただけるだけでとてもありがたいです♪
あぁ、some は装備スロット用でしたか! 防具もアクターも複数だから some は外せないな・・・WTR さんが書きました:ちゃんと動いたとされるコードは、アクターの装備をチェックしているので
複数ある装備スロットのいずれかに指定の装備があるか、という条件チェックに some を使っていますが
名前を条件にするなら some は不要です。
なんて思ってましたが、外しちゃダメなのは e && の方だったとは! いやはや、お恥ずかしい(苦笑)。
あらら、そうなんですね! それではご提案を頂戴して、actor で行くことにします。WTR さんが書きました:find で使われている e とか、some で使われている x はなんでもいいです。
配列を検索する find で e と書いているのはおそらく
配列の要素 (= element) という意味で e にしてるのかなと思いましたが、べつに1文字である必要もなく
わかりやすい名前をつけていいです。
アクターを検索しているのだから actor にするとかもアリです。
さて、本題の顔グラ表示ですが、ご教授いただいたコードを当てはめてみましたところ・・・
Uncaught TypeError: this._itemData.name is not a function
at drawActorFace.$gameActors._data.find.e (SceneGlossary.js:2830)
at Array.find (<anonymous>)
at Window_Glossary.drawPicture (SceneGlossary.js:2830)
at Window_Glossary.drawItemSub (SceneGlossary.js:2632)
at Bitmap._callLoadListeners (rpg_core.js:1681)
at Bitmap.decode (rpg_core.js:1655)
at Bitmap._onLoad (rpg_core.js:1628)
と、出てしまいました。ですが、this._itemData.name の () を外してみたところ、想定通り選択中の
アイテムと同名のアクターの顔グラが表示されました!! ありがとうございます!!!
まだ、辞典を立ち上げた直後の最初に表示されるページや、読み込む画像ファイルが変わる際は
表示されない(一度他の項目やページに切り替えて戻ると表示される)と言った不具合が残っていますが、
これはステータス画面での遅延の無い表示の仕組みなどを調べてみようと思います。
ともかく、顔グラを流用できるようになったことで、手間や容量を大幅に軽減することができそうです。
WTR様、ご教授ありがとうございました!!
これであとは、if (隠しアイテムA と同じ名前のアクターがいる場合) { の記述が分かれば・・・。
こちらも、まずはデフォルト内の item に関する記述を調べてみるとします。
●3月12日・追記
しばらくして気づいたのですが、WTR様のコードは分岐の条件にもピタリと当てはまってくれました!
コード: 全て選択
if ($gameActors._data.find(actor => actor && actor.name() === this._itemData.name)) {
this.drawActorFace($gameActors._data.find(actor => actor && actor.name() === this._itemData.name), x, y);
} else {
return null;
}
アクターのいない人物” を掲載してもエラーを出さずに済みます♪
表示遅延の検証はまだこれからですが、とにかく表示には成功しましたので、本件はこれにて
【解決済み】といたします。
プラグイン作者のトリアコンタン様、お時間を割いてご教授くださった剣崎 宗二様、WTR様、
本当にありがとうございました!!