ページ 11

戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 15:03
by ジーザス塚本
お世話になります

複数のアクターの中から3人を選び戦うゲームを作っています。

現在戦闘参加人数を3人にするプラグインと、戦闘メンバー以外を非表示にするプラグインを使い、
4番目以降のアクターを非表示にする&並べ替えで複数のキャラクターの中から3人パーティを作っているように見せています。

アクター1もしくは2もしくは3がパーティ(戦闘参加メンバー)にいるとき、◯◯が起こる
1,2,3が1人もいないときは◯◯の効果を消す
ということをしたいのですが、パーティにいるかどうかで分岐させると、
非表示になっているだけなので控えにいる状態でも◯◯が起こってしまいます。

なので戦闘参加メンバーに1もしくは2もしくは3がいるときに◯◯ ということをしたいです。

条件分岐で
$gameParty.members()[0].actorId() == 1
のとき◯◯
それ以外の時◯◯の効果を消す

とやればパーティの先頭がアクターID1のとき◯◯が起こる そうじゃない場合◯◯が消える
というところまでたどり着いたのですが、それ以上どうしてもうまくいきませんでした。

どのような式を書けばいいのでしょうか。

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 16:11
by まっつUP
ジーザス塚本様

プラグインの処理にもよりますが
$gameParty.battleMembers()[0].actorId() == 1
でパーティの先頭がID1のアクターかどうかの条件になると思います。

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 16:30
by ジーザス塚本
返信有難うございます!

先頭がアクターID1かどうかの条件はわかるのですが、
戦闘参加メンバー(つまり先頭と2番目と3番目)が1または2または3のとき~
とやりたいのです。

「または」を使う方法はないのでしょうか?

$gameParty.battleMembers()[0].actorId()||$gameParty.battleMembers()[1].actorId()||$gameParty.battleMembers()[2].actorId() == 1||2||3

で試してみましたが、うまくいきませんでした。

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 16:42
by まっつUP
条件式がそれぞれ適切に指定されていないからですが・・・

それは、戦闘参加メンバー内でアクターが特定の順に並んでいるかどうかを確認したいのでしょうか。
それとも戦闘参加メンバー内に特定のIDのアクターが含まれているかを確認したいのでしょうか。

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 16:49
by ジーザス塚本
返信有難うございます。

繰り返しますが、やりたいことは

戦闘参加メンバーのアクターIDが1または2または3 のとき◯◯
それ以外の時(つまり1も2も3も戦闘に参加してない時)✕✕

ということなので、
「戦闘参加メンバー内に特定のIDのアクターが含まれているか」になります。

よろしくお願いします。

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 16:53
by ツミオ
こんにちは。
横から失礼します。

以下のコードはいかがでしょうか?

コード: 全て選択

//アクター1もしくは2もしくは3がパーティ(戦闘参加メンバー)にいるときtrueを返す
$gameParty.battleMembers().some(member => [1, 2, 3].contains(member.actorId()));

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 17:03
by まっつUP
それであれば以下の条件式が使えると思います。
参照したいアクター(アクターID)を変えたい場合は式の先頭にある配列の内容を変更してください。

コード: 全て選択

[1,2,3].some(function(actorId) {var actor = $gameActors.actor(actorId); return $gameParty.battleMembers().contains(actor)});

Re: 戦闘参加メンバーで条件分岐させる方法

Posted: 2018年10月27日(土) 17:09
by ジーザス塚本
まっつUP様

ありがとうございます!
想像していた動作ができました。
スクリプトの知識が全くないので質問の仕方がよくなかったかもしれませんが、対応して頂き助かりました。

ツミオ様もありがとうございます。