ページ 11

【解決済み】パーティの仲間がそのステートを持っているかを判定させる

Posted: 2019年5月26日(日) 23:43
by kamometrain
パーティのなかに特定のステートを持っている人がいるか いないかを判定し、条件分岐させたと思っていますが、その方法がわかりません。
例えば、毒をもっている(戦闘)メンバーがいるか いないかといったものです。
どうすれば、その条件を満たしているかわかるかを教えてください。

Re: パーティの仲間がそのステートを持っているかを判定させる

Posted: 2019年6月02日(日) 16:31
by astral
こんにちは。
例えば戦闘パーティーならバトルイベントで判定することが出来ますが
こういったことでしょうか。

コード: 全て選択

◆条件分岐:ハロルドがパーティにいる
  ◆条件分岐:ハロルドが毒になっている
    ◆スイッチの操作:#0026 毒パーティー = ON
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:テレーゼがパーティにいる
  ◆条件分岐:テレーゼが毒になっている
    ◆スイッチの操作:#0026 毒パーティー = ON
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:マーシャがパーティにいる
  ◆条件分岐:マーシャが毒になっている
    ◆スイッチの操作:#0026 毒パーティー = ON
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:ルキウスがパーティにいる
  ◆条件分岐:ルキウスが毒になっている
    ◆スイッチの操作:#0026 毒パーティー = ON
    ◆
  :分岐終了
  ◆
:分岐終了
◆条件分岐:毒パーティーがON
  ◆文章:なし, ウィンドウ, 下
  :  :毒になっているパーティーメンバーがいます!
  ◆スイッチの操作:#0026 毒パーティー = OFF
  ◆
:分岐終了

Re: パーティの仲間がそのステートを持っているかを判定させる

Posted: 2019年6月02日(日) 17:00
by ムノクラ
下記をヒントにメンバー分のステートIDを別々の変数に入れて、条件分岐に使用すれば、かなり簡略化出来ると思います。


ツクールMVのスクリプトで条件分岐を行う方法
http://rpgmaker-script-wiki.xyz/condition_mv.php#11
アクターのステート
$gameActors.actor(アクターID).isStateAffected(ステートID)


サンプルコード(アクターIDが1のアクターがステートID4(デフォルトで毒)かどうかで分岐)

if($gameActors.actor(1).isStateAffected(4)){

//(処理)

}
まず戦闘メンバーのアクターIDを取得して、
SS01.png
ステートID4がついているかどうかで判断する場合は、下記のように

コード: 全て選択

if($gameActors.actor($gameVariables.value(3)).isStateAffected(4)){
//(処理)
}
if($gameActors.actor($gameVariables.value(4)).isStateAffected(4)){
//(処理)
}
if($gameActors.actor($gameVariables.value(5)).isStateAffected(4)){
//(処理)
}
if($gameActors.actor($gameVariables.value(6)).isStateAffected(4)){
//(処理)
}
という処理が効率的だと思います。

ステートは複数つく可能性があるので、どのステートを受けているかという方向で調べるのは現実的では無さそうです。

Re: パーティの仲間がそのステートを持っているかを判定させる

Posted: 2019年6月02日(日) 18:57
by にいやん
アクターを個々に判定させるとアクターの数だけ条件分岐が必要ですが事前にパーティ人数を取得してそのパーティの人数分だけ判定するという方法もあります。以下の実行内容ならパーティ人数がいくら増えても分岐を増やさずに済みます。アクターの数が少なければ必要ありませんが、多い場合はこちらのほうがかなり簡略化できます。

パーティ人数が増えたら増えた分だけ自動で判定。100人いれば100人の判定をします。
1.jpg

Re: 【解決済み】パーティの仲間がそのステートを持っているかを判定させる

Posted: 2019年6月04日(火) 23:56
by kamometrain
いろいろなアドバイスありがとうございました。
アクターの数も少し多かったため、ひとつ一つ判定するのが厳しいと思ったのですが、おかげで解決できそうです。
お忙しいところ、ありがとうございました。