ページ 11

【解決済み】ActionResultKeep.jsの使い方

Posted: 2024年8月15日(木) 13:47
by おおたけ
トリアコンタン様制作のActionResultKeep.jsの使い方がわからないので教えてほしいです。

直前の行動(今回は回復スキル)の対象者がAであることが条件のコモンイベントを作りたいのですが
ヘルプにある、「直前の行動の使用者や結果を専用の変数に保持します。」
の、専用の変数とはなんでしょうか?こちらから指定するものなのでしょうか…?
プラグイン設定ウィンドウのパラメータで指定できるのは行動結果のものですよね。

変数操作オペランドでスクリプト$gameTemp.lastTarget()と入れてみたのですが「object Object」としか返されません
$gameTemp.lastTarget($gameVariables.value(x))とかでしょうか…?
知識が乏しすぎて使いこなせません…

教えてください。よろしくお願いします。

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月15日(木) 16:56
by ecf5DTTzl6h6lJj02
こんにちは。
おおたけ さんが書きました:トリアコンタン様制作のActionResultKeep.jsの使い方がわからないので教えてほしいです。

直前の行動(今回は回復スキル)の対象者がAであることが条件のコモンイベントを作りたいのですが
ヘルプにある、「直前の行動の使用者や結果を専用の変数に保持します。」
の、専用の変数とはなんでしょうか?こちらから指定するものなのでしょうか…?
プラグイン設定ウィンドウのパラメータで指定できるのは行動結果のものですよね。

変数操作オペランドでスクリプト$gameTemp.lastTarget()と入れてみたのですが「object Object」としか返されません
$gameTemp.lastTarget($gameVariables.value(x))とかでしょうか…?
知識が乏しすぎて使いこなせません…

教えてください。よろしくお願いします。
$gameTemp.lastTarget();
というスクリプトは、最後に対象になったバトラーのデータを取得するものです。
取得できるデータは オブジェクト(Object)型 と呼ばれるデータで、
数値や文字列の型ではないために、文章の表示で、このデータが入った変数を表示しようとすると、
表示させられず [Object Object]という表示になってしまいます。
変数には、正しく、取得したデータが入っています。

オブジェクト(Object)型に関しては、
プログラムや、HTML、CSS の知識がある程度必要になるので、解説しません。
詳しく知りたい場合は、
https://developer.mozilla.org/ja/docs/L ... pt/Objects
等を読んでください。

本題の、
直前の行動の対象者が A であることを条件にしたい
ということに関してですが、
このスキルが、アクターが使用したものなのか、敵が使用したものなのかで、
$gameTemp.lastTarget();
で帰ってくるデータの種類が微妙に変わります。
また、この A が何を指しているかによって、条件式の内容が変わるので、
  • このスキルは、
    1. アクターが使用する
    2. 敵キャラが使用する
    3. 両方とも使用する
    のどれなのか。
  • A とは何を指しているのか
について、ご提示ください。

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月16日(金) 14:25
by おおたけ
Aはアクターです!
詳しくありがとうございます。

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月16日(金) 15:54
by ecf5DTTzl6h6lJj02
こんにちは。

過去のトピックを確認せずに、回答をつけてしまいましたが、この質問、

HPが最大HP=現在HPを条件にしたコモンイベントの回復スキルにおける扱い
viewtopic.php?f=99&t=15065

に関連してますよね?

質問の意図は、
スキルの対象になった アクター に応じて、お礼のメッセージを表示させたいということだと思うので、
対象になったアクターのIDが分かればいいのだと思いますが、
上記の質問で紹介されているプラグイン(BeforeCommon.js)で、
使用者のインデックスと、対象者のインデックスをそれぞれ、変数に格納できるようになっているので、
ActionResultKeep.js の機能を使わなくても、

コード: 全て選択

$gameParty.members()[$gameVariables.value(対象者のインデックスが入っている変数のID)].actorId();
で、対象者のアクターIDが、

コード: 全て選択

$gameParty.members()[$gameVariables.value(使用者のインデックスが入っている変数のID).actorId();
で、使用者のアクターIDが取得できるはずです。

これを利用して、条件分岐を設定すれば、
対象アクターに応じて、メッセージを表示することが可能かと思います。
(使用者の名前を出して、『ありがとう リード』のように、お礼を言うことも可能です)

ただ、これは、戦闘中に限っての表示だと思うので、
戦闘中でなければ、何もせずにイベントを終了する処理を入れる必要もあると思います。

戦闘中であるかどうかは

コード: 全て選択

$gameParty.inBattle();
というスクリプトで、判定できます。

以上、ご確認ください。

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月21日(水) 10:54
by おおたけ
どうしても動作せずメモ欄で発動前にしてあげたコモンイベントで
プラグインパラメータの発動者インデックス変数IDの格納値を文章表示したところ 0 としか返されませんでした
アクターID0001のアクターでスキル使用しているので 1 と返されるかなと思ったのですが…

返信が遅くて申し訳ないです

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月21日(水) 13:30
by ecf5DTTzl6h6lJj02
こんにちは。
おおたけ さんが書きました:どうしても動作せずメモ欄で発動前にしてあげたコモンイベントで
プラグインパラメータの発動者インデックス変数IDの格納値を文章表示したところ 0 としか返されませんでした
アクターID0001のアクターでスキル使用しているので 1 と返されるかなと思ったのですが…

返信が遅くて申し訳ないです
発動者インデックス変数ID で指定した変数には、発動前コモンイベントが起動した時、
発動者 が 敵なら敵、アクターならアクターの並び順の中で、何番目に位置するキャラクターかの値が入るようになっています。
0 が入っているということですが、
スキルを発動したアクターが並び順で先頭のアクターであれば、
先頭のインデックスは 0 になるので、正常に値が返ってきています。

上述の通り、
発動者インデックス変数ID、対象者インデックス変数IDに入るのは、
パーティ(敵グループ)の並び順の何番目かを示す値(エネミーの場合は + 1000される…今回はアクター側なので関係ない)で、
アクターIDが入るわけではありません。

なので、前回、

コード: 全て選択

$gameParty.members()[$gameVariables.value(対象者のインデックスが入っている変数のID)].actorId();

コード: 全て選択

$gameParty.members()[$gameVariables.value(使用者のインデックスが入っている変数のID)].actorId();
で、対象者のアクターID、使用者のアクターIDを取るようにスクリプトを書いたわけです。

上記、スクリプトの

コード: 全て選択

$gameParty.members()
の部分が、パーティメンバーの配列を取得する部分です。
戦闘中の場合は、戦闘参加メンバーだけの配列になります。

配列の何番目かを指定して個人特定している部分が、

コード: 全て選択

[$gameVariables.value(〇〇のインデックスが入っている変数のID)]
の部分です。
インデックスの値と、配列の何番目かは一致しているので、この書き方になります。

欲しいのは、アクターIDなので、

コード: 全て選択

.actorId()
で、アクターIDを取得します。

使用者、対象者 のアクターIDを格納する変数を用意して、
イベントコマンドの『変数の操作』の『スクリプト』に
上記スクリプトを書いて、アクターIDを取得し、
それを用いて、条件分岐するようにしてみてください。

どうしてもできない、という場合は申し出てください。
こちらで、イベントの作成サンプルをお出しします。

以上、ご確認ください。

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月22日(木) 11:10
by おおたけ
◆変数の操作:#0014 変数の名前 $gameParty.members()[$gameVariables.value(12).actorId();
この入力でエラーを吐きます「unexpected token`;`」この表示です
変数の操作はスキルのメモ欄で<BeforeCommon:x>を入力したコモンイベントで実行したものです

うまくいかないです
すみませんラジコン状態で私には原因がわからず…

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月22日(木) 11:44
by ecf5DTTzl6h6lJj02
こんにちは。
おおたけ さんが書きました:◆変数の操作:#0014 変数の名前 $gameParty.members()[$gameVariables.value(12).actorId();
この入力でエラーを吐きます「unexpected token`;`」この表示です
変数の操作はスキルのメモ欄で<BeforeCommon:x>を入力したコモンイベントで実行したものです

うまくいかないです
すみませんラジコン状態で私には原因がわからず…
上の記事の使用者の方のコード、
[ に対応する ]が抜けてしまっている typo です。
失礼しました。(上の記事のものは修正しました)

パーティーメンバー(戦闘時なので、戦闘参加メンバー)の、
『変数ID 0012 に入っているインデックス』番目のメンバーのアクターIDを取得するコードは、

コード: 全て選択

$gameParty.members()[$gameVariables.value(12)].actorId();
になります。

Re: ActionResultKeep.jsの使い方

Posted: 2024年8月30日(金) 12:10
by おおたけ
お返事遅くなってしまいすみません~~~!
無事に想定通りの動作をしました!!
詳しく教えてくださってありがとうございます!