複数の中から一つでも当てはまれば正を返す方法

返信する
hogehoge

複数の中から一つでも当てはまれば正を返す方法

投稿記事 by hogehoge »

重ね重ね質問すみません。
敵グループの名前を全て取得し、その中で「別の変数に収納してある名前」にどれか一つでも一致するものがあれば正の値を返す動作をさせたいのですが、うまく行きません。

念のため、エラーの出るイベント構成ですが、自分で解決しようとしたものを乗せておきます。
文章は正の値がでた時のための確認メッセージです。

コード: 全て選択

◆変数の操作:#0021 今の敵キャラID1体目 = $gameTroop.members()[0] ? $gameTroop.members()[0].originalName() : '';
◆変数の操作:#0022 今の敵キャラID2体目 = $gameTroop.members()[1] ? $gameTroop.members()[1].originalName() : '';
◆変数の操作:#0023 今の敵キャラID3体目 = $gameTroop.members()[2] ? $gameTroop.members()[2].originalName() : '';
◆変数の操作:#0024 今の敵キャラID4体目 = $gameTroop.members()[3] ? $gameTroop.members()[3].originalName() : '';
◆変数の操作:#0025 今の敵キャラID5体目 = $gameTroop.members()[4] ? $gameTroop.members()[4].originalName() : '';
◆条件分岐:スクリプト:[$gameTroop.members().originalName()].contains($gameVariables.value(21))
  ◆文章:なし, ウィンドウ, 下
  :  :今の
  :  :\V[21],\V[22],\V[23],\V[24],\V[25]
  :  :前の
  :  :\V[26],\V[27],\V[28],\V[29],\V[30]
  ◆
:それ以外のとき
  ◆条件分岐:スクリプト:[$gameTroop.members().originalName()].contains($gameVariables.value(22))
    ◆文章:なし, ウィンドウ, 下
    :  :今の
    :  :\V[21],\V[22],\V[23],\V[24],\V[25]
    :  :前の
    :  :\V[26],\V[27],\V[28],\V[29],\V[30]
    ◆
  :それ以外のとき
    ◆条件分岐:スクリプト:[$gameTroop.members().originalName()].contains($gameVariables.value(23))
      ◆文章:なし, ウィンドウ, 下
      :  :今の
      :  :\V[21],\V[22],\V[23],\V[24],\V[25]
      :  :前の
      :  :\V[26],\V[27],\V[28],\V[29],\V[30]
      ◆
    :それ以外のとき
      ◆条件分岐:スクリプト:[$gameTroop.members().originalName()].contains($gameVariables.value(24))
        ◆文章:なし, ウィンドウ, 下
        :  :今の
        :  :\V[21],\V[22],\V[23],\V[24],\V[25]
        :  :前の
        :  :\V[26],\V[27],\V[28],\V[29],\V[30]
        ◆
      :それ以外のとき
        ◆条件分岐:スクリプト:[$gameTroop.members().originalName()].contains($gameVariables.value(25))
          ◆文章:なし, ウィンドウ, 下
          :  :今の
          :  :\V[21],\V[22],\V[23],\V[24],\V[25]
          :  :前の
          :  :\V[26],\V[27],\V[28],\V[29],\V[30]
          ◆
        :分岐終了
        ◆
      :分岐終了
      ◆
    :分岐終了
    ◆
  :分岐終了
  ◆
:分岐終了
◆変数の操作:#0026 前の敵キャラID1体目 = $gameTroop.members()[0] ? $gameTroop.members()[0].originalName() : '';
◆変数の操作:#0027 前の敵キャラID2体目 = $gameTroop.members()[1] ? $gameTroop.members()[1].originalName() : '';
◆変数の操作:#0028 前の敵キャラID3体目 = $gameTroop.members()[2] ? $gameTroop.members()[2].originalName() : '';
◆変数の操作:#0029 前の敵キャラID4体目 = $gameTroop.members()[3] ? $gameTroop.members()[3].originalName() : '';
◆変数の操作:#0030 前の敵キャラID5体目 = $gameTroop.members()[4] ? $gameTroop.members()[4].originalName() : '';
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

Re: 複数の中から一つでも当てはまれば正を返す方法

投稿記事 by しぐれん »

members().some()を使ってみましょう。
この関数は、判定用の関数を引数として渡し、一つでも条件を満たせばtrueを返します。
おそらく、イベントコマンドで組むよりもプラグインを自作する方がスマートに解決できると思います。
それと文字列の比較は重い処理なので、enemyIdとの比較で可能ならそちらを使うことをお勧めします。

コード: 全て選択


var name ='何か'
var result =$gameTroop.members().some(function(enemy){
  return enemy.originalName()===name;
}
)
if(result){
//実行したい処理
}
現在、プラグイン依頼はお休み中です。
hogehoge

Re: 複数の中から一つでも当てはまれば正を返す方法

投稿記事 by hogehoge »

返信ありがとうございます!
私はスクリプトを組めるほどの知識と能力が無いので、難しいかなと…
いただいたコードを元にスクリプトを組み直した結果、うまくいきました!ありがとうございます!
返信する

“MV:質問”に戻る