条件分岐でこのアイテムを持っている という処理で
それを複数やる場合ってその下に重ねたりしますよね?
ツクール初心者で条件分岐で複数やる方法が分からない!
条件分岐で変数使い過ぎて分からなくなる!
条件分岐で何重にも重ねてわけわからんくなる!
条件分岐が多くなる分、処理も多くなる!
・・・手間じゃね?
まず、条件分岐の重ねって…MVでは超重くなるんよね。
さてと…まず、初心者向けに…
~と同じ『 == 』、
~以上『 >= 』、~以下『 <= 』、
~より上『 > 』、~より下(未満)『 < 』
ちなみに我も演算を独学し始めたのが最近で
少しだけ簡単な処理のメニュー系プラグインを
作れるようになったくらいのド素人よ。
ツクール初心者よりは演算は理解してるとは思う…多分。
いくつかプラグイン作れてやっと中級者かなーと思ってる。
だからまだ我は初心者というよりはド素人。
そのうち、左シフト『<<=』とか右シフト『>>=』とか使えたら
すごい確率のガチャができるんでは?と思ってる。
一番はべき乗『**』の代入…べき乗代入『**=』で
ガチャの確率がすごくなりそう。
まぁ、この時じゃないと出ないなんて確率のキャラだとしたら…
うっわ!めっさ課金することになるじゃん!!
まぁ…すごいことになるからアイテムの所持と仮定して
例えば左シフトでアイテム1が1個持ってる時で
次がアイテム1を10個の時としたいなら
…『<<= 1』とすると$gameParty.hasItem($dataItems[1]) <<= 1
これで左シフトするから…いや、これだとエラるな。
not functionになりそうだ。(゜-゜)
以上、以下とは違ってシフトさせるわけだから
1からこれで10になるのは間違いないがまず、式が足りない…
変数の算術演算…『let』が必要になるんでは…?(゜-゜)
・・・さて、
例えば変数を『変数1』が『同じ…同値』で『変数2』が『同値』の時なら
($gameVariables.value(1) == 1) && ($gameVariables.value(2) == 1)
『~以上』であって『~以下』にしたい場合、
これも条件分岐作った下に条件分岐…でやらなくても
($gameVariables.value(1) >= 1) && ($gameVariables.value(2) <= 1)
となるわけで
『変数1』と『変数2』が『同値』で
そのどちらかが条件となるようにしたいなら
($gameVariables.value(1) == 1) || ($gameVariables.value(2) == 1)
となるように
『&&』は『&…アンド』…『それと』、『かつ』
『||』は『または』となるので『どちらかの条件』に。
これ、&&とか2つ重ねてるから
『バイナリー論理演算子』ってやつじゃないかな?
&一つだけなら、『ビット論理積』かな?(゜-゜)
ま、ツクール製作初心者は特に
「そんなんどうでもいいから複数処理方法とか知りたいんじゃー!」
が大半でしょうがね。
いや…ツクールで条件分岐する時に変数1を+1する処理だってね…
『+=』って『代入演算子』やってるわけでして
これを理解すると複数処理が楽になるということでしてね…
これ、&一つだけ…とか+だけ…とかしちゃう人いて、
エラー原因分からず…もあるんすよ。
&& とか += とか これつけずに
エラーか反応しないか変な動作するとか聞くんすよね。
で、理解するようになれば ++ で
『インクリメント演算子』とか使ったりで…。
まぁ、はいはい…でしょうがね。
まぁ、インクリメント演算子が分かれば
『変数1を足す』というのも『++』でできちゃうわけで…。
さて…
ってことはだ…
『アイテム1を持っている時』は
$gameParty.numItems($dataItems[1])
になるわけだから
まず繋げるなら数式としては()がいる…
というわけで『アイテム1をもっている』かつ『アイテム2を持っている』
いわば両方持ってる状態にしたい…
となると、
($gameParty.numItems($dataItems[1])) && ($gameParty.numItems($dataItems[2]))
で、いいんではないだろうか?
さらにいうとだ…
『アイテム1が10個以上の時かつアイテム2が20個以上の時』
といった処理をしたいとしよう…
これさ、条件分岐そのままでやると
条件分岐2つでさらに変数2個使うからメンドくね?
以前書いた『アイテムを所持してない時の分岐方法』
これでは『$gameParty.hasItem($dataItems[1]) <= 0』としてました。
そう…てことはだ…
こいつは『<=』…『以下』になってるだけだから
『>=』…『以上』にしちゃって複数分岐しちゃえばよくね?
はい、ってことで
($gameParty.hasItem($dataItems[1]) >= 10) && ($gameParty.hasItem($dataItems[2]) >= 20)
はい、分かりやすく太字にしてこんな感じ。
これなら、条件分岐のスクリプトってとこで
この1行で済むってわけだ!
これならクエストの条件とか組む時に楽だよね!
さらに複数で
アイテム1が10個、アイテム2が15個、アイテム3が5個としよう…
ならばこうなるだろう…
($gameParty.hasItem($dataItems[1]) >= 10) && ($gameParty.hasItem($dataItems[2]) >= 15) && ($gameParty.hasItem($dataItems[3]) >= 5)
さらに&&でただ繋げただけで出来上がり。
条件分岐内容が多くなろうが、&&で繋げていきゃ、1行や!
これで1行で済む!!
1行で処理することにこだわりたいんじゃ!!(`・ω・´)
ただ、MVと違ってMZの条件分岐スクリプト…
枠が1本線になったから、
どこまでいけるのか分からんとですよ(´・ω・`)
ちなみにどこまでいけるかでは
必要アイテム5個の条件分岐スクリプトとしてで
&&は試したけど、それはいけたが、限界は知らん!
ってか、アイテムを所持してない時の演算…
今思えば否定文にしや、良かったんじゃね?
『!』で『NOT』文になるから
『アイテム1が1個以上でない時』、
『>= !1』として処理すればよかった気がする…
いや、まぁどっちでもいいんすけどね。
この論理演算子『!』の覚え方は
『ビックリするくらい数(アイテム数)を否定する』
って覚えてますね。
しかし…いや、あれか…
『!=』で『不等値演算子』になるわw
いやでも、『!=』だと『2つ否定』しないといけないか…。
なら、『厳密不等価演算子』である『!==』なら…いや、変わらんな。
これだと、アイテム1 != 1つ の時、; // False
アイテム1 !== 1つの時、 ; // True
と返さなければならないから、行が2つで手間になってしまうな。
ま、そんなことより
でもって、これはアイテム1かつアイテム2と
両方持ってないといけない形なので
アイテム1が10個かアイテム2が10個…どっちでもいいよーって処理は
($gameParty.hasItem($dataItems[1]) >= 10) || ($gameParty.hasItem($dataItems[2]) >= 10)
になるんじゃないかな?
さらに逆の処理としてこのアイテムがない時…
アイテム1かつアイテム2を全く持ってない時なら
($gameParty.hasItem($dataItems[1]) <= 0) && ($gameParty.hasItem($dataItems[2]) <= 0)
とするか、
($gameParty.hasItem($dataItems[1]) < !1) && ($gameParty.hasItem($dataItems[2]) < !1)
でもいい気がするが、
0以下か1未満(いわば0以下)にした方のが分かりやすい気はするな。
これ、MZでの演算式ですが、MVだと
($gameParty.hasItem($dataItems[1]) >= 10) && ($gameParty.hasItem($dataItems[2]) >= 10)
じゃなくて
$gameParty.hasItem($dataItems[1]) >= 10) && ($gameParty.hasItem($dataItems[2]) >= 10
というように()がいらなかったりしてね…。
いや、試せよ!って話ですが…
自身製作のゲームが重すぎて新規でゲーム編集データ作ると
データが死ぬかもしれないから、別のパソコンが必要になるんよ…(´・ω・`)
まだ別のパソコンは修理中だから検証できません!( ー`дー´)キリッ
大丈夫大丈夫…
こんなことでエラーになっても
条件分岐として反映されずに何もなく終わるか
エラーでの処理落ちだけだからー(ぉぃ
いや、演算式…勉強したから大丈夫なはずよ…?
独学だけどw
ちょっと思うのは『!』は論理否定演算子だけど
『~』っていうビット否定演算子が使えるのかどうか。
まぁ、ビットなんでまず使いませんけどね。
まぁ、最初にも言ったことで
何ならアイテム処理で意味分からんことにExcelでも使える
『~の~乗』っていうような『べき乗』…『^』を使って
アイテム処理をするとややこしい感じで面白いかも…
いや、これ使うならガチャとしての処理は面白そうだな。
『^』はツクールでは使えなかったはずなので
『乗算演算子』を重ねれば『乗』じゃね?
ってことで、『**』だと思う。
ただ、Javaだとあいまいな記述ができないからエラー飛びやすく
これはやらない方のがいいかもしれない。
ツクールで『^』を使うと『ビット排他的論理和』じゃないかな?
ちなみにVX・VXAceのスクリプトはJavaではないし…
RGSS…分かりません!(ぉぃ
MV・MZスクリプトとは似てるけど、
()がいらなかったり…な感じな気はする…多分!