munokura
ユーザー
ローンチプラグインの SimpleMsgSideViewMZ を改変しています。
敵キャラの通常攻撃の動作を変化したいため、別スキルを作成しました。
この別スキルをバトルログに出さないようにするために改変しました。
しかし、ifが上手く使いこなせておらず…
なぜ動かないのか?
なぜこれで動くのか? this.push('wait'); を通過しなくても動作している?
本当は動いていない!(同じIDのアイテムだと非表示になるので、判定方法に抜けがある…先ほど発覚)(解決しました)
本当はどう書くべきなのか?
が分からず、困っています。
▼元のコード
▼動くと思ったのに動かないコード
▼何故か動くコード
※なぜ this.push('wait'); を通過しなくても動作しているのかも分かりません…
追記
this.push('wait'); をコメントアウトしても動作するようですが…全体の仕組みが理解できていないので、不要なのかも分かりません…
メインの疑問はifの論理演算子の理解です。
敵キャラの通常攻撃の動作を変化したいため、別スキルを作成しました。
この別スキルをバトルログに出さないようにするために改変しました。
しかし、ifが上手く使いこなせておらず…
なぜ動かないのか?
なぜこれで動くのか? this.push('wait'); を通過しなくても動作している?
本当はどう書くべきなのか?
が分からず、困っています。
▼元のコード
JavaScript:
Window_BattleLog.prototype.displayAction = function(subject, item) {
if (displayAttack ||
!(DataManager.isSkill(item) && item.id === subject.attackSkillId())
) {
this.push('addItemNameText', item);
} else {
this.push('wait');
}
};
▼動くと思ったのに動かないコード
JavaScript:
Window_BattleLog.prototype.displayAction = function (subject, item) {
if (displayAttack ||
!(DataManager.isSkill(item) && item.id === subject.attackSkillId()) ||
!(DataManager.isSkill(item) && undisplaySkill.includes(String($dataSkills[item.id].id)))
) {
this.push('addItemNameText', item);
} else {
this.push('wait');
};
▼何故か動くコード
JavaScript:
Window_BattleLog.prototype.displayAction = function (subject, item) {
if (displayAttack ||
!(DataManager.isSkill(item) && item.id === subject.attackSkillId())
) {
if (!(DataManager.isSkill(item) && undisplaySkill.includes(String($dataSkills[item.id].id)))) {
this.push('addItemNameText', item);
}
// } else {
// this.push('wait');
}
};
追記
this.push('wait'); をコメントアウトしても動作するようですが…全体の仕組みが理解できていないので、不要なのかも分かりません…
メインの疑問はifの論理演算子の理解です。
最後に編集: