【解決済み!!】戦闘行動の強制スクリプトで、ターゲットを敵・味方の誰かにしたい!

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 戦闘行動の強制スクリプトで、ターゲットを敵・味方の誰かにしたい!

投稿記事by ムノクラ » 2022年3月15日(火) 13:03

しつこくてごめんなさい。
実装したい内容が理解できたので、サンプルを作ってみました。
気が向いたら、見てください。
2022-03-15-ConfusionExtend-sample.zip
(77.03 KiB) ダウンロード数: 5 回


やりたいことが
>みなごろし(DQ資料)
https://wikiwiki.jp/dqdic3rd/%E3%80%90% ... 7%E3%80%91
・敵味方関係なく、特定のスキルを使う

>無限ループ
・発動したら、戦闘終了までずっと、上記みなごろしを使用し続ける

を指していると想定して、サンプルを作りました。

要点
1.混乱ステート拡張(トリアコンタン様作) - ConfusionExtend.js
https://plugin.fungamemake.com/archives/1157
2.ステート35「皆殺しファイア」のメモ
<CEスキル1:99>
通常攻撃の代わりに99(ファイアI)を使用
3.スキル97「皆殺しファイア」
ステート付加35:使用者:必中
4.スキル98:裏切りファイアⅠ
ステート付与時のコモンイベントに必要
5.コモンイベント1「皆殺しファイア起動」

この動作に、発動者自身を対象外にしたい場合、下記のプラグインでいけると思ったのですが、上手く動いていません…(なんでかな???)
▼混乱ステート時に自分を攻撃しない(ecf5DTTzl6h6lJj02様作) - ConfusionTargetEx.js
https://plugin.fungamemake.com/archives/27962

無限ループが「他が全滅するまで一方的に繰り返される」を指している場合、解決策はまだ見つけていません。
(スキルの連続回数で何とかなる?)

---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
ecf5DTTzl6h6lJj02
記事: 469
登録日時: 2018年12月23日(日) 13:55

Re: 戦闘行動の強制スクリプトで、ターゲットを敵・味方の誰かにしたい!

投稿記事by ecf5DTTzl6h6lJj02 » 2022年3月15日(火) 15:25

こんにちは。
チェック自体は、していましたが、発言はかなり久しぶりですね…。

以前作成したプラグインの話題が上がりましたので、
ちょっと書き込みを。

ムノクラ さんが書きました:この動作に、発動者自身を対象外にしたい場合、下記のプラグインでいけると思ったのですが、上手く動いていません…(なんでかな???)
▼混乱ステート時に自分を攻撃しない(ecf5DTTzl6h6lJj02様作) - ConfusionTargetEx.js
https://plugin.fungamemake.com/archives/27962

このプラグインで、戦闘行動の強制時の挙動を設定していないので、
コモンイベントで戦闘行動の強制で設定されている 裏切りファイア に対しては、自分自身も対象に含まれてしまうと思います。
もし、自分自身を対象に含まないようにしたい場合は、
コモンイベントで、裏切りファイアを設定している部分を、
以下のスクリプトに変更すると、自分自身を対象から除外して、スキルを発動するようにできるのはないかと思います。

コード: 全て選択

// サブジェクト(行動主体)のインデックス取得
const subjectIndex = BattleManager._subject.index();

// ターゲット番号の決定
const arr = $gameParty.aliveMembers().filter(member => member.index() != subjectIndex).map(member => member.index());
const targetIndex = arr[Math.randomInt(arr.length)];

// 戦闘行動の強制
BattleManager._subject.forceAction(98, targetIndex);      // 98はスキル(裏切りファイアⅠ)のIDです。
BattleManager.forceAction(BattleManager._subject);
this.setWaitMode('action');

(行を開けたりコメントを入れたりしている部分は適宜削除してください)

その後の、混乱時に使用するように指定しているスキル、 ファイアⅠについては、(自分のテストした限りでは)正常に動作するはずなのですが、おかしな挙動になっていましたらお教えください。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: 戦闘行動の強制スクリプトで、ターゲットを敵・味方の誰かにしたい!

投稿記事by ムノクラ » 2022年3月15日(火) 15:49

ecf5DTTzl6h6lJj02 さんが書きました:こんにちは。
チェック自体は、していましたが、発言はかなり久しぶりですね…。

以前作成したプラグインの話題が上がりましたので、
ちょっと書き込みを。

ムノクラ さんが書きました:この動作に、発動者自身を対象外にしたい場合、下記のプラグインでいけると思ったのですが、上手く動いていません…(なんでかな???)
▼混乱ステート時に自分を攻撃しない(ecf5DTTzl6h6lJj02様作) - ConfusionTargetEx.js
https://plugin.fungamemake.com/archives/27962

このプラグインで、戦闘行動の強制時の挙動を設定していないので、
コモンイベントで戦闘行動の強制で設定されている 裏切りファイア に対しては、自分自身も対象に含まれてしまうと思います。
もし、自分自身を対象に含まないようにしたい場合は、
コモンイベントで、裏切りファイアを設定している部分を、
以下のスクリプトに変更すると、自分自身を対象から除外して、スキルを発動するようにできるのはないかと思います。

コード: 全て選択

// サブジェクト(行動主体)のインデックス取得
const subjectIndex = BattleManager._subject.index();

// ターゲット番号の決定
const arr = $gameParty.aliveMembers().filter(member => member.index() != subjectIndex).map(member => member.index());
const targetIndex = arr[Math.randomInt(arr.length)];

// 戦闘行動の強制
BattleManager._subject.forceAction(98, targetIndex);      // 98はスキル(裏切りファイアⅠ)のIDです。
BattleManager.forceAction(BattleManager._subject);
this.setWaitMode('action');

(行を開けたりコメントを入れたりしている部分は適宜削除してください)

その後の、混乱時に使用するように指定しているスキル、 ファイアⅠについては、(自分のテストした限りでは)正常に動作するはずなのですが、おかしな挙動になっていましたらお教えください。


お久しぶりです!
コメントありがとうございます!

戦闘行動の強制での動作はしないと、想定していました。
ちょっとテストした時に、混乱時にファイアIをマーシャ自身に使ったように見えたので、あれ?と思った次第です。
今、サンプルを再度テストしたら、再現しないみたいなので、勘違いだったようです。

強制行動の代用スクリプト、ありがとうございます!
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 戦闘行動の強制スクリプトで、ターゲットを敵・味方の誰かにしたい!

投稿記事by WTR » 2022年3月15日(火) 16:11

ピータンパン さんが書きました:weaponidには武器のオブジェクトが入りますよ!(語尾がidってなってるのが紛らわしかったですね!)

あれ、そうでしたか
そうだったかも 見たのがちょっと前だったもので記憶違いだったようで すみません
どちらにせよ名前は変えたほうがいいと思う…

解決に向けて進んでそうな気もするので余談っぽくなりますが

BattleManager._subject が行動主体のエネミーまたはアクターで
Game_Enemy または Game_Actor のインスタンスが格納されます。

行動主体がアクターである前提であれば、そのアクターID

コード: 全て選択

BattleManager._subject._actorId

を使って

コード: 全て選択

$gameActors.actor(BattleManager._subject._actorId)

で取り出せるのは

コード: 全て選択

BattleManager._subject

そのものですよ、ということが言いたかった

コード: 全て選択

BattleManager._subject.equips()[0]

とかでいいはず。
タイミングによってエネミーが行動主体になるケースがある
というのは $gameActors.actor() を使うか否かによらず注意が必要です
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ピータンパン
記事: 76
登録日時: 2020年1月15日(水) 22:40

Re: 戦闘行動の強制スクリプトで、ターゲットを敵・味方の誰かにしたい!

投稿記事by ピータンパン » 2022年3月15日(火) 20:41

おおっ・・・なんかいろんな人を巻き込んでしまって、
嬉しいって言うよりごめんなさい感が凄いです!

ムノクラさんが作ってくれたものでうまくいきました!
ありがとうございます!

最初は、行動主体も対象に含めようと思ってたんですけど
よく考えたら一人パーティーのときにやっちゃうと、無敵になるんですよねぇぇっ!
だから自分も加えないと!ってなりました!

“MV:質問” へ戻る