【解決致しました。】あるアクターが最後に攻撃した敵のIDを取得したい。

風雨がぁ
記事: 123
登録日時: 2017年9月24日(日) 10:18

Re: あるアクターが最後に攻撃した敵のIDを取得したい。

投稿記事by 風雨がぁ » 2017年12月05日(火) 14:59

奏ねこま さんが書きました:敵グループの先頭からの番号は、フトコロさんのプラグインで取得できてます。
フトコロさんのプラグインを使用し、説明の通りにメモ欄に記述していれば、
変数の中にその番号があるはずです。

$gameTroopだなんだというのは、そこからさらに敵の詳細な情報を取得するためのものです。
番号だけ知りたいのなら必要ありません。


奏ねこま様、長々と付き合わせていただき申し訳ございません。

前に 同じ敵に攻撃するほど攻撃力が上がる というトピックを作って解決したいと思ったのですが、
来なかったので色々考えて
最後に攻撃した敵の情報が入った変数と、
技を選択して、敵を選択した後の攻撃前にコモンイベントにて最後に選択した敵の変数を取得し、
その二つが同じになった時のみ攻撃を上げる重ねがけ可能ステートを付与する
という形を考えていました。
今の現状上できそうでしょうか。

奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: あるアクターが最後に攻撃した敵のIDを取得したい。

投稿記事by 奏ねこま » 2017年12月05日(火) 16:46

具体的な実装の話まではできませんし、私にもわかりませんが、
「最後に攻撃した敵と、次に攻撃する敵のインデックスが同じなら同じ敵である」
という判別自体は問題ないと思います。
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: あるアクターが最後に攻撃した敵のIDを取得したい。

投稿記事by フトコロ » 2017年12月05日(火) 17:33

>葵ねこまさん

いろいろと助言ありがとうございます。


>風雨がぁさん
風雨がぁ さんが書きました:前に 同じ敵に攻撃するほど攻撃力が上がる というトピックを作って解決したいと思ったのですが、
来なかったので色々考えて
最後に攻撃した敵の情報が入った変数と、
技を選択して、敵を選択した後の攻撃前にコモンイベントにて最後に選択した敵の変数を取得し、
その二つが同じになった時のみ攻撃を上げる重ねがけ可能ステートを付与する
という形を考えていました。
今の現状上できそうでしょうか。

可能だと思います。
バトルイベントで毎ターン実行するように設定(スパン:ターン、条件:1+1*X ターン)し、
イベント内容で、条件分岐で以下のスクリプトで判定すればいけると思います。

条件:

コード: 全て選択

$gameParty.menbers()[n]._actions[0] && $gameParty.menbers()[n]._actions[0].isForOpponent() && $gameParty.menbers()[n]._actions[0]._targetIndex === $gameVariables.value(x)


n は アクターのパーティー上の並び順(先頭から 0,1,2,...)を入力してください。
x は 前回攻撃時に選択した敵の番号を格納した変数IDを入力してください。

条件式の意味は以下の通りです。

$gameParty.menbers()[n]._actions[0]
:これで、パーティーの n 番目のキャラの行動を参照します。

$gameParty.menbers()[n]._actions[0].isForOpponent()
:これで、その行動が敵に対するものか判定します。使用するスキルの範囲が「敵○○」の場合に真になります。

$gameParty.menbers()[n]._actions[0]._targetIndex
:これで、その行動の選択した対象のグループ上の番号を取得します。
:この値と変数に格納した前回の対象番号を比較します。

こんな感じでしょうかね。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
風雨がぁ
記事: 123
登録日時: 2017年9月24日(日) 10:18

Re: あるアクターが最後に攻撃した敵のIDを取得したい。

投稿記事by 風雨がぁ » 2017年12月06日(水) 07:40

フトコロ さんが書きました:>葵ねこまさん

いろいろと助言ありがとうございます。


>風雨がぁさん
風雨がぁ さんが書きました:前に 同じ敵に攻撃するほど攻撃力が上がる というトピックを作って解決したいと思ったのですが、
来なかったので色々考えて
最後に攻撃した敵の情報が入った変数と、
技を選択して、敵を選択した後の攻撃前にコモンイベントにて最後に選択した敵の変数を取得し、
その二つが同じになった時のみ攻撃を上げる重ねがけ可能ステートを付与する
という形を考えていました。
今の現状上できそうでしょうか。

可能だと思います。
バトルイベントで毎ターン実行するように設定(スパン:ターン、条件:1+1*X ターン)し、
イベント内容で、条件分岐で以下のスクリプトで判定すればいけると思います。

条件:

コード: 全て選択

$gameParty.menbers()[n]._actions[0] && $gameParty.menbers()[n]._actions[0].isForOpponent() && $gameParty.menbers()[n]._actions[0]._targetIndex === $gameVariables.value(x)


n は アクターのパーティー上の並び順(先頭から 0,1,2,...)を入力してください。
x は 前回攻撃時に選択した敵の番号を格納した変数IDを入力してください。

条件式の意味は以下の通りです。

$gameParty.menbers()[n]._actions[0]
:これで、パーティーの n 番目のキャラの行動を参照します。

$gameParty.menbers()[n]._actions[0].isForOpponent()
:これで、その行動が敵に対するものか判定します。使用するスキルの範囲が「敵○○」の場合に真になります。

$gameParty.menbers()[n]._actions[0]._targetIndex
:これで、その行動の選択した対象のグループ上の番号を取得します。
:この値と変数に格納した前回の対象番号を比較します。

こんな感じでしょうかね。


奏ねこま様、付き合っていただきありがとうございます。

フトコロ様、回答ありがとうございます。
試して見たのですがTypeErrorが出てきてしまいました。
TypeError
undefind is not a function です。
攻撃前に出てきて、別にターン終了で試してもターン後に表示されたので
スクリプトが原因だと思われます。

図々しいながらあと一つお願いがあります。
パーティの順番ではなくて
アクターIDでできたりしないでしょうか。
こちらアクターの人数が多く、更に前のアクターの戦闘不能後控えからも登場しますので
現在のスクリプトでは少し難があると思ってしまいました。
どうかご教授ください。よろしくお願いします。
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: あるアクターが最後に攻撃した敵のIDを取得したい。

投稿記事by フトコロ » 2017年12月06日(水) 19:24

すみません。誤字でした。
members がmenbersになっていました。

正しくは

コード: 全て選択

$gameParty.members()[n]._actions[0] && $gameParty.members()[n]._actions[0].isForOpponent() && $gameParty.members()[n]._actions[0]._targetIndex === $gameVariables.value(x)


風雨がぁ さんが書きました:パーティの順番ではなくて
アクターIDでできたりしないでしょうか。

アクターIDで指定する場合は、
$gameParty.members()[n] を $gameActors.actor(y) に書き換えてください。
y がアクターIDです。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
風雨がぁ
記事: 123
登録日時: 2017年9月24日(日) 10:18

Re: あるアクターが最後に攻撃した敵のIDを取得したい。

投稿記事by 風雨がぁ » 2017年12月07日(木) 07:09

フトコロ さんが書きました:すみません。誤字でした。
members がmenbersになっていました。

正しくは

コード: 全て選択

$gameParty.members()[n]._actions[0] && $gameParty.members()[n]._actions[0].isForOpponent() && $gameParty.members()[n]._actions[0]._targetIndex === $gameVariables.value(x)


風雨がぁ さんが書きました:パーティの順番ではなくて
アクターIDでできたりしないでしょうか。

アクターIDで指定する場合は、
$gameParty.members()[n] を $gameActors.actor(y) に書き換えてください。
y がアクターIDです。


フトコロ様、回答ありがとうございます。
訂正頂いた通りにすると成功してしまいました。感動的で驚きです。
要望にもお答えいただきありがとうございました。
フトコロ様には重要な場面で毎度お世話になっていて頭が上がりません…。
本当に感謝いたします。ありがとうございました。

“MV:質問” へ戻る