同時に別のアイテムを欲しがるモブの処理

返信する
つーこ
記事: 9
登録日時: 2021年6月22日(火) 22:26

同時に別のアイテムを欲しがるモブの処理

投稿記事 by つーこ »

こんばんは、いつもお世話になっております。

現在イベント処理で組んでいるとあるミニゲームについてお知恵をお借りしたく
質問させていただきます。

来店した客が乱数で取得したアイテムを注文し、
プレイヤーは選択肢を組み合わせることでアイテムを作成、
注文通りのアイテムを客のところに持っていくとお金が稼げてゲームが進む、
という単純なものです。

こちら客を一人ずつ処理する形であれば問題なく進むのですが、
同時に二人以上の客を出現させると、スイッチで管理しているためか、
客Aが欲しがっているアイテムを客Bに渡しても進行してしまう、などの
不具合が起きます。


ちょっと色々試しながら作っているので全体的にごちゃっとして、
拙い組み方でお恥ずかしいですがイベントの大体のスクショを添付します。
二人以上、四人以下で対応しうるやり方をご教授いただければ幸いです。
添付ファイル
追加 イベントはコモンイベントに飛ばしていてこんな感じになっています。
追加 イベントはコモンイベントに飛ばしていてこんな感じになっています。
03 終わると帰ります。
03 終わると帰ります。
02 欲しいアイテムがあるときのみ、条件分岐で受け渡しができます。
02 欲しいアイテムがあるときのみ、条件分岐で受け渡しができます。
01 欲しいアイテムを乱数で表示させています。
01 欲しいアイテムを乱数で表示させています。
アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡する:

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by MEIKOI »

こんにちは。

お客さんが注文したアイテムを変数に格納しておいて

アイテムを渡した時に、変数が一致するしないで

処理を分けるようにすれば、いかかでしょうか。

人数分の変数を作っておけば対応出来そうです。
-----------------------------------------
https://twitter.com/meikoimv
-----------------------------------------
つーこ
記事: 9
登録日時: 2021年6月22日(火) 22:26

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by つーこ »

MEIKOI様

早速のご返信とご教授有難うございます。

変数の格納、ということでやってみたのですが、
イマイチやり方が分かっていないのか躓いてしまいました。

例えばアイテムAが注文されたときに、客Aに対し「客Aが注文したアイテム=1」などといった形で
お客の人数分の変数をつくる……という認識であっていますでしょうか?


現在まだ、
「客Aが来る→客Bが同時に来る」という状況で「AとBに続けてオーダーを訊く」と、
AとBのオーダーが混ざってしまうという感じです。
訊く→作る→渡す、と一人ずつ対応すると問題ないのですが……。

Aのお客さんにオーダーを訊いた際に「客Aアイテム分岐=1」として変数を作って、
条件分岐などで色々試してみたのですが、
わたしのやり方が根本的に間違っているらしく、添付のような流れになってしまいます。
初心者丸出しで申し訳ありません……。ご教授内容について、もう少々詳しくお伺いしても
よろしいでしょうか……。
添付ファイル
04 問題なく貰ってしまいます…返して!
04 問題なく貰ってしまいます…返して!
03 間違ったものを渡しても、
03 間違ったものを渡しても、
02 どちらも両方のオーダーを繰り返します。
02 どちらも両方のオーダーを繰り返します。
01 オーダーを同時に取ると
01 オーダーを同時に取ると
アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡する:

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by MEIKOI »

こんにちは。
例えばアイテムAが注文されたときに、客Aに対し「客Aが注文したアイテム=1」などといった形で
お客の人数分の変数をつくる……という認識であっていますでしょうか?
そのやり方でいいと思います。
お客の数が決まってるなら、お客の数の分変数を作っておけばいいと思います。

イベント1が注文したアイテムを変数1に記録
イベント2が注文したアイテムを変数2に記録

のようにして、

プレイヤーがイベントXにアイテムを渡そうとした時

プレイヤーが渡そうとしたアイテムと
イベントXが記録している変数の内容が同じか
比較して条件分岐。

といった感じなのですが
いったん今の製作ゲーム内ではなくて、
新規のプロジェクトを作って
簡易的な処理を試してみてはどうでしょうか。

製作中のプロジェクトから切り離して
イベントの基本的な処理だけを
作ると混乱せずできたりすると思います。

あいまいなお返事ですみません
-----------------------------------------
https://twitter.com/meikoimv
-----------------------------------------
つーこ
記事: 9
登録日時: 2021年6月22日(火) 22:26

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by つーこ »

MEIKOI様

度々有難うございます。
そうですね……一度新規プロジェクトで作ってみてから
落とし込んでみます。
ご教授、本当に有難うございます。

もしそれでも躓くようであれば、またご相談させてください。
AYA
記事: 9
登録日時: 2019年1月02日(水) 14:36

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by AYA »

MEIKOIさんの回答の補足です。
私としても、この件はスイッチではなく変数で管理した方がいいと思います。

スイッチと変数についての記事です。今回の件について参考になるはずです。
https://tkool.jp/products/rpgvxace/lect ... index.html



現状は以下のようなスイッチで判定していると思います。

お客1のストーンくださいスイッチ(注文を受けたときオン、渡したときオフ)
お客1のたいまつくださいスイッチ
お客1のターバンくださいスイッチ
接客終わり1スイッチ(お客1から注文を受けたときオン、完了したときオフ)

お客2のストーンくださいスイッチ
お客2のたいまつくださいスイッチ
お客2のターバンくださいスイッチ
接客終わり2スイッチ

この方法だとスイッチの数がかなり増えてしまい、管理が大変になります。
判定条件も複雑になり、どれがonだったか、offだったか、がわからない。on・offにするのを忘れた、別のスイッチを操作したという問題も起きそうです。
このような理由でごっちゃになってしまって分岐がわからなくなったのだと思います。



これを変数で判定すると簡単になります。具体的には以下のような流れになります。

①商品のリストを決める

商品に対応する数値を適当に決めます。プレイヤーに見せるものではないので自分で勝手に決めて構いません。

ストーンは1、
たいまつは2、
ターバンは3、とする

これは確認しやすいようにイベントのメモにでも書いておきます。


②注文状況の変数を用意する

お客1の注文判定用の変数(注文を受けたとき商品に対応する数値を格納、完了したとき0にする)
お客2の注文判定用の変数


③注文を受けたとき、変数に格納する

お客1からストーンの注文を受けたとき1を格納、
お客1からたいまつの注文を受けたとき2を格納、
お客1からターバンの注文を受けたとき3を格納、
お客1の注文を完了したときに0にする。


④条件分岐する

お客1から何かの注文を受けたとき、変数は 0 < となっています。
お客1からたいまつの注文を受けているとき、変数は 2 となっています。
お客1の注文を完了した後は、変数は 0 となっています。


これならスイッチで管理するより非常に楽です。
必要な変数の数はお客の人数分だけで済みますし、商品の数が増えてもいくらでも拡張できます。


補足ですが、スクショを見るに、客の注文は乱数で決めているようですね。
であれば、その乱数をそのまま条件分岐に使えばいいと思います(②と③の工程です)。

アイテム分岐の変数が 2 であれば、たいまつを要求されていることになります。
よって、その後の「~くださいスイッチ」は不要になります。
つーこ
記事: 9
登録日時: 2021年6月22日(火) 22:26

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by つーこ »

MEIKOI様 AYA様

度々有難うございます。
あれからしばらく色々と試行錯誤してみたのですが、
どうにもきちんと運用するには時間がかかりそうです。

ご教授頂いたポイントはなんとかなりそうなので、
もう少し頑張ってみます……!

ひとまず、お礼まで。
本当に有難うございます。
つーこ
記事: 9
登録日時: 2021年6月22日(火) 22:26

Re: 同時に別のアイテムを欲しがるモブの処理

投稿記事 by つーこ »

MEIKOI様 AYA様

度々有難うございます。
あれからしばらく色々と試行錯誤してみたのですが、
どうにもきちんと運用するには時間がかかりそうです。

ご教授頂いたポイントはなんとかなりそうなので、
もう少し頑張ってみます……!

ひとまず、お礼まで。
本当に有難うございます。
返信する

“MV:質問”に戻る