質問させて下さい。
VXAceにて
①
たとえば戦闘メンバーが4人までの時、5人目以降は控えメンバーとしてパーティに存在していますが
戦闘中は仲間全体に効果があるスキルやアイテムも控えメンバーは対象外です。
マップ上(移動中)は「変数の操作」「ゲームデータ、メンバー5人目」などでIDの取得が出来ますが
戦闘中だとこういったコマンドも何故か使えません。
なので
・戦闘中に控えメンバーを含めたパーティ全員のID取得をしたい
これが出来れば戦闘中の仲間全体へのスキル、アイテムをコモンで疑似的に控えにも効果があるように出来ると思います。
戦闘中に5~10人目の控えメンバーのIDを取得するにはどうすれば良いでしょう?
(パーティ全体の人数は流動的でプレイヤー次第で変えられるような作品です)
②
また、同じようにマップ上では「$game_party.add_actor(3)」「$game_party.remove_actor(4)」のようなメンバーの加入や離脱が出来ますが戦闘中に戦闘メンバーと控えメンバーの入れ替えは可能でしょうか?
もし可能であれば方法を知りたいです。
【解決済】VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得
Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得
①について
で控えを含めたパーティ全員を取得できるので
アクターIDをゲーム変数に配列で取得したいなら
こんな感じで
アクターIDをゲーム変数に別々に代入したいなら
こんな感じで取得できます。
②について
提示されているスクリプトは戦闘中でも問題なく動きますが
既にパーティにいるメンバーと並び順を交換するなら
こんな感じで並び順を交換できます。
(上の例だと先頭と5番目のメンバーの並び順を交換しています)
コード: 全て選択
$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番目のメンバーの並び順を交換しています)
Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得
すごい! ありがとうございます!
早速試してIDの取得が出来ました。
それで、ひとつ疑問があるんですがこのようなスクリプトでは戦闘メンバーを控えメンバーにする事は出来ますか?
入れ替えではなく例えば4人パーティで全員戦闘メンバーの時に誰か一人を戦闘中に控えメンバーにする、とか。
多分、デフォルトのメンバーの入れ替えだとパーティから外すと控えではなくパーティそのものから居なくなってしまいますよね?
早速試してIDの取得が出来ました。
それで、ひとつ疑問があるんですがこのようなスクリプトでは戦闘メンバーを控えメンバーにする事は出来ますか?
入れ替えではなく例えば4人パーティで全員戦闘メンバーの時に誰か一人を戦闘中に控えメンバーにする、とか。
多分、デフォルトのメンバーの入れ替えだとパーティから外すと控えではなくパーティそのものから居なくなってしまいますよね?
Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得
メンバーの入れ替えだとパーティから外れます。
パーティに残したまま外すのは一応[hide]で戦闘メンバーから外せます。
(並び順自体は変わらないので並び順を変えない限り
パーティ人数がバトルメンバーの最大数より多くても
次点のメンバーが繰り上がったりはせずに最大数より少ない状態で戦闘が続きます
戦闘メンバーが全員外れた場合はその時点で逃走扱いで戦闘が終了します)
こんな感じです。
戦闘メンバーに復帰させたい場合は[appear]で復帰します。
こんな感じです。
尚、戦闘が終了するとその時点で復帰します。
パーティに残したまま外すのは一応[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
こんな感じです。
尚、戦闘が終了するとその時点で復帰します。
Re: VXAce 戦闘中、控えメンバーを含めたパーティ全員のIDの取得
重ね重ねありがとうございます!