#============================================================================== # ■ RGSS3 売買履歴データ保管 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 指定変数IDの状態別でのショップでの売買データを保存します。 # 保存されるのは、各アイテムの購入数・購入合計額、売却数・売却合計額です。 # ショップ別に開く前に変数を操作する事で # 「○○の街の○○の店で○○G分アイテムを購入した」等といった情報を取得出来ます。 #============================================================================== # イベントコマンドのスクリプトで使用 #------------------------------------------------------------------------------ # buy_count_hash_change(1,[0,3],3,456) # # 変数の値が1の時のアイテム(アイテムタイプ0)ID3の購入数を3個、購入合計額を456増やす。 #------------------------------------------------------------------------------ # buy_count_hash_change(0,[1,2],4,789) # # 変数の値が0の時の武器(アイテムタイプ1)ID2の購入数を4個、購入合計額を789増やす。 #------------------------------------------------------------------------------ # buy_count_hash_change(4,[2,1],5,123) # # 変数の値が4の時の防具(アイテムタイプ2)ID1の購入数を5個、購入合計額を123増やす。 #------------------------------------------------------------------------------ # buy_count_hash_clear # # 購入データをすべて削除します。 #------------------------------------------------------------------------------ # buy_count_hash_clear(1) # # 変数が1の時の購入データをすべて削除します。 #------------------------------------------------------------------------------ # buy_count_hash_clear(1,[0,2]) # # 変数が1の時のアイテムID2の購入データを削除します。 #------------------------------------------------------------------------------ # buy_count_get(2,[1,3],0) # # 変数が2の時のID3の武器ID3の購入数を取得します。 #------------------------------------------------------------------------------ # buy_count_get(2,[1,3],1) # # 変数が2の時のID3の武器ID3の購入合計額を取得します。 #------------------------------------------------------------------------------ # buy_count_get_all_gold # # 全ての変数の場合の購入合計額を取得します。 #------------------------------------------------------------------------------ # buy_count_get_all_gold(1) # # 変数の値が1の時の購入合計額を取得します。 #------------------------------------------------------------------------------ # sell_count_hash_change(1,[0,3],3,456) # # 変数の値が1の時のアイテム(アイテムタイプ0)ID3の売却数を3個、売却合計額を456増やす。 #------------------------------------------------------------------------------ # sell_count_hash_change(0,[1,2],4,789) # # 変数の値が0の時の武器(アイテムタイプ1)ID2の売却数を4個、売却合計額を789増やす。 #------------------------------------------------------------------------------ # sell_count_hash_change(4,[2,1],5,123) # # 変数の値が4の時の防具(アイテムタイプ2)ID1の売却数を5個、売却合計額を123増やす。 #------------------------------------------------------------------------------ # sell_count_hash_clear # # 売却データをすべて削除します。 #------------------------------------------------------------------------------ # sell_count_hash_clear(1) # # 変数が1の時の売却データをすべて削除します。 #------------------------------------------------------------------------------ # sell_count_hash_clear(1,[0,2]) # # 変数が1の時のアイテムID2の売却データを削除します。 #------------------------------------------------------------------------------ # sell_count_get(2,[1,3],0) # # 変数が2の時のID3の武器ID3の売却数を取得します。 #------------------------------------------------------------------------------ # sell_count_get(2,[1,3],1) # # 変数が2の時のID3の武器ID3の売却合計額を取得します。 #------------------------------------------------------------------------------ # sell_count_get_all_gold # # 全ての変数の場合の売却合計額を取得します。 #------------------------------------------------------------------------------ # sell_count_get_all_gold(1) # # 変数の値が1の時の売却合計額を取得します。 #============================================================================== module ShopBS #店判定用変数IDを指定。 #このIDの変数の値別にデータが保存されます。 VID = 30 end class Game_Interpreter #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列を変更 #-------------------------------------------------------------------------- def buy_count_hash_change(k1,a,v1,v2) $game_party.buy_count_hash_change(k1,a,v1,v2) end #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列を初期化 #-------------------------------------------------------------------------- def buy_count_hash_clear(k1 = nil,k2 = nil) $game_party.buy_count_hash_clear(k1,k2) end #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列要素を取得 #-------------------------------------------------------------------------- def buy_count_get(k1,a,type) $game_party.buy_count_get(k1,a,type) end #-------------------------------------------------------------------------- # 購入合計額 #-------------------------------------------------------------------------- def buy_count_get_all_gold(k = nil) $game_party.buy_count_get_all_gold(k) end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列を変更 #-------------------------------------------------------------------------- def sell_count_hash_change(k1,a,v1,v2) $game_party.sell_count_hash_change(k1,a,v1,v2) end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列を初期化 #-------------------------------------------------------------------------- def sell_count_hash_clear(k1 = nil,k2 = nil) $game_party.sell_count_hash_clear(k1,k2) end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列要素を取得 #-------------------------------------------------------------------------- def sell_count_get(k1,a,type) $game_party.sell_count_get(k1,a,type) end #-------------------------------------------------------------------------- # 売却合計額 #-------------------------------------------------------------------------- def sell_count_get_all_gold(k = nil) $game_party.sell_count_get_all_gold(k) end end class Game_Party < Game_Unit #-------------------------------------------------------------------------- # 購入合計額 #-------------------------------------------------------------------------- def shop_key_data(t,iid) case t when 0;i = $data_items[iid] when 1;i = $data_weapons[iid] when 2;i = $data_armors[iid] else;i = nil end return nil unless i i.shop_key_data end #-------------------------------------------------------------------------- # 購入ハッシュ #-------------------------------------------------------------------------- def buy_count_hash @buy_count_hash ||= {} end #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列取得 #-------------------------------------------------------------------------- def buy_count_hash_get(k1,k2) buy_count_hash[k1] ||= {} buy_count_hash[k1][k2] ||= [0,0] end #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列を変更 #-------------------------------------------------------------------------- def buy_count_hash_change(k,a,v1,v2) buy_count_hash_get(k,a) buy_count_hash[k][a][0] += v1 buy_count_hash[k][a][1] += v2 end #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列を初期化 #-------------------------------------------------------------------------- def buy_count_hash_clear(k1 = nil,k2 = nil) return buy_count_hash.clear unless k1 return buy_count_hash.delete(k1) unless k2 return unless buy_count_hash[k1] return unless buy_count_hash[k1][k2] buy_count_hash[k1].delete(k2) end #-------------------------------------------------------------------------- # 購入ハッシュの指定データの配列要素を取得 #-------------------------------------------------------------------------- def buy_count_get(k1,a,type) buy_count_hash_get(k1,a)[type] end #-------------------------------------------------------------------------- # 購入合計額 #-------------------------------------------------------------------------- def buy_count_get_all_gold(k = nil) if k a = buy_count_hash[k] a = [] unless a a.values.inject(0) {|r,v| r += v[1]} else d = 0 buy_count_hash.each_value {|v1| d = v1.values.inject(d) {|r,v2| r += v2[1]} if v1} d end end #-------------------------------------------------------------------------- # 売却ハッシュ #-------------------------------------------------------------------------- def sell_count_hash @sell_count_hash ||= {} end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列取得 #-------------------------------------------------------------------------- def sell_count_hash_get(k1,k2) sell_count_hash[k1] ||= {} sell_count_hash[k1][k2] ||= [0,0] end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列を変更 #-------------------------------------------------------------------------- def sell_count_hash_change(k,a,v1,v2) sell_count_hash_get(k,a) sell_count_hash[k][a][0] += v1 sell_count_hash[k][a][1] += v2 end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列を初期化 #-------------------------------------------------------------------------- def sell_count_hash_clear(k1 = nil,k2 = nil) return sell_count_hash.clear unless k1 return sell_count_hash.delete(k1) unless k2 return unless sell_count_hash[k1] return unless sell_count_hash[k1][k2] sell_count_hash[k1].delete(k2) end #-------------------------------------------------------------------------- # 売却ハッシュの指定データの配列要素を取得 #-------------------------------------------------------------------------- def sell_count_get(k1,a,type) sell_count_hash_get(k1,a)[type] end #-------------------------------------------------------------------------- # 売却合計額 #-------------------------------------------------------------------------- def sell_count_get_all_gold(k = nil) if k a = sell_count_hash[k] a = [] unless a a.values.inject(0) {|r,v| r += v[1]} else d = 0 sell_count_hash.each_value {|v1| d = v1.values.inject(d) {|r,v2| r += v2[1]} if v1} d end end end class Scene_Shop < Scene_MenuBase #-------------------------------------------------------------------------- # 購入の実行 #-------------------------------------------------------------------------- alias do_buy_number_count do_buy def do_buy(number) do_buy_number_count(number) k = @item.shop_key_data return unless k g = number * buying_price $game_party.buy_count_hash_change($game_variables[ShopBS::VID],k,number,g) end #-------------------------------------------------------------------------- # 売却の実行 #-------------------------------------------------------------------------- alias do_sell_number_count do_sell def do_sell(number) do_sell_number_count(number) k = @item.shop_key_data return unless k g = number * selling_price $game_party.sell_count_hash_change($game_variables[ShopBS::VID],k,number,g) end end class RPG::BaseItem #-------------------------------------------------------------------------- # ショップハッシュのキーを取得 #-------------------------------------------------------------------------- def shop_key_data nil end end class RPG::Item #-------------------------------------------------------------------------- # ショップハッシュのキーを取得 #-------------------------------------------------------------------------- def shop_key_data [0,id] end end class RPG::Weapon #-------------------------------------------------------------------------- # ショップハッシュのキーを取得 #-------------------------------------------------------------------------- def shop_key_data [1,id] end end class RPG::Armor #-------------------------------------------------------------------------- # ショップハッシュのキーを取得 #-------------------------------------------------------------------------- def shop_key_data [2,id] end end