【解決済み】まっつUP様のプラグインEnemyStateCall.jsについて

返信する
いもこ
記事: 3
登録日時: 2021年4月26日(月) 11:50

【解決済み】まっつUP様のプラグインEnemyStateCall.jsについて

投稿記事 by いもこ »

敵キャラの詳細を説明する技を作りたかったのですが、対象でない敵にも同じコモンイベントが発動してしまいます。
またイベントを複数付けると技を1回発動させるごとに全部発動してしまいます。
どうすればいいのでしょうか?理解不足ですみません。
自分がやったことは
<ESCcommonid:x>を敵キャラメモ欄に貼りコモンイベントをスキルに付けて プラグインコマンドにcommand:ESCcallを貼りパラメータstateidをESCcallに変えました。
最後に編集したユーザー いもこ [ 2021年4月30日(金) 05:26 ], 累計 1 回
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: まっつUP様のプラグインEnemyStateCall.jsについて

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
いもこ さんが書きました:敵キャラの詳細を説明する技を作りたかったのですが、対象でない敵にも同じコモンイベントが発動してしまいます。
またイベントを複数付けると技を1回発動させるごとに全部発動してしまいます。
どうすればいいのでしょうか?理解不足ですみません。
自分がやったことは
<ESCcommonid:x>を敵キャラメモ欄に貼りコモンイベントをスキルに付けて プラグインコマンドにcommand:ESCcallを貼りパラメータstateidをESCcallに変えました。
まっつUP様のこのプラグインは 、
プラグインコマンドで ESCcall が実行された際に、
各エネミーのステートをチェックし、プラグインパラメータの stateid に指定したIDのステートにかかっていたら、
そのエネミーのメモに書かれた <ESCcommonid:x> (xは実行したいコモンイベントのID) に指定されたIDのコモンイベントを実行する。(記述がない場合は何も起こらない)
該当のエネミーが複数いる場合は、(敵グループ内の)インデックスが小さいエネミーのものが実行される。
というものです。

パラメータ stateid を ESCcall に変えた、とありますが、
このパラメータは、コモンイベントの発動条件になるステートのIDを指定するものなので、
ESCcallと記述した場合、ESCcall は ステートIDではなく、正しくIDが指定されていないので、
正常に動作しないと思われます。
パラメータや、メモ欄の記述が正しいか、もう一度ご確認ください。
設定内容のスクリーンショット等をアップしていただけると、
より詳細な回答が得られるかもしれません。

また、『敵キャラの詳細を説明する技』であれば、
スキルから敵キャラの詳細を表示するためのコモンイベントを実行するよう設定するだけで良いような気がします。
下記は、敵のHP(現在値/最大値)、MP(現在値/最大値)、各属性の有効度をメッセージウィンドウで表示する技の作成例です。

スキルを画像のように設定。
001.png
※スキルを使用した時に、『効果がなかった』と表示されないように、ダミーのステートを作って解除してます。

コモンイベントとして、以下のようなイベントを作成する。

コード: 全て選択

◆注釈:エネミー情報を変数(このサンプルでは #0021)に保存する。
◆変数の操作:#0021 エネミー情報(エネミーオブジェクト) = $gameTroop.members()[BattleManager._action._targetIndex]
◆注釈:名前を取得。
◆変数の操作:#0022 エネミー名 = $gameVariables.value(21).name()
◆注釈:HP, 最大HP, MP, 最大MPを取得。
:  :/(スラッシュ) の位置を合わせるために文字列に変換し、
:  :padStart や padEnd を使用して、文字埋めをしている。
◆変数の操作:#0023 エネミーのHP = String($gameVariables.value(21).hp).padStart(6,' ')
◆変数の操作:#0024 エネミーの最大HP = String($gameVariables.value(21).mhp).padEnd(6, ' ')
◆変数の操作:#0025 エネミーのMP = String($gameVariables.value(21).mp).padStart(6, ' ')
◆変数の操作:#0026 エネミーの最大MP = String($gameVariables.value(21).mmp).padEnd(6, ' ')
◆注釈:各属性の属性有効度を取得。
:  :面倒なので、イベントコマンドのスクリプトで一気に。
:  :こちらも、桁合わせの目的で、数値を文字列に変換し、
:  :padStart を使用して、文字埋めをしている。
◆スクリプト:for(i = 1; i < $dataSystem.elements.length; i ++){
:     :$gameVariables.setValue(27 + i - 1, String($gameVariables.value(21).elementRate(i) * 100).padStart(3, ' ') + '%');
:     :}
◆注釈:敵の情報をメッセージとして表示
◆文章:なし, ウィンドウ, 下
:  :\V[22]の情報
:  :HP(現在値/最大値): \V[23] / \V[24]
:  :MP(現在値/最大値): \V[25] / \V[26]
◆文章:なし, ウィンドウ, 下
:  :各属性有効度
:  :物理: \V[27] 炎: \V[28] 氷: \V[29]
:  : 雷: \V[30] 水: \V[31] 土: \V[32]
:  : 風: \V[33] 光: \V[34] 闇: \V[35]
以上ご参考まで。
いもこ
記事: 3
登録日時: 2021年4月26日(月) 11:50

Re: まっつUP様のプラグインEnemyStateCall.jsについて

投稿記事 by いもこ »

ecf5DTTzl6h6lJj02様

ご丁寧なご回答ありがとうございます。
なるべく状態異常など敵によってセリフを変えたいためいろいろ試しているのですが成功しません。
スクショが上手くいかなかったのでできるだけ詳しく書きます。

コモンイベント1の内容
プラグインコマンドcommand:ESCcall
文章

というコモンイベント1を作り敵キャラのメモ欄に <ESCcommonid:1>を貼り付けました。
次にステートid11に「敵キャラ説明」という空のステートを作りパラメータのstateidに11と書きました。
最後に「敵を情報を得る」というスキルを作りステート付加で「敵キャラ説明」を100%にしました。

どうしてもできなかったらecf5DTTzl6h6lJj02様のご紹介してくださった方法で作ろうと思います。
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: まっつUP様のプラグインEnemyStateCall.jsについて

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
いもこ さんが書きました:ecf5DTTzl6h6lJj02様

ご丁寧なご回答ありがとうございます。
なるべく状態異常など敵によってセリフを変えたいためいろいろ試しているのですが成功しません。
スクショが上手くいかなかったのでできるだけ詳しく書きます。

コモンイベント1の内容
プラグインコマンドcommand:ESCcall
文章

というコモンイベント1を作り敵キャラのメモ欄に <ESCcommonid:1>を貼り付けました。
次にステートid11に「敵キャラ説明」という空のステートを作りパラメータのstateidに11と書きました。
最後に「敵を情報を得る」というスキルを作りステート付加で「敵キャラ説明」を100%にしました。

どうしてもできなかったらecf5DTTzl6h6lJj02様のご紹介してくださった方法で作ろうと思います。
このプラグインの使い方が正しく理解されていないように思います。

まず、プラグインコマンド に 書くべき文言は、ESCcall です。

プラグインコマンドは
コマンド名 引数1 引数2 引数3 … 引数n
という書き方をします。
プラグインヘルプの記述に
* (プラグインコマンド)
* command:ESCcall
* args:
*
* パラメータ「stateid」と同じIDのステートにかかっている
* 敵キャラのメモで取得したIDのコモンイベントを呼び出します。
*
* 例:ESCcall
* (引数はありません。)
と記載があります。
この 『command: ESCcall』という記述は 、コマンド名が ESCcall であることを表し、
『args:』という記述は、引数が無いということを表しています。
(例: の部分を見るとわかるかと思います。)

そして、上記のヘルプ内容にもある通り、このプラグインは、
バトルイベントなどで、プラグインコマンド 『ESCcall』が実行されたとき
敵のステートをチェックし、
パラメータ『stateid』 に指定したステートにかかっている敵のメモに書かれている
<ESCcommonid:x> の x に指定された番号のコモンイベントを呼び出す
ものです。
このプラグインの正しい流れとしては、雑な書き方ですが、
  1. バトルイベント等で、プラグインコマンド 『ESCcall』を実行する。
  2. パラメータ『stateid』で指定された番号のステートにかかっている敵のメモ欄を参照する。
  3. メモ欄の <ESCcommonid:x> の x に指定されたコモンイベントを実行する。
となります。

まず、『敵の情報を得る』スキルで、ESCcall を 実行するコモンイベントを実行させる必要があります。
そして、ESCcall が呼ばれた結果として、情報を表示するコモンイベントが呼び出される必要があります。
ですから、ESCcall を実行するコモンイベントと情報を表示するコモンイベントは別個である必要があります。
いもこさんのコモンイベントの内容のように、ESCcall と 情報表示を一緒にしてしまうと、うまくいきません。

また、この方法では、エネミーの種類によって参照されるコモンイベントを振り分けることはできても、
エネミーの状態異常のかかり方によって参照されるコモンイベントを振り分けるということまではできず、
敵の情報を表示するコモンイベントで、ご自身で、振り分けを行う必要があると思います。
いもこ
記事: 3
登録日時: 2021年4月26日(月) 11:50

Re: 【解決済み】まっつUP様のプラグインEnemyStateCall.jsについて

投稿記事 by いもこ »

ecf5DTTzl6h6lJj02様

上手く動作しました。
分かりやすく教えて下さりありがとうございます!
返信する

“MV:質問”に戻る