時間経過でアイテムがNPCに売れる棚のようなもの。

返信する
sirasu
記事: 3
登録日時: 2023年8月30日(水) 14:26

時間経過でアイテムがNPCに売れる棚のようなもの。

投稿記事 by sirasu »

初めまして、最近RPGツールMZを触りはじめたものです。
私な好きなゲームに「レミュオールの錬金術師」というものがあり、このゲームは時間経過で棚に設置したアイテムが売れていく仕様で、似たようなものが作りたく思いました。
そこで、トリアコンタンさんのchronusというプラグインを入れ、時の変数毎に並列処理でコモンイベントを乱数し一定以上ならイベントを起こすという方法までは思いついたのですが、NPCがプレイヤーの選択した範囲のアイテムの中からランダムでピックアップし購入するというところがどうしても難しくてできません。

結論として、何か売り棚のようなものにアイテムを設置し、その中からランダムでNPCがピックアップした商品を購入して帰るようなプラグインはあるものなのでしょうか?

御知恵をお貸しして欲しいです
アバター
くろうど
記事: 318
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡する:

Re: 時間経過でアイテムがNPCに売れる棚のようなもの。

投稿記事 by くろうど »

■はじめに
こんにちは。
とりあえず、プラグインではなくイベントコマンドおよびコモンイベントでそれっぽくする案を考えてみたいと思います。
そうすることで、やりたいことや必要な機能・処理が整理できて、プラグインを探したり依頼する時に役に立つと思います。

まず、要件としては『棚に設置したアイテム』が『時間経過でNPCに売れる』ということで、一旦分けて考えたいと思います。

■棚に設置したアイテム
この例では、「アイテムタイプ:大事なもの」を「棚」とします。
そのため、「アイテムタイプ:通常アイテム」と「アイテムタイプ:大事なもの」で同じ名前のアイテムを作成しておきます。

イベントコマンド「アイテム選択の処理」で通常アイテムから「棚」に入れたいアイテムをプレイヤーに選択させます。
選択されたアイテムの番号が変数に入ってますのでそれを条件分岐で使います。
選択されたアイテムと同名の「大事なもの」を「アイテムの増減」コマンドで増やします。
「通常アイテム」側は減らしておくことになるでしょう。

この例の場合、「通常アイテム」の番号 +100 が「大事なもの」の番号になるなど計算できる番号にしておくと良いでしょう。

■時間経過でNPCに売れる
コモンイベントの並列処理を使います。
なんらかの手段で時間経過させますが、ここでは「ウェイト」コマンドを何個か使って定期的に処理を行うこととします。
一旦、600の「ウェイト」を6個入れることにします。

NPCは1人とします。
NPCが買いたいアイテムがない場合は買わないものとします。

処理としては、
1. 時間経過(この例ではウェイト)
2. NPCの「買いたいアイテム」を決定します。
変数にランダム値を代入します。
この時、100~200までなどと決めておくと良いでしょう。
3. 「買いたいアイテム」が「棚」にあるかチェックします。
条件分岐でアイテムを持っているかチェックします。
4. 「買いたいアイテム」が「棚」にあれば売却処理します。
所持アイテムから減らして、所持金に価格を増やします。

■さいごに
以上のように机上の文章で記述しましたので、
適宜イベントコマンドやスクリプトに置き換えてもらう必要がありますが、
あと、そちらのやりたいことと違う箇所も適宜置き換えてもらう必要がありますが、
あまり長文すぎても読み解くのも大変なので、まずはここまで。

よろしくお願いします。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
sirasu
記事: 3
登録日時: 2023年8月30日(水) 14:26

Re: 時間経過でアイテムがNPCに売れる棚のようなもの。

投稿記事 by sirasu »

ご回答ありがとうございます。

商品棚を実装する目処はありがたく立ちました。ありがとうございます。

しかしながらNPCが購入する部分で棚に入れたアイテムの中で抽選をして購入していく動きが理想なのですがどうにもできません。
棚内の上から数字を1、2、3.....1と振り分けて棚の変数を乱数で取得し、取得した変数のアイテムIDを取得して売却のような動きは出来るものなのでしょうか?
アバター
くろうど
記事: 318
登録日時: 2016年1月22日(金) 20:52
お住まい: 東京都
連絡する:

Re: 時間経過でアイテムがNPCに売れる棚のようなもの。

投稿記事 by くろうど »

2. NPCの「買いたいアイテム」を決定します。
変数にランダム値を代入します。
この時、100~200までなどと決めておくと良いでしょう。
3. 「買いたいアイテム」が「棚」にあるかチェックします。
条件分岐でアイテムを持っているかチェックします。
4. 「買いたいアイテム」が「棚」にあれば売却処理します。
所持アイテムから減らして、所持金に価格を増やします。
「時間経過ごとにNPCが必ず買っていく」という意味であれば、
上記を「ループ」の中に入れて当たるまでランダム値を抽選するのが、
この例の場合では、同じ考え方で出来るかと思います。

尚、なかなか当たらない場合にどのくらい時間がかかるかはやってみないと分かりません。
あと、棚が空っぽの時に無限ループになりそうなので、その対処は必要かと思います。

それから、JavaScriptの知識があれば、ループしないで済む方法もあると思います。
▼だいたいTwitterにいます。たぶん。
https://twitter.com/kuroudo119
返信する

“MZ:質問”に戻る