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

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

[完全版] アイテムを持っているかの複数条件

2023年12月15日 20時41分04秒 | ツクール日記

ふぃ~
やっとまともになった!

パーティー内でアイテムを持ってるかだけの判断なら
パーティー内でアイテム1を持っている処理として
$gameParty.hasItem($dataItems[1])でいいんですよ!

だけど、
パーティー内でアイテム1を10個持っているとした場合、
アイテム1は [] 内の1だから、
別のアイテムIDなら例えば634とかにすればよし!
10個持っている…というと
この数字は最後の以上・以下後の数字よん。

$gameParty.numItems($dataItems[1]) >= 10
である必要があるわけでして
Javaが勝手にセミコロンは解釈するからあってもなくてもよい!

$gameParty.numItems($dataItems[1]) >= 10; でも反応する!

だがしかし、
&&を加えて二重・三重…にしていく場合、
セミコロン加えなくてもいいし、
ややこしくなるので加えない方が良いかも。
いや、つけた方がデバッグ的には良いんすけどね。

ちなみに当たり前ですが
$gameParty.numItems($dataItems[1]) >= 10 && $gameParty.numItems($dataItems[2]) >= 10
は反応しますが、
$gameParty.numItems($dataItems[1]) >= 10; && $gameParty.numItems($dataItems[2]) >= 10;
これはSyntaxErrorになりますね。

二度終わらせてる形ですし。

まぁ、最後だけにつければエラることはないですけど
セミコロン…うん、いらない!!

ツクールはJavaだからいらない!!

$gameParty.numItems($dataItems[1]) >= 10 && $gameParty.numItems($dataItems[2]) >= 10 &&
$gameParty.numItems($dataItems[3]) >= 10 && $gameParty.numItems($dataItems[4]) >= 10 &&
$gameParty.numItems($dataItems[5]) >= 10
ここまでいけるか試したが…
うん、数が足りないものがあると
他のが10個あっても足りませんよーってなる解釈に。

ツクールMVの時に
$gameParty.hasItem($dataItems[1]) <= 0
反応してた理由は自身としても不明…。

何か別で反応したかも不明…。

念のため、
以下(アイテムを持っていない)にするなら
$gameParty.numItems($dataItems[1]) <= 0
のようにしてやるといいかも。

ま、変数1または変数2が1以上で かつ
アイテム13個以上持ってる場合なら
($gameVariables.value(1) >= 1) || ($gameVariables.value(2) >= 1) && $gameParty.numItems($dataItems[1]) >= 3
となるかなー?

逆に『それ以外のとき』なら
($gameVariables.value(1) < 1) || ($gameVariables.value(2) < 1) && $gameParty.numItems($dataItems[1]) < 3

で、いいんじゃないかな?(゜-゜)

いや、こんなクエストみたいな感じは…
やらない…か?(゜-゜)

ちなみにスクリプトではセミコロンは
ある程度は省いてもいいと思うけど…
プラグインで省くとデバッグできねー!ってなるかも…。

まぁ、スクリプトでもセミコロンつければ
どこでのSyntaxErrorなのかも分かりやすくなるかも?

スクリプトくらいはどこでミスったか分かるなら
ゲームテストすればいいかもですけどね。

我輩はメンドいし、つけぬよ(。´・ω・)?


$gameParty.hasItem($dataItems[1]) >= 1 が反応しない原因解明

2023年12月15日 02時28分24秒 | ツクール日記

ふっ…ついさっき原因が分かってしまった…。

$gameParty.hasItem($dataItems[1]) は反応するのに
$gameParty.hasItem($dataItems[1]) >= 1 は反応しないのは
このアイテムをパーティー内で持ってるかの判別であって
いくつ所持してるかまで特定していない

いや~バカだった…
これは~を持っている(have、has)であって
パーティー内で何を持ってるかの判別なだけなのだよ!

ってことは、MVでも反応してない可能性が!(;^_^A

そう…だったら、個数を調べればいいこと!!

チャート関数を調べたらね…
文字列と数値の両方を持つデュアル値を返すという
NUMの存在を忘れていたのだよ!!(うわっバカだ~

hasItemじゃ、片方しか特定してないわけだから
複数所持としてで、以上・以下しても認識しないわけで
NUMさん使えば良かったんだよ!!

ってことはhasItemsにしてたとこをnumItemsにすれば
以上・以下が設定できる!

あれ?文字列と数値の両方を持つデュアル値ってことはさ?
区切りつけなきゃループしね?

いや、でも
セミコロンつけなくても区切りつくはずだし、
エラーにはならんはずだし、
略せた気はする…。

でも、省くべきではないとされるけども…(゜-゜)

ってことはだ…
$gameParty.hasItem($dataItems[1]) >= 1 にしてたとこをさ、
$gameParty.numItems($dataItems[1]) >= 1 でよくね?

多分、これでいける!
時間的にも明日試す!!
きっとこれでいけるはず!!

となると、
$gameParty.numItems($dataItems[1]) >= 1 && $gameParty.numItems($dataItems[2]) >= 1
という形なら条件分岐としていける…はず!

セミコロンがいるならば
最後につければいいよねっ!(ぉぃ


$gameParty.hasItem($dataItems[1]) >= 1 などではツクールMZでは認識しない!?

2023年12月15日 01時23分20秒 | ツクール日記

RPGツクールMVにて使っていた処理として
$gameParty.hasItem($dataItems[1]) >= 1 のように
パーティー内でアイテム1を1個以上持っているという条件を
スクリプトを出してたのですが、
なんと!MVでは認識してたのにMZでは認識してない!!Σ(・□・;)

原因は分からないが…
うーむ…もしや、この定義がMZにはないのかも…(;^_^A

JSファイル内のものを探ってまた新しい定義を探さないと
パーティー内でアイテムを~個以上持ってる時…
などの処理ができないではないか!!

そもそもがgameParty処理が反応しないのか…?
それともhasItem($dataItems[])処理ではないのか…?(゜-゜)

MVではできるのに…な~ぜ~?(゜-゜)

MZデータ…やり直して探ってみます!(''◇'')ゞ