#============================================================================== # 「ショップ価格変動すーぱー」(ACE) ver1.0 by奈々 # # ◇使用規約 # 使用される場合はスクリプト作成者として「奈々」を明記して下さい。 # このスクリプトを改変したり、改変したものを配布するなどは自由ですが # その場合も元のスクリプトの作成者として名前は載せて下さい。 # http://heptanas.mamagoto.com/ # #------------------------------------------------------------------------------ # # ショップでの買値と売値を、ショップ毎アイテム毎に細かく設定できます。 # アイテムのメモ欄を参照するので簡単に一括指定が可能です。 # # ◇使い方 # イベントコマンドのスクリプトに書きます。 # 以下の設定は全て、ショップを閉じたときにリセットされます。 # (手動でリセットする場合は「$game_temp.shop_initialize」) # なのでショップのイベントコマンドの直前に書くのを推奨します。 # そうすれば他のショップで誤作動する心配がありません。 # # ・価格の変動 # $game_temp.nana_shop_pricelist1.push(["○○", n]) # $game_temp.nana_shop_pricelist2.push(["○○", n]) # メモ欄に○○とあるアイテムの価格がn%になります。 # list1で追加した変動は重複なしで、最初の1つが適用されます。 # list2は重複ありで、全ての倍率を掛けていきます。 # # ""と指定すると全てのアイテムが対象になります。 # またスクリプト欄のサイズの問題で、実際に書くときは # $game_temp.nana_shop_pricelist1.push( # ["○○", n]) # の様に区切ってください。(を上に残さないと認識しません。 # # # ・価格の補正 # $game_temp.nana_shop_pricelist3.push(["○○", n]) # $game_temp.nana_shop_pricelist4.push(["○○", n]) # メモ欄に○○とあるアイテムの価格が+nになります。 # list1と2の変動計算の後に、nが加算(-nなら減算)されます。 # list3が重複なし、list4が重複ありです。 # # # ・売値の設定 # $temp.nana_shop_sellprice = n # 価格(=買値)に対して、売値がn%になります。 # #============================================================================== # ◇初期設定 module NanaSeven SHOP_SELLPRICE = 50 #売値が価格(=買値)の何%か #ここで設定するのは既定値で、ゲーム内で個別に変更も可能 end #------------------------------------------------------------------------------ #============================================================================== # ■ Game_Temp #------------------------------------------------------------------------------ # セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン # スタンスは $game_temp で参照されます。 #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :nana_shop_sellprice # 売却時の共通割引 attr_accessor :nana_shop_pricelist1 # 価格テーブル(any適用)n% attr_accessor :nana_shop_pricelist2 # 価格テーブル(all適用)n% attr_accessor :nana_shop_pricelist3 # 価格テーブル(any適用)+n attr_accessor :nana_shop_pricelist4 # 価格テーブル(all適用)+n #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias nana_initialize initialize def initialize nana_initialize @nana_shop_sellprice = NanaSeven::SHOP_SELLPRICE @nana_shop_pricelist1 = [] @nana_shop_pricelist2 = [] @nana_shop_pricelist3 = [] @nana_shop_pricelist4 = [] end #-------------------------------------------------------------------------- # ● ショップ設定初期化 #-------------------------------------------------------------------------- def shop_initialize @nana_shop_sellpprice = NanaSeven::SHOP_SELLPRICE @nana_shop_pricelist1 = [] @nana_shop_pricelist2 = [] @nana_shop_pricelist3 = [] @nana_shop_pricelist4 = [] end end #============================================================================== # ■ Window_ShopBuy #------------------------------------------------------------------------------ # ショップ画面で、購入できる商品の一覧を表示するウィンドウです。 #============================================================================== class Window_ShopBuy < Window_Selectable #-------------------------------------------------------------------------- # ● アイテムリストの作成 #-------------------------------------------------------------------------- def make_item_list @data = [] @price = {} @shop_goods.each do |goods| case goods[0] when 0; item = $data_items[goods[1]] when 1; item = $data_weapons[goods[1]] when 2; item = $data_armors[goods[1]] end if item @data.push(item) @price[item] = goods[2] == 0 ? selling_price(item) : goods[3] end end end #-------------------------------------------------------------------------- # ● 売値の取得 #-------------------------------------------------------------------------- def selling_price(item) value = item.price $game_temp.nana_shop_pricelist1.each{ |list| if item.note.include?(list[0]) value *= list[1] * 0.01 break end } $game_temp.nana_shop_pricelist2.each{ |list| if item.note.include?(list[0]) value *= list[1] * 0.01 end } $game_temp.nana_shop_pricelist3.each{ |list| if item.note.include?(list[0]) value += list[1] break end } $game_temp.nana_shop_pricelist4.each{ |list| if item.note.include?(list[0]) value += list[1] end } [value, 0].max.round end end #============================================================================== # ■ Scene_Shop #------------------------------------------------------------------------------ # ショップ画面の処理を行うクラスです。 #============================================================================== class Scene_Shop < Scene_MenuBase #-------------------------------------------------------------------------- # ● 売値の取得 #-------------------------------------------------------------------------- def selling_price value = @item.price $game_temp.nana_shop_pricelist1.each{ |list| if @item.note.include?(list[0]) value *= list[1] * 0.01 break end } $game_temp.nana_shop_pricelist2.each{ |list| if @item.note.include?(list[0]) value *= list[1] * 0.01 end } $game_temp.nana_shop_pricelist3.each{ |list| if @item.note.include?(list[0]) value += list[1] break end } $game_temp.nana_shop_pricelist4.each{ |list| if @item.note.include?(list[0]) value += list[1] end } [value * $game_temp.nana_shop_sellprice / 100, 0].max.round end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- def terminate super $game_temp.shop_initialize end end