【解決】条件分岐でアクターのHPの割合を使いたい

返信する
Albiorix
記事: 4
登録日時: 2017年11月27日(月) 18:30

【解決】条件分岐でアクターのHPの割合を使いたい

投稿記事 by Albiorix »

こんばんは、初めて質問させていただきます。

アクターのHPの割合によって、内容が変化するコモンイベントを作りたいと思っています。
ID1番のアクターの現在HPが、最大値の「10割以下8割以上」のときに文章Aを、
「8割未満4割以上」のときに文章Bを、
「4割未満0割以上」のときに文章Cを表示する、的なことをやりたいのですが、
条件分岐でどのように設定すればよいのかわからず、質問させていただいた次第です。
宜しくお願いいたします。
最後に編集したユーザー Albiorix [ 2017年11月27日(月) 20:53 ], 累計 1 回
ぼた餅
記事: 187
登録日時: 2016年7月17日(日) 20:22

Re: 条件分岐でアクターのHPの割合を使いたい

投稿記事 by ぼた餅 »

こんにちは、Albiorixさん。
以下のような設定はどうでしょうか?

<必要プラグイン>
PNDK_FloatingPointVariables

コード: 全て選択

◆変数の操作:#0001 最大HP = (アクター名)の最大HP
◆変数の操作:#0002 最大HPの一割 = $gameVariables.value(1) / 10
◆変数の操作:#0003 現在のHP = (アクター名)のHP
◆変数の操作:#0004 現在HPが最大値の何割か = $gameVariables.value(3) / $gameVariables.value(2)
◆条件分岐:現在HPが最大値の何割か ≦ 3
  ◆文章:なし, ウィンドウ, 下
  :  :文章C
  ◆ラベルジャンプ:1
  ◆
:分岐終了
◆条件分岐:現在HPが最大値の何割か ≦ 7
  ◆文章:なし, ウィンドウ, 下
  :  :文章B
  ◆ラベルジャンプ:1
  ◆
:分岐終了
◆条件分岐:現在HPが最大値の何割か ≦ 10
  ◆文章:なし, ウィンドウ, 下
  :  :文章A
  ◆ラベルジャンプ:1
  ◆
:分岐終了
◆ラベル:1

修正点
「≧」→「≦」に修正
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡する:

Re: 条件分岐でアクターのHPの割合を使いたい

投稿記事 by にゃたま »

Albiorix様

こんばんは。先にぼた餅様が回答されてしまいましたが折角試作したのでご紹介のみ致します。

変数1番に対象アクターHP、変数2番に対象アクターMAX HPが入るようにして
対象アクターHP / 対象アクターMAX HPで割合を求めた結果と比較しました。

変数3に求めた結果を代入してそれを比較対象にしても良いですが、
上記の例でそうするとデフォで小数が変数に入らないので別途プラグインを入れる必要があります。
先に提示されたぼた餅様のプラグインでも構いませんが、
トリアコンタン様のFloatVariables.jsというプラグインでも可能です。
https://raw.githubusercontent.com/triac ... riables.js
上記プラグインを入れない場合は
(対象アクターHP / 対象アクターMAX HP) * 10として小数点を無くす必要があります。
※追記(↑ぼた餅様のコードが参考になります)

こちらのコードの利点としては使用する変数が少なくて済むことです。

コード: 全て選択

◆変数の操作:#0001 HP = [対象アクター]のHP
◆変数の操作:#0002 MAX HP = [対象アクター]の最大HP
◆条件分岐:スクリプト:$gameVariables.value(1) / $gameVariables.value(2) >= 0.8
  ◆文章:なし, ウィンドウ, 下
  :  :HP8割以上
  ◆
:それ以外のとき
  ◆条件分岐:スクリプト:$gameVariables.value(1) / $gameVariables.value(2) >= 0.4
    ◆文章:なし, ウィンドウ, 下
    :  :HP4割以上
    ◆
  :それ以外のとき
    ◆文章:なし, ウィンドウ, 下
    :  :HP0割以上
    ◆
  :分岐終了
  ◆
:分岐終了
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡する:

Re: 条件分岐でアクターのHPの割合を使いたい

投稿記事 by にいやん »

既にお二方がお答えしているようなのでそちらを使えば問題ないですが、変数を使いたくない場合は直接参照元で判断させればいいので下のような使い方もできます。この場合はデータのリフレッシュが行われることがなく、並列処理でも比較的ゲームが重くなることを避けることが出来ます。(分岐先でスイッチや変数の処理が入ると意味がなくなりますが…)

ツクールMVの仕様上、変数に小数は入らないのですがスクリプトでの計算では普通に使えます。

コード: 全て選択

◆条件分岐:スクリプト:$gameActors.actor(1).hp >= ($gameActors.actor(1).param(0) * 0.8)
 ◆文章:なし、ウィンドウ、下
 :  :HPが8割以上です
 ◆
:それ以外のとき
 ◆条件分岐:スクリプト:$gameActors.actor(1).hp < ($gameActors.actor(1).param(0) * 0.8) && $gameActors.actor(1).hp >= ($gameActors.actor(1).param(0) * 0.4)
  ◆文章:なし、ウィンドウ、下
  :  :HPが8割未満4割以上です
  ◆
 :それ以外のとき
 ◆条件分岐:スクリプト:$gameActors.actor(1).hp < ($gameActors.actor(1).param(0) * 0.4)
   ◆文章:なし、ウィンドウ、下
      :HPが4割未満です
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:分岐終了
◆
最後に編集したユーザー にいやん [ 2017年11月27日(月) 22:22 ], 累計 1 回
Albiorix
記事: 4
登録日時: 2017年11月27日(月) 18:30

Re: 条件分岐でアクターのHPの割合を使いたい

投稿記事 by Albiorix »

ぼた餅様、にゃたま様、にいやん様
皆様お早いご返信ありがとうございます。
どの方法も試させていただき、どれも理想通りの挙動を確認できました。
今回は変数を使わずに済む、にいやん様のコードを使用させていただくことにしましたが、
どのコードも大変参考になり、勉強になりました。

とても助かりました!この度は本当にありがとうございました。
返信する

“MV:質問”に戻る