戦闘開始直前に変数にパーティメンバーIDを格納する方法を教えてください。

エレン
記事: 39
登録日時: 2016年3月25日(金) 20:40

戦闘開始直前に変数にパーティメンバーIDを格納する方法を教えてください。

投稿記事by エレン » 2016年4月20日(水) 19:00

エレンです。お世話になります。
viewtopic.php?f=49&t=1024

↑こちらで質問した内容ですが戦闘中だと戦闘に参加する4人までしか変数に
パーティメンバーIDを格納することが出来ないようでした。バトルイベントで行うと5人目以降の控えは格納されません。
ですので戦闘開始直前に何とかメンバーキャラのIDを変数に格納する方法、
あるいは戦闘中でも変数に格納する方法はないものでしょうか?
皆様の知恵をお貸しください!

アバター
FINGERMAN
記事: 35
登録日時: 2016年2月28日(日) 21:40

Re: 戦闘開始直前に変数にパーティメンバーIDを格納する方法を教えてください。

投稿記事by FINGERMAN » 2016年6月23日(木) 06:12

だいぶ前のご質問なのでお気づきになられるかわかりませんが、一応の対処法をお答えします。
ただし僕もスクリプトは初心者なので上手い方に再度聞く機会や、
プラグインを作っていただける機会がありましたらそちらをおすすめします。
エレン さんが書きました:戦闘開始直前に何とかメンバーキャラのIDを変数に格納する方法、
あるいは戦闘中でも変数に格納する方法はないものでしょうか?

前者の戦闘開始前にIDを変数に格納する方法で考えてみました。
コモンイベントでトリガー「並列処理」で情報を常に取得し続ける方法です。図①
マップ上にいてスイッチをONにしている間取得しつづけます。
バトルイベント時はコモンイベントは(呼び出されでもしない限り)起こりませんので、
戦闘直前のメンバー情報が戦闘中もそのまま変数に残っています。

以降は蛇足ですが…
エレン さんが書きました:戦闘中だと戦闘に参加する4人までしか変数にパーティメンバーIDを格納することが出来ないようでした。
バトルイベントで行うと5人目以降の控えは格納されません。

戦闘中のみ4人め以降のメンバー情報が変数取得できないことは本当に意外だったのでかなり悩んだのですが、
戦闘中パーティーメンバーと認識されないだけで、戦闘中にスクリプトコマンド
$gameVariables.setValue(6,$dataActors[$gameParty._actors[4]].id)
を使えば無理やり変数取得を取得することができ(メンバーがいないとエラーで落ちます)、
ゲーム内部ではちゃんと存在していました。何でだろう…不便ですね…。 :?
添付ファイル
WS000076.JPG
①取得したい時スイッチはONにしておきます。
アバター
FINGERMAN
記事: 35
登録日時: 2016年2月28日(日) 21:40

Re: 戦闘開始直前に変数にパーティメンバーIDを格納する方法を教えてください。

投稿記事by FINGERMAN » 2016年6月23日(木) 08:28

調べていたところもっと効率のよいやり方がありました。追記です。
並列処理コモンイベントでスクリプト
$gameParty._lastActors = $gameParty._actors.clone();
と入力します。
このスクリプトはパーティメンバーの記憶を意味しています。
こうすることで戦闘前のパーティメンバーの情報をスクリプトが覚えることができます。

そして戦闘に入ったあと画像の例①ではバトルイベント1 戦闘開始時にてアクター1、2番めをパーティから抜けさせました。
3、4人目がサイドビューバトルの1、2番めにズレて控えのメンバー5、6が戦闘に自動的に加入しました。

つづいて例② バトルイベント2 ターン1経過時にてスクリプト
$gameParty._actors = $gameParty._lastActors;
$gamePlayer.refresh();
$gameMap.requestRefresh();
を入力します。
これは前のスクリプトで記憶したパーティメンバーを復元するスクリプトです。

バトル前のパーティメンバーに並び順もまったく同じように復元されるのではないかと思います。
ただし、万一全員戦闘不能・行動不能のパーティを組むことになったらゲームオーバーの可能性 :mrgreen: もあるのでHP回復やステートに気をつけてください。
添付ファイル
WS000077.JPG
例① ターン0でメンバーを二人抜けさせた
WS000078.JPG
例② 次のターンで戻ってきた

“MV:質問” へ戻る