瞬駈天魔のツクール素材製作所

月額支援サイトファンティアを追加しました!
是非、無料ファンでも励みになりますので宜しくお願い致します!m(__)m

アイテムを持っているかの複数条件で思ったこと

2023年12月14日 01時22分33秒 | ツクール日記

条件分岐でこのアイテムを持っている という処理で
それを複数やる場合ってその下に重ねたりしますよね?

ツクール初心者で条件分岐で複数やる方法が分からない!
条件分岐で変数使い過ぎて分からなくなる!
条件分岐で何重にも重ねてわけわからんくなる!
条件分岐が多くなる分、処理も多くなる!

・・・手間じゃね?

まず、条件分岐の重ねって…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スクリプトとは似てるけど、
()がいらなかったり…な感じな気はする…多分!



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。