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

ジーザス塚本
記事: 34
登録日時: 2018年7月04日(水) 15:55

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

投稿記事by ジーザス塚本 » 2018年10月27日(土) 15:03

お世話になります

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

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

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

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

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

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

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

アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

投稿記事by まっつUP » 2018年10月27日(土) 16:11

ジーザス塚本様

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

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
ジーザス塚本
記事: 34
登録日時: 2018年7月04日(水) 15:55

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

投稿記事by ジーザス塚本 » 2018年10月27日(土) 16:30

返信有難うございます!

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

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

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

で試してみましたが、うまくいきませんでした。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

投稿記事by まっつUP » 2018年10月27日(土) 16:42

条件式がそれぞれ適切に指定されていないからですが・・・

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

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
ジーザス塚本
記事: 34
登録日時: 2018年7月04日(水) 15:55

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

投稿記事by ジーザス塚本 » 2018年10月27日(土) 16:49

返信有難うございます。

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

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

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

よろしくお願いします。
アバター
ツミオ
記事: 83
登録日時: 2017年4月02日(日) 13:46
連絡を取る:

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

投稿記事by ツミオ » 2018年10月27日(土) 16:53

こんにちは。
横から失礼します。

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

コード: 全て選択

//アクター1もしくは2もしくは3がパーティ(戦闘参加メンバー)にいるときtrueを返す
$gameParty.battleMembers().some(member => [1, 2, 3].contains(member.actorId()));
【Twitter】https://twitter.com/TsumioNtGame/
【GitHub】https://github.com/Tsumio/rmmv-plugins

有償の依頼も募集中。
今まで有償で制作したものは実績をご覧ください。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

投稿記事by まっつUP » 2018年10月27日(土) 17:03

それであれば以下の条件式が使えると思います。
参照したいアクター(アクターID)を変えたい場合は式の先頭にある配列の内容を変更してください。

コード: 全て選択

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

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
ジーザス塚本
記事: 34
登録日時: 2018年7月04日(水) 15:55

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

投稿記事by ジーザス塚本 » 2018年10月27日(土) 17:09

まっつUP様

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

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

“MV:質問” へ戻る