ページ 11

【解決済み】エネミー選択ウィンドウに死んでいるエネミーも

Posted: 2016年11月06日(日) 18:50
by 月宮りお
戦闘中に攻撃・魔法・アイテムの対象を選ぶエネミーウィンドウについてですが、
訳あって「生きているエネミーだけ」ではなく「死んでいるエネミーも
含めて全員」から選択できるように変更しようとしています。
エネミーウィンドウを編集して、死んでも選択肢から消えずに全員の名前が
並ぶ、というところまではできました。

次に、初期カーソル位置を変更しようとしています。
今のところ、エネミーウィンドウが出たとき、常に「一番上のエネミー」に
カーソルが出ているので、「生きているエネミーの中で一番上にいるエネミー」に
カーソルが出るようにしようとしています。

Scene_Battle.prototype.selectEnemySelection = function() {
this._enemyWindow.refresh();
this._enemyWindow.show();
this._enemyWindow.select(0);
this._enemyWindow.activate();
};

↑ここの4行目にある(0)を、(1)にすれば2番目のエネミーに、
(2)にすれば3番目のエネミーに、(3)にすれば4番目のエネミーに、
初期カーソル位置が変わることは分かりました。そこで、

エネミーAが生きていれば(0)を入れる。
エネミーBが存在していて生きていれば(1)を入れる。
エネミーCが存在していて生きていれば(2)を入れる。
エネミーDが存在していて生きていれば(3)を入れる。

というふうに条件分岐しようとしているのですが、中々上手くいかず
行き詰まっています。多分、条件分岐はどうにか書けると思うのですが、
エネミーのデータを取り出すことができない、という状態です。
どう書けばよいものでしょうか?

Re: エネミー選択ウィンドウに死んでいるエネミーも

Posted: 2016年11月06日(日) 20:07
by まっつUP
月宮りお様
お世話になります。

「まず「死んでいるエネミーも含めて全員」から選択できるように」の状態にして
生きているメンバー番目の位置のindexを選択しました。
そしたらできたっぽいので貼っておきます。
(あまりテストしていません、改変は自己責任でお願いします。)
aliveMembers()を使えばもっとうまくできそうな気がします。(私にはそれは難しい。)

Scene_Battle.prototype.selectEnemySelection = function() {
this._enemyWindow.refresh();
this._enemyWindow.show();
this._enemyWindow.select(this.selene());
console.log(this.selene());
this._enemyWindow.activate();
};

Scene_Battle.prototype.selene = function() {
for(var i = 0; i < $gameTroop.members().length; i++){
if($gameTroop.members().isAlive()) return i;
}
return 0;
};

Re: エネミー選択ウィンドウに死んでいるエネミーも

Posted: 2016年11月06日(日) 20:21
by 奏ねこま
おそらくthis._enemiesに生き死に関係なく全部のエネミーが入っているのだと思いますので、

this._enemies.indexOf($gameTroop.aliveMembers()[0])

で、「生きているエネミーのうち、先頭のエネミーのindex」が取得できます。
これをselectに渡せば、ご希望の状態になるのではないでしょうか。

Re: エネミー選択ウィンドウに死んでいるエネミーも

Posted: 2016年11月08日(火) 08:43
by 月宮りお
お二方、ご回答ありがとうございます!
お陰様で無事にできました^0^
途方に暮れていたので本当に助かりました!