複数の変数のうち、最大の項目での条件分岐

PEM
記事: 15
登録日時: 2016年3月27日(日) 09:06

複数の変数のうち、最大の項目での条件分岐

投稿記事by PEM » 2016年4月08日(金) 21:35

複数の変数のうち、一番高い項目によって、
分岐を起こしたいのですが、変数の操作や条件分岐で可能でしょうか?

例で上げると、
複数のキャラクター(NPC)のうち、最も好感度の高い(or低い)キャラがパーティーに加わる(or別れる)

というような、使い方をしたいです。
Vxaceで似た方法を見つけたのですが、スクリプトを使用しており、
MVへ当てはめることが出来ず、自力での解決が難しいです。どなたかお願いします。

fftfantt
記事: 22
登録日時: 2015年11月26日(木) 00:57
連絡を取る:

Re: 複数の変数のうち、最大の項目での条件分岐

投稿記事by fftfantt » 2016年4月09日(土) 06:58

2つほど確認させてください。

1.比較する変数の番号は1~10みたいな範囲ですか? それとも1,11,21,のようにばらばらですか?

2.同じ値の場合は、どう処理されるのが望ましいでしょうか? 変数の№が低いほうや高い方が対象でいいですか?
  それとも同じ値の変数すべてでしょうか?
PEM
記事: 15
登録日時: 2016年3月27日(日) 09:06

Re: 複数の変数のうち、最大の項目での条件分岐

投稿記事by PEM » 2016年4月10日(日) 15:35

可能であれば、バラバラが扱い易いと思いますが、範囲でもその中に変数を配置すれば問題ないと思います。

値が同じ場合には、 変数の№が高い方でも、低い方でもどちらでも、変数の配置順で対応できると思います。

後、これは上記の質問とは少し変わってくるかも知れませんが、
変数が一定の閾値を出ないかぎりには反応しない。
ということも可能でしょうか?

例)
好感度が10以上で仲間
嫌悪度が10位上で離別
両方共、その間の閾値内では反応無し。
例2)
武器強化度が10以上で強化
武器劣化度が10以上で破損
両方共、その間の閾値内では反応なし。

といったような、ものです。
よろしくお願いします。
fftfantt
記事: 22
登録日時: 2015年11月26日(木) 00:57
連絡を取る:

Re: 複数の変数のうち、最大の項目での条件分岐

投稿記事by fftfantt » 2016年4月12日(火) 01:41

一定範囲内の変数で、重複した場合に調整できるのであれば、以下ツイートに張った画像のように組めば、最大値と格納されている変数の番号、最小値と格納されている変数の番号がそれぞれ抜き出せるので、後はその値を使った条件分岐が可能です。内容的には単純で、ループを利用して順に比較しています。

https://twitter.com/fftfantt/status/719560596920766465

Map001.jsonを圧縮して添付しますので、新規プロジェクトでこちらを上書きすれば実際に動かして確認可能です。
zipファイルを解凍し、dataフォルダの中にあるMap001.jsonにコピーしてそのまま使えます。

くれぐれも今作業されているMap001.jsonを上書かないようお気をつけください。

もしくは、プラグインの方がよろしいですか?


※追記 ツイート画像2枚目3枚目のプラグインコマンドのところは蛇足で必要ありません。。。
添付ファイル
Map001.zip
マップ1のイベントJSON
(1.4 KiB) ダウンロード数: 29 回
最後に編集したユーザー fftfantt on 2016年4月12日(火) 02:32 [ 編集 1 回目 ]
fftfantt
記事: 22
登録日時: 2015年11月26日(木) 00:57
連絡を取る:

Re: 複数の変数のうち、最大の項目での条件分岐

投稿記事by fftfantt » 2016年4月12日(火) 02:14

>例)
>好感度が10以上で仲間
>嫌悪度が10位上で離別
>両方共、その間の閾値内では反応無し。
>例2)
>武器強化度が10以上で強化
>武器劣化度が10以上で破損
>両方共、その間の閾値内では反応なし。

こちらは基本的な条件分岐で可能です、あとはコモンイベントにして値が変わるタイミングでチェックを入れるようにすればいいのではないでしょうか?
PEM
記事: 15
登録日時: 2016年3月27日(日) 09:06

Re: 複数の変数のうち、最大の項目での条件分岐

投稿記事by PEM » 2016年4月12日(火) 21:52

わざわざ、マップまで作っての返信、本当に感謝します!
しかし残念ながら、
今の自分の頭では、載せていただいた情報がちんぷんかんぷんなので、
今回この項目は諦め、もう少し理解を深めてから、挑戦したいと思います。申し訳ない。

後述の質問については、なんとなしにやり方がわかってきました。
答えてくださる皆さんのおかげで、少しずつですが変数を使えるようになってきています。
有難う御座いました。
fftfantt
記事: 22
登録日時: 2015年11月26日(木) 00:57
連絡を取る:

Re: 複数の変数のうち、最大の項目での条件分岐

投稿記事by fftfantt » 2016年4月13日(水) 02:06

分かりにくい内容ですみませんでした
もう少し具体的に書きますねー

1.まず、各キャラの好感度をそれぞれの番号の変数に格納します
キャラ1の好感度を変数の11番に格納
キャラ2の好感度を変数の12番に格納
キャラ3の好感度を変数の13番に格納
キャラ4の好感度を変数の14番に格納
キャラ5の好感度を変数の15番に格納

2.次に、変数の1番にキャラ1の好感度を格納した変数の番号と同じ数字「11」を格納します
3.キャラ1の好感度を変数の2番に、キャラ1の好感度を格納した変数の番号「11」を変数の3番に格納します
4.キャラの1と他のキャラの好感度を順に比較していきます
5.キャラ1よりキャラ2の好感度が高いのでキャラ2の好感度を変数の2番に入れ、好感度を格納した変数の
番号と 同じ数字「12」を格納します
6.同じ要領で全部のキャラの好感度を比較し、変数の2番には一番高いキャラの好感度、変数の3番には、
 一番高い好感度を格納した変数の番号である「11」が入っています


ちなみに↓で1番の変数に格納されている値を取得できます
$gameVariables._data[1]

↓は1番の変数に格納されている番号の値です
これでずつ1を加算していけば、好感度が格納された変数の番号の値を順々にしらべていくことができます
$gameVariables._data[$gameVariables._data[1]]

“MV:質問” へ戻る