ページ 11

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

Posted: 2016年3月05日(土) 04:11
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;
		}
	}
}
 もし、パーティの並び順の情報を保持する、よりよい方法をご存じの方がいらっしゃいましたら、お知恵をお貸しいただきたいと思います。
 

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

Posted: 2016年3月05日(土) 12:15
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]);
}

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

Posted: 2016年3月05日(土) 16:33
by Telmina
名無し蛙様:

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

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

 取り急ぎ。