パーティのアクター並び順を保持したい

返信する
アバター
Telmina
記事: 30
登録日時: 2016年1月16日(土) 23:22
お住まい: 秋葉原電気街徒歩圏
連絡する:

パーティのアクター並び順を保持したい

投稿記事 by Telmina »

 表題の件について、いい方法を思い浮かばず、困っております。

 具体的には、イベントの都合でいったん単独行動にするためにパーティを解散し、イベント終了後に、解散前の並び順でパーティを復活させたいと考えております。

 次のいずれかの情報を取得できればおそらくはどうにかなるのではと考えております。
  • パーティのn番目にいるアクターのID
  • IDがn番のアクターがパーティの何番目にいるか
 今のところ、下記のようなJavaScriptコードをイベントのスクリプトコマンドに記述していますが、スマートではありませんし、これよりもいい方法があるような気がしています。

コード: 全て選択

// i:パーティメンバーの位置
for (var i = 0; i < $gameParty.members().length; i++) {
	// j:アクターのID
	for (var j = 1; j < $gameActors._data.length + 1; j++) {
		// (i+1)番目のアクターのIDがjの場合…
		if ($gameParty.members()[i] == $gameActors._data[j]) {
			// 変数(n+i)に、アクターのID(j)を格納
			$gameVariables.setValue(n + i, j);
			break;
		}
	}
}
 もし、パーティの並び順の情報を保持する、よりよい方法をご存じの方がいらっしゃいましたら、お知恵をお貸しいただきたいと思います。
 
名無し蛙
記事: 352
登録日時: 2015年11月23日(月) 02:46

Re: パーティのアクター並び順を保持したい

投稿記事 by 名無し蛙 »

Game_Actorは自分のアクターIDを知っていますね
一応注意しておくとsize()とmembers()は戦闘中に実行すると先頭4人までしか反映されません
戦闘、非戦闘に関わらず全てのメンバーを取得したい場合はallMembers()を使います

コード: 全て選択

for(var i=0; i < $gameParty.size(); i++) {
    $gameVariables.setValue(n + i, $gameParty.members()[i].actorId());
}
_が付いてる変数を使う事を気にしなければこれでも良いです

コード: 全て選択

for(var i=0; i < $gameParty._actors.length; i++) {
    $gameVariables.setValue(n + i, $gameParty._actors[i]);
}
アバター
Telmina
記事: 30
登録日時: 2016年1月16日(土) 23:22
お住まい: 秋葉原電気街徒歩圏
連絡する:

Re: パーティのアクター並び順を保持したい

投稿記事 by Telmina »

名無し蛙様:

 ご回答ありがとうございます!
名無し蛙 さんが書きました:Game_Actorは自分のアクターIDを知っていますね
 自分のアクターIDを知っていることに気づきませんでした…。

 ご教示いただいた方法、後ほど試してみます。

 取り急ぎ。
返信する

“MV:質問”に戻る