2012-04-07

RGSS-購入・売却モードを別々に

ShareLink
«RGSS一覧

どこのお店も購入と売却の両方ができちゃうのって
なんだかおかしいような…と思った事、ありませんか?
そんなアナタはちょっぴりリアリスト(笑)

あまり必要ないかな~とも思ったんですが
売却機能のない、販売オンリーの店を多くして
ほんの一部でしかアイテムを売れない! というシステムにすると、
意外と難易度やゲームバランスがとれたり。
また、現実を舞台にしたゲームを作る場合にも
効果的なのではないでしょうか。

というわけで、今回もやっちゃいました。
商品リストをスクリプトで管理するのは面倒なので
ショップの処理をそのまま利用します。



【今回の変更点】
・Scene_Shop



■Scene_Shop

「メイン処理」のトランジション実行の前に
下記を追加します。
case $buyorsell
when 0 # 購入モード
 @buy_window.active = true
 @buy_window.visible = true
 @status_window.visible = true
when 1 # 売却モード
 @sell_window.active = true
 @sell_window.visible = true
end

ここで登場するグローバル変数($buyorsell)は
ショップのモード管理に使用するだけなので、
分かりやすい名前を付けておけば大丈夫です。
好きな名前でいいです。

購入・売却を選択するコマンドは必要ないので
@command_window、@dummy_window
に関する項目を消します。

dispose、update、
「フレーム更新」79~83行あたりの
if @command_window.active…(4行)と
100~143行あたりの
「フレーム更新 (コマンドウィンドウがアクティブの場合)」
の項目も消去。

「フレーム更新 (購入ウィンドウがアクティブの場合)」
「フレーム更新 (売却ウィンドウがアクティブの場合)」
はどちらも、
# ウィンドウの状態を初期モードへ
@command_window.active = true
@dummy_window.visible = true
@sell_window.active = false
@sell_window.visible = false
@status_window.item = nil
# ヘルプテキストを消去
@help_window.set_text("")

を消して、
代わりに
# マップ画面に切り替え
$scene = Scene_Map.new

を追加します。
Bボタンが押された場合、
コマンドウィンドウへ行くのではなく
マップ画面に戻るようにします。


あとはイベントの編集で
モードを設定し、ショップの処理を実行するだけです。

イベントの編集で「ショップの処理」を使用する際は
ショップの処理の前に必ず
イベントコマンド「スクリプト」に
$buyorsell = 数値を書いて挿入して下さい。
ここに書いたやり方ですと、
0が購入モード、1が売却モードになります。

ショップの処理の商品リストに
ひとつでもアイテムを入れていないと
「商品リストが空です」と出てしまうので、
売却モードの場合特に商品リストは反映されないので
適当にひとつ、アイテムを登録しておきましょう。



デフォルトの表示だと
コマンドウィンドウを使わなくなると上にスペースができてしまうので、各ウィンドウの位置を調整したりと工夫する必要がありそうですね。

category: