FTKR_ExBattleCommandでのコマンド有効化条件指定について

terry10x12th
記事: 3
登録日時: 2024年3月25日(月) 10:03

FTKR_ExBattleCommandでのコマンド有効化条件指定について

投稿記事by terry10x12th » 2024年3月25日(月) 10:10

初めて質問をさせていただきます。

FTKR_ExBattleCommandを使用し、「TPが一定値以上の場合のみ攻撃コマンドが有効になる」という実装をしたいと思っています。

<FTKR_ACTOR_COMMAND: type ext enabled skillId priority>

enabled : 実行するための条件を設定する場合に、スクリプトで入力してください。
条件を指定しない場合はtrueまたは1にしてください。

this._actorでコマンド選択中のアクターデータを参照できます。
例:this._actor.isStateAffected(ステートID)でステートIDが付与されているか判定。
条件式を記述する場合、スペースを空けてはいけません。
例:アクターの残りHPが100より多い場合を判定する式で、this._actor.hp > 100はNGです。this._actor.hp>100にして下さい。


上記のヘルプに従い、アクターのメモ欄に
<FTKR_ACTOR_COMMAND: attack 0 this._actor.Tp>n 0>

と入れてみたのですが上手くいきません。
不等号の>がタグ閉じ記号と認識されてるんじゃないかと思うんですが……

こういう場合、どうやって記述するのがいいでしょうか?
お知恵を貸していただければ幸いです。

terry10x12th
記事: 3
登録日時: 2024年3月25日(月) 10:03

Re: FTKR_ExBattleCommandでのコマンド有効化条件指定について

投稿記事by terry10x12th » 2024年3月25日(月) 17:46

補足です。

<FTKR_ACTOR_COMMAND: attack 0 this._actor.Tp==n 0>

ってやったらグレーアウトでコマンドが無効になりましたが、今度はTPがn値になっても無効のままになりました……
ecf5DTTzl6h6lJj02
記事: 458
登録日時: 2018年12月23日(日) 13:55

Re: FTKR_ExBattleCommandでのコマンド有効化条件指定について

投稿記事by ecf5DTTzl6h6lJj02 » 2024年3月31日(日) 17:18

こんにちは。
terry10x12th さんが書きました:初めて質問をさせていただきます。

FTKR_ExBattleCommandを使用し、「TPが一定値以上の場合のみ攻撃コマンドが有効になる」という実装をしたいと思っています。

<FTKR_ACTOR_COMMAND: type ext enabled skillId priority>

enabled : 実行するための条件を設定する場合に、スクリプトで入力してください。
条件を指定しない場合はtrueまたは1にしてください。

this._actorでコマンド選択中のアクターデータを参照できます。
例:this._actor.isStateAffected(ステートID)でステートIDが付与されているか判定。
条件式を記述する場合、スペースを空けてはいけません。
例:アクターの残りHPが100より多い場合を判定する式で、this._actor.hp > 100はNGです。this._actor.hp>100にして下さい。


上記のヘルプに従い、アクターのメモ欄に
<FTKR_ACTOR_COMMAND: attack 0 this._actor.Tp>n 0>

と入れてみたのですが上手くいきません。
不等号の>がタグ閉じ記号と認識されてるんじゃないかと思うんですが……

こういう場合、どうやって記述するのがいいでしょうか?
お知恵を貸していただければ幸いです。

仰る通り、< > でタグの開始、終了の記号なので、 タグ中に > を使ってしまうとパラメータが途中で切れてしまいます。
< のほうは、きちんと読み取ってくれることのほうが多いですが、誤動作の原因になる場合はあります。
通常は、タグ中で < や > などを記述したい場合は、別の文字列で置き換えておき、
読み取りの際に、置き換えた文字列を < や > に直す処理をするのですが、
このプラグインでは、この処理を行っていないようです。

上記の処理を行うように改変しましょう。
プラグインファイルを JavaScript を編集できるソフトで開き、下記の変更を行ってください。
(編集を行う前に必ず、ファイルのバックアップを取っておいてください)

  1. 260 行目あたりから、readMetadata というメソッドの定義が始まっていると思います。
    その中に、

    コード: 全て選択

                            enabled  : times[2] || 'true',      //enabled

    という箇所がある(おそらく 272 行目あたり)とおもいますので、

    コード: 全て選択

                            enabled  : times[2] ? (times[2].replace(/&lt;/g, '<').replace(/&gt;/g, '>')) : 'true',      //enabled

    と書き換えてください。
これで、条件式中の < を &lt; 、> を &gt; と置き換えて書けば、
プラグイン中で、< > に変換してくれるようになるはずです。

あと、
terry10x12th さんが書きました:補足です。

<FTKR_ACTOR_COMMAND: attack 0 this._actor.Tp==n 0>

ってやったらグレーアウトでコマンドが無効になりましたが、今度はTPがn値になっても無効のままになりました……

について、
アクターの TP を取得するのに、
this._actor.Tp
と記述されていますが、正しくは、
this._actor.tp
で、t は小文字です。
t が大文字になってしまっているため、アクターの TP が正しく取得できず(undefined という値になってしまう)、
常に false の状態になってしまっているのではないかと思います。

以上、ご確認ください。
terry10x12th
記事: 3
登録日時: 2024年3月25日(月) 10:03

Re: FTKR_ExBattleCommandでのコマンド有効化条件指定について

投稿記事by terry10x12th » 2024年4月01日(月) 05:02

ありがとうございます!
とても助かりました。

大文字小文字は別のところでもハマっていましたので、気を付けて見てみます。

とても参考になりました。
ありがとうございました。

“MV:質問” へ戻る