ページ 11

【解決済み】バトルコマンドのグレーアウト方法

Posted: 2021年5月23日(日) 22:21
by ドラムカン
いつもお世話になっております。

使用者のMPが0のとき、
特定のバトルコマンドをグレーアウトにしたいと考えております。

Window_ActorCommand に
以下の処理を入れたら、MP判定は出来たのですが、
肝心のグレーアウトにする記述が不明です。

コード: 全て選択

if(this._actor.mp == 0){
}
上記クラスに、addCommand()でバトルコマンドを再定義しておりまして
その中にあるオリジナルコマンドがターゲットとなります。

isEnabled()で評価することは何となく分かるのですが
追加したコマンドをどのようにしてグレーアウトするのか分からないといった状態です。

とても初歩的なご質問かもしれませんが、どうかご教示いただけますと幸いです。

Re: バトルコマンドのグレーアウト方法

Posted: 2021年5月23日(日) 23:33
by Plasma Dark
上記クラスに、addCommand()でバトルコマンドを再定義しておりまして
その中にあるオリジナルコマンドがターゲットとなります。
addCommand メソッドの第三引数が偽の場合、そのコマンドはグレーアウトして選択できなくなります。
ですので

コード: 全て選択

this.addCommand('コマンド名', 'シンボル', this._actor.mp > 0);
こういった形でコマンドを追加することで要件を満たせるのではないかと思います。
isEnabled()で評価することは何となく分かるのですが
Window_ItemList や Window_SkillList には定義されているので紛らわしいですが、 Window_ActorCommand に isEnabled メソッドは定義されていません。

Re: バトルコマンドのグレーアウト方法

Posted: 2021年5月23日(日) 23:52
by ドラムカン
Plasma Dark 様

いつも大変お世話になっております。
今回も的確な解決策をご教示くださり、誠にありがとうございます。

addCommand メソッドは、第三引数がFalseの場合、グレーアウト扱いになるとは目からうろこでした。
Window_SkillList に isEnabled メソッドを使用しているケースは多く見つけられたのですが
Window_ActorCommand になかったのは、そもそも定義されていないからだったのですね。

ひとつひとつの積み重ねではありますが
おかげさまで一歩一歩、理解が深まっております。
改めて、お礼申し上げます。
今後ともどうかよろしくお願いいたします。