RPGツクール2000/マップイベント
店の人を作る
■自作販売イベント
(更新:2015/11/28)


アイテムを購入する場合、通常はイベントコマンド:お店の処理を使います。
しかしこのお店の処理では、1個しか買えないアイテム乗り物の販売など、
特殊な販売処理を行う事ができません。
このような特殊な販売処理を行いたい時には、
販売するイベントを自作する必要があります。

「自作販売イベント」と聞くと難しい設定が必要であるように思えますが、
1つだけの商品を取り扱うイベントであれば、
イベントコマンド:選択肢の表示を使って簡単に作成する事ができます。

なお、簡単なお金のやり取りを行うイベントの作り方は、
お金をやり取りするイベントのページで紹介しています。
【お金をやり取りするイベントお作り方を見る】

このページは続きとなっているページです
店の人イベントの基礎ページをご覧の上で
このページをご覧ください。
【店の人を作る基礎ページを見る】



☆1個しか買う事のできない販売イベント
1個しか買えないアイテムの販売イベントを作成します。

▼動作イメージ


※所持金の表示や商品名の文字の色を変えるために制御文字を使用しています。
 \$=所持金の表示
 \C[番号]=文字の色を変更

【制御文字に関する詳しい説明を見る】

■マップイベント「店の人」
イベント開始条件:決定キーが押されたとき
プライオリティタイプ:通常キャラと重ならない
グラフィック:店の人の画像
◆ラベルの設定:1番
◆文章:\$\c[9]万能薬\c[0]を\c[4]3000G\c[0]で販売中です。
◆選択肢の表示:\c[9]万能薬\c[0]を買う/\c[9]万能薬\c[0]とは?/キャンセル
:[\c[9]万能薬\c[0]を買う]の場合
 ◆条件分岐:万能薬を持っている
  ◆文章:既に\c[9]万能薬\c[0]をお持ちの方には、
  :  :販売する事はできません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆条件分岐:所持金が2999以下
  ◆文章:所持金が足りません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆所持金の増減:所持金を3000減らす
 ◆アイテムの増減:万能薬を1増やす
 ◆文章:毎度有難うございました!
 ◆
:[\c[9]万能薬\c[0]とは?]の場合
 ◆文章:\c[9]万能薬\c[0]を使用しますと、パーティー全員の
 :  :HP、MP、状態変化を全回復する事ができます。
 ◆文章:\c[9]万能薬\c[0]は生産数が少ないために、
 :  :\c[9]万能薬\c[0]を持ってないパーティーに限り、
 :  :1個だけの販売とさせて頂きます。
 ◆指定ラベルへ飛ぶ:1番
 ◆
:[キャンセル]の場合
 ◆
:分岐終了




☆3個まで買う事ができる販売イベント
☆1個しか買えないアイテムの販売のイベントを改良して、
3個まで購入する事ができるイベント処理を作成します。

☆1個しか買う事のできない販売イベントイベント実行内容からの変更部分は、
以下の通りになります。

■マップイベント「店の人」
イベント開始条件:決定キーが押されたとき
プライオリティタイプ:通常キャラと重ならない
グラフィック:店の人の画像
◆ラベルの設定:1番
◆文章:\$\c[9]万能薬\c[0]を\c[4]3000G\c[0]で販売中です。
◆選択肢の表示:\c[9]万能薬\c[0]を買う/\c[9]万能薬\c[0]とは?/キャンセル
:[\c[9]万能薬\c[0]を買う]の場合
 ◆変数の操作:[0001:個数]代入,万能薬の所持数
 ◆条件分岐:変数[0001:個数]が3以上
  ◆文章:\c[9]万能薬\c[0]は1パーティーごとに、
  :  :3個までとさせて頂きます。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了

 ◆条件分岐:所持金が2999以下
  ◆文章:所持金が足りません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆所持金の増減:所持金を3000減らす
 ◆アイテムの増減:万能薬を1増やす
 ◆文章:毎度有難うございました!
 ◆指定ラベルへ飛ぶ:1番<続けて購入する事ができるようにするために処理を戻します
 ◆
:[\c[9]万能薬\c[0]とは?]の場合
 ◆文章:\c[9]万能薬\c[0]を使用しますと、パーティー全員の
 :  :HP、MP、状態変化を全回復する事ができます。
 ◆文章:\c[9]万能薬\c[0]は生産数が少ないために、
 :  :パーティー1組につき、
 :  :3個までの販売とさせて頂きます。

 ◆指定ラベルへ飛ぶ:1番
 ◆
:[キャンセル]の場合
 ◆
:分岐終了




☆購入数を設定する
☆3個まで買う事ができる販売イベントの処理方法では、
アイテムを10個買う時には、選択肢を10回表示して決定する必要があります。
そこでイベントコマンド:数値入力の処理を使って、
プレイヤーに購入数を入力してもらい、
1回の処理で複数のアイテムを購入できるように改良します。

▼動作イメージ


今回の設定では、所持できる限界の99個より多くの個数を設定している場合は、
99個になるように購入数を調整して、さらに購入金額が足りない場合は、
購入できる限界まで購入数を変更するようにします。

☆3個まで買う事ができる販売イベントイベント実行内容からの変更部分は、
以下の通りになります。

■マップイベント「店の人」
イベント開始条件:決定キーが押されたとき
プライオリティタイプ:通常キャラと重ならない
グラフィック:店の人の画像
◆ラベルの設定:1番
◆文章:\$\c[9]万能薬\c[0]を\c[4]3000G\c[0]で販売中です。
◆選択肢の表示:\c[9]万能薬\c[0]を買う/\c[9]万能薬\c[0]とは?/キャンセル
:[\c[9]万能薬\c[0]を買う]の場合
 ◆変数の操作:[0001:個数]代入,万能薬の所持数
 ◆条件分岐:変数[0001:個数]が99以上
  ◆文章:これ以上は購入する事ができません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆条件分岐:所持金が2999以下
  ◆文章:所持金が足りません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆変数の操作:[0002:購入限度数]代入,99<所持できる限度数を設定
 ◆変数の操作:[0002:購入限度数]減算,万能薬の所持数<減算して購入限度数を出す
 ◆変数の操作:[0003:金額]代入,3000<1個の金額を設定
 ◆変数の操作:[0003:金額]乗算,変数[0002]の値<1個の金額に購入限度数を乗算
 ◆変数の操作:[0003:金額]減算,所持金<所持金で減算して、購入限度まで買えるのかを出す
 ◆条件分岐:変数[0003:金額]が1以上<所持金が不足しているので、購入限度数を変更
  ◆変数の操作:[0002:購入限度数]代入,所持金
  ◆変数の操作:[0002:購入限度数]除算,3000<1個の金額で割って、購入限度数を出す
  ◆
 :分岐終了
 ◆文章:\$いくつ購入しますか?
 :  :\>(\V[2]個まで購入する事ができます)
 ◆数値入力の処理:2桁,[0004:購入数]
 ◆条件分岐:変数[0004:購入数]が0<購入数の設定がない状態
  ◆指定ラベルへ飛ぶ:1番<購入数の設定がなかったので、購入処理を中断して処理を戻す
  ◆
 :分岐終了
 ◆条件分岐:変数[0004:購入数]がV[0002]より大きい<購入数の設定が多すぎる時
  ◆変数の操作:[0004:購入数]代入,変数[0002]の値<購入できる限界数に変更
  ◆
 :分岐終了
 ◆変数の操作:[0003:金額]代入,3000<1個の金額を設定
 ◆変数の操作:[0003:金額]乗算,変数[0004]の値<購入数を乗算して、合計金額を出す

 ◆所持金の増減:所持金をV[0003]減らす
 ◆アイテムの増減:万能薬をV[0004]増やす
 ◆文章:毎度有難うございました!
 ◆指定ラベルへ飛ぶ:1番
 ◆
:[\c[9]万能薬\c[0]とは?]の場合
 ◆文章:\c[9]万能薬\c[0]を使用しますと、パーティー全員の
 :  :HP、MP、状態変化を全回復する事ができます。
 ◆指定ラベルへ飛ぶ:1番
 ◆
:[キャンセル]の場合
 ◆
:分岐終了


購入数が多すぎる時は購入数を購入できる限界まで変更しますが、
この時にプレイヤーへ購入数を変更した事を知らせる選択肢を表示したい場合は、
◆条件分岐:変数[0004:購入数]がV[0002]より大きい
 ◆変数の操作:[0004:購入数]代入,変数[0002]の値
 ◆
:分岐終了

の部分を、
◆条件分岐:変数[0004:購入数]がV[0002]より大きい
 ◆文章:\$\V[2]個までしか買えませんが宜しいですか?
 ◆選択肢の表示:購入する/キャンセル
 :[購入する]の場合
  ◆変数の操作:[0004:購入数]代入,変数[0002]の値
  ◆
 :[キャンセル]の場合
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了

と変更してください。



☆在庫数を設定する
上の☆購入数を設定するでは、決められた所持数までは購入する事ができます。
この☆購入数を設定する在庫数を追加しますと、
プレイヤーはその在庫数までは、アイテムを購入する事ができます。

在庫数は変数で管理しますので、その変数の値を変動させる事で、
いつでも在庫数を変える事ができます。

在庫数に関しては、制作者が増やしたいと思う条件で自由に増やす事ができます。
例えば、ある洞窟をクリアーすると在庫数が1個増える。
または、戦闘の勝利回数が50回になるごと在庫数が2個増える。
さらには、原材料となるアイテムを店の人に渡すと、在庫数が2個増えるなど、
ゲームの進行と共に在庫数を増やす事もでき、また減らす事もできます。

今回は変数[0005:在庫数]に在庫数を設定します。
もしも何らかのイベントの中で在庫数を変えたい場合は、
この変数[0005:在庫数]の値を変えてください。

☆購入数を設定するイベント実行内容からの変更部分は、以下の通りです。

■マップイベント「店の人」
イベント開始条件:決定キーが押されたとき
プライオリティタイプ:通常キャラと重ならない
グラフィック:店の人の画像
◆条件分岐:スイッチ[0001:初期設定]がOFF
 ◆スイッチの操作:[0001:初期設定]をONにする
 ◆変数の操作:[0005:在庫数]加算,3<初めに3個の在庫があるとします
 ◆
:分岐終了

◆ラベルの設定:1番
◆文章:\$\c[9]万能薬\c[0]を\c[4]3000G\c[0]で販売中です。
◆選択肢の表示:\c[9]万能薬\c[0]を買う/\c[9]万能薬\c[0]とは?/キャンセル
:[\c[9]万能薬\c[0]を買う]の場合
 ◆条件分岐:変数[0005:在庫数]が0
  ◆文章:現在\c[9]万能薬\c[0]の在庫がございませんので、
  :  :販売する事はできません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了

 ◆変数の操作:[0001:個数]代入,万能薬の所持数
 ◆条件分岐:変数[0001:個数]が99以上
  ◆文章:これ以上は購入する事ができません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆条件分岐:所持金が2999以下
  ◆文章:所持金が足りません。
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆変数の操作:[0002:購入限度数]代入,99
 ◆変数の操作:[0002:購入限度数]減算,万能薬の所持数
 ◆条件分岐:変数[0005:在庫数]がV[0002]より小さい<購入限度数より在庫数が少ない場合
  ◆変数の操作:[0002:購入限度数]代入,変数[0005]の値<購入限度数を在庫数にする
  ◆
 :分岐終了

 ◆変数の操作:[0003:金額]代入,3000
 ◆変数の操作:[0003:金額]乗算,変数[0002]の値
 ◆変数の操作:[0003:金額]減算,所持金
 ◆条件分岐:変数[0003:金額]が1以上
  ◆変数の操作:[0002:購入限度数]代入,所持金
  ◆変数の操作:[0002:購入限度数]除算,3000
  ◆
 :分岐終了
 ◆文章:\$いくつ購入しますか?
 :  :\>(\V[2]個まで購入する事ができます)
 ◆数値入力の処理:2桁,[0004:購入数]
 ◆条件分岐:変数[0004:購入数]が0
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆条件分岐:変数[0004:購入数]がV[0002]より大きい
  ◆変数の操作:[0004:購入数]代入,変数[0002]の値
  ◆
 :分岐終了
 ◆変数の操作:[0003:金額]代入,3000
 ◆変数の操作:[0003:金額]乗算,変数[0004]の値
 ◆所持金の増減:所持金をV[0003]減らす
 ◆アイテムの増減:万能薬をV[0004]増やす
 ◆変数の操作:[0005:在庫数]減算,変数[0004]の値<在庫数を減らす
 ◆文章:毎度有難うございました!
 ◆条件分岐:変数[0005:在庫数]が1以上<まだ在庫がある場合
  ◆指定ラベルへ飛ぶ:1番<指定ラベルへ飛ぶの設定を条件分岐の中へ移動
  ◆
 :分岐終了

 ◆
:[\c[9]万能薬\c[0]とは?]の場合
 ◆文章:\c[9]万能薬\c[0]を使用しますと、パーティー全員の
 :  :HP、MP、状態変化を全回復する事ができます。
 ◆文章:\c[9]万能薬\c[0]は現在\V[5]個の在庫がございます。
 ◆指定ラベルへ飛ぶ:1番
 ◆
:[キャンセル]の場合
 ◆
:分岐終了




戦闘の勝利回数が50回になるごとに在庫数を2個増やしたい場合は、
☆在庫数を設定するイベント実行内容の一番上の所に、
以下の設定を追加してください。
◆変数の操作:[0006:勝利回数]代入,勝利回数<勝利回数を変数に設定
◆変数の操作:[0006:勝利回数]除算,50<50で割って50回分の戦闘回数にする
◆条件分岐:変数[0007:勝利回数50回]がV[0006]より小さい<前より50回分の戦闘回数が多い
 ◆変数の操作:[0006:勝利回数]減算,変数[0007]の値<前より50回分が増えた数を出す
 ◆変数の操作:[0007:勝利回数50回]加算,変数[0006]の値<50回分が増えた数を加算
 ◆変数の操作:[0006:勝利回数]乗算,2<50回分が増えた数に、増える在庫数(2個)を乗算
 ◆変数の操作:[0005:在庫数]加算,変数[0006]の値<増えた在庫数を加算
 ◆
:分岐終了




原材料のアイテム「万能草」を持っている時に店の人と話すと、
アイテム「万能草」を3000Gで買い取ってくれて、
買い取り数1個につき万能薬の在庫が2個増えるようにする場合は、
☆在庫数を設定するイベント実行内容の一番上の所に、
以下の設定を追加してください。
◆条件分岐:万能草を持っている
 ◆文章:おお!\c[9]万能草\c[0]を持っているのですか!
 :  :ぜひ1個\c[4]3000G\c[0]で買い取らせてください。
 ◆選択肢の表示:売る/売らない
 :[売る]の場合
  ◆変数の操作:[0008〜0009]代入,万能草の所持数
  ◆変数の操作:[0008:買い取り金額]乗算,3000<1個の買い取り金額
  ◆所持金の増減:所持金をV[0008]増やす<買い取り金額を加算する
  ◆アイテムの増減:万能草をV[0009]減らす<持っている原材料を全て減らす
  ◆文章:\V[9]個の万能草を売り、\V[8]Gを手に入れた。
  ◆変数の操作:[0009:買い取り数]乗算,2<買い取り数に増える在庫数(2個)を乗算
  ◆変数の操作:[0005:在庫数]加算,変数[0009]の値<増えた在庫数を加算
  ◆
 :[売らない]
  ◆
 :分岐終了
 ◆
:分岐終了



なお、アイテム「万能薬」の在庫数に合わせて、
原材料のアイテム「万能草」の買取価格を変える場合は、
以下のように設定してください。

▼計算式
在庫数×-15+3000=買取価格
※最低買取価格は2000Gとします。

◆条件分岐:万能草を持っている
 ◆変数の操作:[0010:買取価格]代入,変数[0005]の値<在庫数を代入
 ◆変数の操作:[0010:買取価格]乗算,-15
 ◆変数の操作:[0010:買取価格]加算,3000
 ◆条件分岐:変数[0010:買取価格]が2000以下
  ◆変数の操作:[0010:買取価格]代入,2000
  ◆
 :分岐終了

 ◆文章:おお!\c[9]万能草\c[0]を持っているのですか!
 :  :ぜひ1個\c[4]\V[10]G\c[0]で買い取らせてください。
 ◆選択肢の表示:売る/売らない
 :[売る]の場合
  ◆変数の操作:[0008〜0009]代入,万能草の所持数
  ◆変数の操作:[0008:買い取り金額]乗算,変数[0010]の値
  ◆所持金の増減:所持金をV[0008]増やす
  ◆アイテムの増減:万能草をV[0009]減らす
  ◆文章:\V[9]個の万能草を売り、\V[8]Gを手に入れた。
  ◆変数の操作:[0009:買い取り数]乗算,2
  ◆変数の操作:[0005:在庫数]加算,変数[0009]の値
  ◆
 :[売らない]
  ◆
 :分岐終了
 ◆
:分岐終了




☆補足
イベントコマンド:文章の表示
イベントコマンド:選択肢の表示を頻繁に表示する場合、
行の始めに制御文字「\>」を付けると良いでしょう。
この制御文字を使用する事によって、
文章や選択肢の表示が瞬間的に表示されるようになり、
スムーズに販売イベントを実行する事ができます。

▼設定例
◆文章:\>\c[9]万能薬\c[0]を使用しますと、パーティー全員の
:  :\>HP、MP、状態変化を全回復する事ができます。






◎関連ページ
 ●店の人を作る
 ○カウンターの裏側では別の会話をする
 ┣○店ごとにアイテムの値段を変える
 ┣〇自作販売イベント
 ┣○銀行イベント
 ┣○証券イベント
 ┗
○アイテム合成の店


YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール