Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================#
- # // IEX - Scene Shop Exchange Rates
- #==============================================================================#
- # // Created By : IceDragon
- # // Date Created : 11/20/2011
- # // Date Modified : 11/20/2011
- # // Version : 1.1
- #==============================================================================#
- # // You can change the buy rates at anytime in the game with
- # // these script calls. NOTE: The Default buyrate is 100
- # //
- # // set_item_buyrate( item_id, buyrate )
- # // set_weapon_buyrate( weapon_id, buyrate )
- # // set_armor_buyrate( armor_id, buyrate )
- # //
- # // You can retrive them with:
- # // get_item_buyrate()
- # // get_weapon_buyrate()
- # // get_armor_buyrate()
- # //
- # // You can change the sell rates at anytime in the game with
- # // these script calls. NOTE: The Default sellrate is SELL_RATE
- # //
- # // set_item_sellrate( item_id, sellrate )
- # // set_weapon_sellrate( weapon_id, sellrate )
- # // set_armor_sellrate( armor_id, sellrate )
- # //
- # // You can retrive them with:
- # // get_item_sellrate()
- # // get_weapon_sellrate()
- # // get_armor_sellrate()
- # //
- #==============================================================================#
- # // Notetags
- #==============================================================================#
- # // Item / Weapon / Armor
- #==============================================================================#
- # // <buyrate: n>
- # // n Sets the buy rate for that particular item, default is 100
- # //
- # // <sellrate: n>
- # // n Sets the sell rate for that particular item, default is SELL_RATE
- # //
- #==============================================================================#
- ($imported ||= [])["IEX-SceneShop_SellRates"] = true
- #==============================================================================#
- # ** IEX::SCENE_SHOP
- #==============================================================================#
- module IEX ; end
- module IEX::SCENE_SHOP
- # // Rate modifiers
- # // 100 - No Mod
- # // Below 100 - Decreased Exchange Rate
- # // Above 100 - Increased Exchange Rate
- BUY_MOD_VARIABLE = 180
- SELL_MOD_VARIABLE = 181
- # // You can create a custom buy rates for items here.
- def self.buy_rate( item )
- objrate = 100
- case item
- when RPG::Item # << I changed this, usable item affects both skills, and items XD
- objrate = $game_system.item_buy_rates[item.id] || 100 # // If nil default to 50
- when RPG::Weapon
- objrate = $game_system.weapon_buy_rates[item.id] || 100 # // If nil default to 50
- when RPG::Armor
- objrate = $game_system.armor_buy_rates[item.id] || 100 # // If nil default to 50
- when RPG::Skill # Currently does nothing
- end
- return Integer( objrate )
- end
- # // You can create a custom resale rate for items here.
- def self.sell_rate( item )
- objrate = SELL_RATE
- case item
- when RPG::Item # << I changed this, usable item affects both skills, and items XD
- objrate = $game_system.item_sell_rates[item.id] || SELL_RATE # // If nil default to SELL_RATE
- when RPG::Weapon
- objrate = $game_system.weapon_sell_rates[item.id] || SELL_RATE # // If nil default to SELL_RATE
- when RPG::Armor
- objrate = $game_system.armor_sell_rates[item.id] || SELL_RATE # // If nil default to SELL_RATE
- when RPG::Skill # Currently does nothing
- end
- return Integer( objrate )
- end
- def self.calc_buy_price( item )
- return Integer( item.price * ( buy_rate( item ) * $game_variables[BUY_MOD_VARIABLE] / 100.0 ) / 100.0 )
- end
- def self.calc_sell_price( item )
- return Integer( item.price * ( sell_rate( item ) * $game_variables[SELL_MOD_VARIABLE] / 100.0 ) / 100.0 )
- end
- end
- #==============================================================================#
- # ** RPG::BaseItem
- #==============================================================================#
- class RPG::BaseItem
- #--------------------------------------------------------------------------#
- # * Public Instance Variable(s)
- #--------------------------------------------------------------------------#
- attr_writer :buyrate
- attr_writer :sellrate
- #--------------------------------------------------------------------------#
- # * new-method :buyrate
- #--------------------------------------------------------------------------#
- def buyrate()
- @buyrate ||= self.note =~ /<(?:BUY_RATE|BUY RATE|BUYRATE):[ ](\d+)>/i ? $1.to_i : 100
- return @buyrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :sellrate
- #--------------------------------------------------------------------------#
- def sellrate()
- @sellrate ||= self.note =~ /<(?:SELL_RATE|SELL RATE|SELLRATE):[ ](\d+)>/i ? $1.to_i : IEX::SCENE_SHOP::SELL_RATE
- return @sellrate
- end
- end
- #==============================================================================#
- # ** Game_System
- #==============================================================================#
- class Game_System
- #--------------------------------------------------------------------------#
- # * alias-method :initialize
- #--------------------------------------------------------------------------#
- alias :iex_sellrate_gmsys_initialize :initialize unless $@
- def initialize( *args, &block )
- iex_sellrate_gmsys_initialize( *args, &block )
- self.item_buy_rates()
- self.weapon_buy_rates()
- self.armor_buy_rates()
- self.item_sell_rates()
- self.weapon_sell_rates()
- self.armor_sell_rates()
- end
- #--------------------------------------------------------------------------#
- # * new-method :item_buy_rates
- #--------------------------------------------------------------------------#
- def item_buy_rates()
- if @item_buy_rates.nil?()
- @item_buy_rates = {}
- $data_items.each { |w|
- next if w.nil?() ; @item_buy_rates[w.id] = w.buyrate();
- }
- end
- return @item_buy_rates
- end
- #--------------------------------------------------------------------------#
- # * new-method :weapon_buy_rates
- #--------------------------------------------------------------------------#
- def weapon_buy_rates()
- if @weapon_buy_rates.nil?()
- @weapon_buy_rates = {}
- $data_weapons.each { |w|
- next if w.nil?() ; @weapon_buy_rates[w.id] = w.buyrate();
- }
- end
- return @weapon_buy_rates
- end
- #--------------------------------------------------------------------------#
- # * new-method :armor_buy_rates
- #--------------------------------------------------------------------------#
- def armor_buy_rates()
- if @armor_buy_rates.nil?()
- @armor_buy_rates = {}
- $data_armors.each { |w|
- next if w.nil?() ; @armor_buy_rates[w.id] = w.buyrate();
- }
- end
- return @armor_buy_rates
- end
- #--------------------------------------------------------------------------#
- # * new-method :item_sell_rates
- #--------------------------------------------------------------------------#
- def item_sell_rates()
- if @item_sell_rates.nil?()
- @item_sell_rates = {}
- $data_items.each { |w|
- next if w.nil?() ; @item_sell_rates[w.id] = w.sellrate();
- }
- end
- return @item_sell_rates
- end
- #--------------------------------------------------------------------------#
- # * new-method :weapon_sell_rates
- #--------------------------------------------------------------------------#
- def weapon_sell_rates()
- if @weapon_sell_rates.nil?()
- @weapon_sell_rates = {}
- $data_weapons.each { |w|
- next if w.nil?() ; @weapon_sell_rates[w.id] = w.sellrate();
- }
- end
- return @weapon_sell_rates
- end
- #--------------------------------------------------------------------------#
- # * new-method :armor_sell_rates
- #--------------------------------------------------------------------------#
- def armor_sell_rates()
- if @armor_sell_rates.nil?()
- @armor_sell_rates = {}
- $data_armors.each { |w|
- next if w.nil?() ; @armor_sell_rates[w.id] = w.sellrate();
- }
- end
- return @armor_sell_rates
- end
- end
- #==============================================================================#
- # ** Game_Interpreter
- #==============================================================================#
- class Game_Interpreter
- #--------------------------------------------------------------------------#
- # * new-method :set_item_buyrate
- #--------------------------------------------------------------------------#
- def set_item_buyrate( item_id, buyrate )
- $game_system.item_buy_rates[item_id] = buyrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :set_weapon_buyrate
- #--------------------------------------------------------------------------#
- def set_weapon_buyrate( weapon_id, buyrate )
- $game_system.weapon_buy_rates[weapon_id] = buyrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :set_armor_buyrate
- #--------------------------------------------------------------------------#
- def set_armor_buyrate( armor_id, buyrate )
- $game_system.armor_buy_rates[armor_id] = buyrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :get_item_buyrate
- #--------------------------------------------------------------------------#
- def get_item_buyrate( item_id )
- return $game_system.item_buy_rates[item_id]
- end
- #--------------------------------------------------------------------------#
- # * new-method :get_weapon_buyrate
- #--------------------------------------------------------------------------#
- def get_weapon_buyrate( weapon_id )
- return $game_system.weapon_buy_rates[weapon_id]
- end
- #--------------------------------------------------------------------------#
- # * new-method :get_armor_buyrate
- #--------------------------------------------------------------------------#
- def get_armor_buyrate( armor_id )
- return $game_system.armor_buy_rates[armor_id]
- end
- #--------------------------------------------------------------------------#
- # * new-method :set_item_sellrate
- #--------------------------------------------------------------------------#
- def set_item_sellrate( item_id, sellrate )
- $game_system.item_sell_rates[item_id] = sellrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :set_weapon_sellrate
- #--------------------------------------------------------------------------#
- def set_weapon_sellrate( weapon_id, sellrate )
- $game_system.weapon_sell_rates[weapon_id] = sellrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :set_armor_sellrate
- #--------------------------------------------------------------------------#
- def set_armor_sellrate( armor_id, sellrate )
- $game_system.armor_sell_rates[armor_id] = sellrate
- end
- #--------------------------------------------------------------------------#
- # * new-method :get_item_sellrate
- #--------------------------------------------------------------------------#
- def get_item_sellrate( item_id )
- return $game_system.item_sell_rates[item_id]
- end
- #--------------------------------------------------------------------------#
- # * new-method :get_weapon_sellrate
- #--------------------------------------------------------------------------#
- def get_weapon_sellrate( weapon_id )
- return $game_system.weapon_sell_rates[weapon_id]
- end
- #--------------------------------------------------------------------------#
- # * new-method :get_armor_sellrate
- #--------------------------------------------------------------------------#
- def get_armor_sellrate( armor_id )
- return $game_system.armor_sell_rates[armor_id]
- end
- end
- #==============================================================================#
- # ** IEX_ShopWindow_Item
- #==============================================================================#
- class IEX_ShopWindow_Item
- #--------------------------------------------------------------------------#
- # * overwrite-method :draw_item
- #--------------------------------------------------------------------------#
- def draw_item( index )
- item = @data[index]
- number = $game_party.item_number( item )
- #enabled = (item.price <= $game_party.gold and number < IEX::SCENE_SHOP::MAX_BUY_ITEMS)
- rect = item_rect( index )
- self.contents.clear_rect( rect )
- draw_item_name( item, rect.x, rect.y )#, enabled)
- rect.width -= 4
- def_size = self.contents.font.size
- self.contents.font.size = IEX::SCENE_SHOP::CURRENCY_FONT_SIZE
- case IEX::SCENE_SHOP::SHOP_WINDOW_MODE
- when 0
- when 1
- draw_icon(IEX::SCENE_SHOP::SHOP_ICONS[:have_icon], rect.x + (rect.width - 24),rect.y)
- self.contents.draw_text(rect.x - 24, rect.y, rect.width, rect.height, number, 2)
- rect.width -= 128
- end
- price = IEX::SCENE_SHOP.calc_sell_price( item )
- if price <= 0
- self.contents.draw_text(rect.x - 24, rect.y, rect.width, rect.height, IEX::SCENE_SHOP::PRICE_0_TEXT , 2)
- else
- draw_currency_value( price, rect.x - 24, rect.y, rect.width )
- #self.contents.draw_text(rect.x - 24, rect.y, rect.width, rect.height, item.price, 2)
- end
- self.contents.font.size = def_size
- draw_icon(IEX::SCENE_SHOP::SHOP_ICONS[:gold_icon], rect.x + (rect.width - 24),rect.y)
- end
- end
- #==============================================================================#
- # ** IEX_Window_CurrentItems
- #==============================================================================#
- class IEX_Window_CurrentItems
- #--------------------------------------------------------------------------#
- # * overwrite-method :enable?
- #--------------------------------------------------------------------------#
- def enable?(item)
- return (IEX::SCENE_SHOP.calc_sell_price( item ) > 0)
- end
- end
- #==============================================================================#
- # ** IEX_Window_ShopBuy
- #==============================================================================#
- class IEX_Window_ShopBuy
- #--------------------------------------------------------------------------#
- # * overwrite-method :draw_item
- #--------------------------------------------------------------------------#
- def draw_item( index )
- item = @data[index]
- number = $game_party.item_number( item )
- prc = IEX::SCENE_SHOP.calc_buy_price( item )
- enabled = (prc <= $game_party.gold and number < IEX::SCENE_SHOP::MAX_BUY_ITEMS)
- rect = item_rect( index )
- self.contents.clear_rect( rect )
- draw_item_name( item, rect.x, rect.y, enabled )
- rect.width -= 4
- def_size = self.contents.font.size
- self.contents.font.size = IEX::SCENE_SHOP::CURRENCY_FONT_SIZE
- case IEX::SCENE_SHOP::SHOP_WINDOW_MODE
- when 0
- when 1
- draw_icon(IEX::SCENE_SHOP::SHOP_ICONS[:have_icon], rect.x + (rect.width - 24),rect.y)
- self.contents.draw_text(rect.x - 24, rect.y, rect.width, rect.height, number, 2)
- rect.width -= 128
- end
- if prc <= 0
- self.contents.draw_text(rect.x - 24, rect.y, rect.width, rect.height, IEX::SCENE_SHOP::PRICE_0_TEXT , 2)
- else
- draw_currency_value(prc, rect.x - 24, rect.y, rect.width)
- #self.contents.draw_text(rect.x - 24, rect.y, rect.width, rect.height, item.price, 2)
- end
- self.contents.font.size = def_size
- draw_icon(IEX::SCENE_SHOP::SHOP_ICONS[:gold_icon], rect.x + (rect.width - 24),rect.y)
- end
- end
- #==============================================================================#
- # ** Scene_Title
- #==============================================================================#
- class Scene_Title
- #--------------------------------------------------------------------------#
- # * alias-method :create_game_objects
- #--------------------------------------------------------------------------#
- alias :iex_sellrate_scntitle_cgo :create_game_objects unless $@
- def create_game_objects( *args, &block )
- iex_sellrate_scntitle_cgo( *args, &block )
- $game_variables[IEX::SCENE_SHOP::BUY_MOD_VARIABLE] = 100
- $game_variables[IEX::SCENE_SHOP::SELL_MOD_VARIABLE] = 100
- end
- end
- #==============================================================================#
- # ** Scene_Shop
- #==============================================================================#
- class Scene_Shop
- #--------------------------------------------------------------------------#
- # * overwrite-method :update_buy_selection
- #--------------------------------------------------------------------------#
- def update_buy_selection()
- @status_window.item = @buy_window.item
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @command_window.active = true
- @buy_dummy_window.visible = true if @buy_dummy_window != nil
- @buy_window.active = false
- @buy_window.close
- @status_window.close
- close_icon_strip
- series_update
- @buy_window.visible = false
- @status_window.visible = false
- @status_window.item = nil
- @help_window.set_text("")
- return
- end
- if Input.trigger?(Input::C)
- @item = @buy_window.item
- number = $game_party.item_number(@item)
- item_lim = IEX::SCENE_SHOP::MAX_BUY_ITEMS
- if @item == nil or IEX::SCENE_SHOP.calc_buy_price( @item ) > $game_party.gold or number == item_lim
- Sound.play_buzzer
- else
- Sound.play_decision
- prc = IEX::SCENE_SHOP.calc_buy_price( @item )
- max = prc == 0 ? item_lim : $game_party.gold / prc
- max = [max, item_lim - number].min
- @buy_window.active = false
- @buy_window.close
- @buy_window.visible = false
- @number_window.set(@item, max, @item.price)
- @number_window.active = true
- @number_window.visible = true
- end
- end
- end
- #--------------------------------------------------------------------------#
- # * overwrite-method :update_sell_selection
- #--------------------------------------------------------------------------#
- def update_sell_selection()
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @command_window.active = true
- @buy_dummy_window.visible = true if @buy_dummy_window != nil
- @sell_window.active = false
- @sell_window.close #visible = false
- @status_window.item = nil
- @help_window.set_text("")
- elsif Input.trigger?(Input::C)
- @item = @sell_window.item
- @status_window.item = @item
- if @item == nil or @item.price == 0
- Sound.play_buzzer
- else
- Sound.play_decision
- max = $game_party.item_number(@item)
- @sell_window.active = false
- @sell_window.close #visible = false
- open_icon_strip()
- prc = IEX::SCENE_SHOP.calc_sell_price( @item )
- @number_window.set(@item, max, prc)
- @number_window.active = true
- @number_window.visible = true
- @status_window.visible = true
- @status_window.openness = 0
- @status_window.open
- end
- end
- end
- #--------------------------------------------------------------------------#
- # * overwrite-method :decide_number_input
- #--------------------------------------------------------------------------#
- def decide_number_input()
- Sound.play_shop()
- @number_window.active = false
- @number_window.visible = false
- case @command_window.index
- when 0 # Buy
- prc = IEX::SCENE_SHOP.calc_buy_price( @item )
- $game_party.lose_gold(@number_window.number * prc)
- $game_party.gain_item(@item, @number_window.number)
- @gold_window.refresh
- @buy_window.refresh
- @status_window.refresh
- @buy_window.active = true
- @buy_window.visible = true
- @buy_window.open
- when 1 # sell
- prc = IEX::SCENE_SHOP.calc_sell_price( @item )
- $game_party.gain_gold(@number_window.number * prc)
- $game_party.lose_item(@item, @number_window.number)
- @gold_window.refresh
- @sell_window.refresh
- @status_window.refresh
- @sell_window.active = true
- @sell_window.visible = true
- @status_window.visible = false
- @sell_window.open
- end
- for win in @buy_windows.values
- next if win == nil
- win.refresh
- end
- end
- end
- #=*==========================================================================*=#
- # ** END OF FILE
- #=*==========================================================================*=#
Advertisement
Add Comment
Please, Sign In to add comment