【解決済】VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得

しろう
記事: 34
登録日時: 2020年1月25日(土) 17:40

【解決済】VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得

投稿記事by しろう » 2020年1月28日(火) 02:46

質問させて下さい。

VXAceにて


たとえば戦闘メンバーが4人までの時、5人目以降は控えメンバーとしてパーティに存在していますが
戦闘中は仲間全体に効果があるスキルやアイテムも控えメンバーは対象外です。
マップ上(移動中)は「変数の操作」「ゲームデータ、メンバー5人目」などでIDの取得が出来ますが
戦闘中だとこういったコマンドも何故か使えません。
なので

・戦闘中に控えメンバーを含めたパーティ全員のID取得をしたい

これが出来れば戦闘中の仲間全体へのスキル、アイテムをコモンで疑似的に控えにも効果があるように出来ると思います。
戦闘中に5~10人目の控えメンバーのIDを取得するにはどうすれば良いでしょう?
(パーティ全体の人数は流動的でプレイヤー次第で変えられるような作品です)


また、同じようにマップ上では「$game_party.add_actor(3)」「$game_party.remove_actor(4)」のようなメンバーの加入や離脱が出来ますが戦闘中に戦闘メンバーと控えメンバーの入れ替えは可能でしょうか?
もし可能であれば方法を知りたいです。
最後に編集したユーザー しろう on 2020年1月29日(水) 17:21 [ 編集 1 回目 ]

ぽんぽこねるそん
記事: 53
登録日時: 2018年10月26日(金) 12:24

Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得

投稿記事by ぽんぽこねるそん » 2020年1月28日(火) 07:03

①について

コード: 全て選択

$game_party.all_members

で控えを含めたパーティ全員を取得できるので
アクターIDをゲーム変数に配列で取得したいなら

コード: 全て選択

m = $game_party.all_members
#nには配列を代入したい変数番号を入れてください
$game_variables[n] = m.collect{|member| member.id}

こんな感じで
アクターIDをゲーム変数に別々に代入したいなら

コード: 全て選択

members = $game_party.all_members
array = members.collect{|member| member.id}
#変数1~10番に1~10番目のパーティメンバーのIDを代入
#メンバーがいない場合は0を代入します
(1..10).each_with_index do |v_id, i|
$game_variables[v_id] = array[i] || 0
end

こんな感じで取得できます。

②について
提示されているスクリプトは戦闘中でも問題なく動きますが
既にパーティにいるメンバーと並び順を交換するなら

コード: 全て選択

members = $game_party.all_members
index1 = 0
index2 = 4
if members[index1] && members[index2]
$game_party.swap_order(index1, index2)
end

こんな感じで並び順を交換できます。
(上の例だと先頭と5番目のメンバーの並び順を交換しています)
しろう
記事: 34
登録日時: 2020年1月25日(土) 17:40

Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得

投稿記事by しろう » 2020年1月29日(水) 01:26

すごい! ありがとうございます!
早速試してIDの取得が出来ました。

それで、ひとつ疑問があるんですがこのようなスクリプトでは戦闘メンバーを控えメンバーにする事は出来ますか?
入れ替えではなく例えば4人パーティで全員戦闘メンバーの時に誰か一人を戦闘中に控えメンバーにする、とか。

多分、デフォルトのメンバーの入れ替えだとパーティから外すと控えではなくパーティそのものから居なくなってしまいますよね?
ぽんぽこねるそん
記事: 53
登録日時: 2018年10月26日(金) 12:24

Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得

投稿記事by ぽんぽこねるそん » 2020年1月29日(水) 05:52

メンバーの入れ替えだとパーティから外れます。
パーティに残したまま外すのは一応[hide]で戦闘メンバーから外せます。
(並び順自体は変わらないので並び順を変えない限り
パーティ人数がバトルメンバーの最大数より多くても
次点のメンバーが繰り上がったりはせずに最大数より少ない状態で戦闘が続きます
戦闘メンバーが全員外れた場合はその時点で逃走扱いで戦闘が終了します)

コード: 全て選択

index = 0
actor = $game_party.members[index]
actor.hide if actor

こんな感じです。

戦闘メンバーに復帰させたい場合は[appear]で復帰します。

コード: 全て選択

index = 0
actor = $game_party.all_members[index]
actor.appear if actor

こんな感じです。
尚、戦闘が終了するとその時点で復帰します。
しろう
記事: 34
登録日時: 2020年1月25日(土) 17:40

Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得

投稿記事by しろう » 2020年1月29日(水) 17:21

重ね重ねありがとうございます!

“VX / Ace:質問” へ戻る