| 
 Shop Issues :P - LunarBerry -  11-21-2016
 
 Ok I've been rearranging and tinkering with LittleDraco's limited Shop Inventory V2
 http://littledrago.blogspot.com/2013/05/rgss-drg-limited-shop-v2.html
 
 Neat little script, but I've come across a few issues when redesigning the layout and here's the main issue I'm finding (see pic) Also note, I'm not a scripter but I can tinker with scripts up to a certain point ^^;;;
 
 
  shopprob.png (Size: 469.78 KB / Downloads: 156) 
 The graphics are still in the works but I managed to get it to mostly look/setup the way we want. And as you can see on the right, I'm having problems locating the code area to effect the appearance of icons when going into the buy/sell middle area where you select how many you are selling and buying. Now for buying we actually don't need it, because there will always be one of each item in the shop to sell. But it's still useful for the selling part since you may have more of the same items for sell. So in this case two questions:
 1. How to remove or bypass the "multiple buying" section in the script?
 Cause really it's not needed there or if anything...
 2. Where is the code/section to edit this particular section? (I've looked through the code so many time my eyes cross and was not able to see things that resembles the code that works so well on the others >< so I'm assuming it doesn't look the same or it calls it from elsewhere (like maybe from the default/core scripts).
 3. Also the windowskin for the main game would be differ from the shops. I've tried tinkering with it but it changes to default or gets an error. So how can I make this have it's own windowskin?
 
 Also I've noticed the code has an incredibly simple setup to make it where items don't show back up in the buying area after you sell to the merchant, which is great but the problem I find is that it also doesn't show anything for sale either, even though it's been setup to have things on sale X_x;;
 If anyone got a fix for this it'll be great, but if not, it's alright as this isn't the most major concern (we can deal with having the ability to rebuy items back :P). Thank you ahead of time ^_^
 
 
 RE: Shop Issues :P - kyonides -  11-21-2016
 
 The problem is that we shouldn't really help you with all of your requests unless you let us see what changes you made to the code. One thing would be to tell you what little drago's script offers like where the icons are placed or called from, and another to tell you what you did wrong while modifying it. We shouldn't start guessing but reading what's not working in the actual code. I hope you understand what I mean here or else I'd think I'm still falling asleep. XD
 
 On the other hand I can easily tell you that any window would let you change its windowskin at any time by calling the following method:
 
 @my_window.windowskin = RPG::Cache.windowskin('My Custom Windowskin')
 
 It's probable that the script might sometimes need you to change another variable namely @windowskin_name that should be equal to a string like 'My Custom Windowskin'. The thing is that you should only call it from within the corresponding window initialize method. The self.windowskin method might also be called there but both of them will only work if placed beneath super or super(any arguments). The number of lines below the super is called doesn't really matter, but you gotta be careful, both of them need to be placed before a refresh is called.
 
 
 Code: class Window_MyWindow < Window_Selectabledef initialize(x, y)
 super(x, y, width, height)
 # anything might go here or not
 @windowskin_name = 'Guess What Skin Goes Here'
 self.windowskin = RPG::Cache.windowskin(@windowskin_name)
 # anything might go here or not
 refresh
 end
 # more code
 end
 
 RE: Shop Issues :P - LunarBerry -  11-22-2016
 
 Ah I see, sorry about that hadn't though to post the code since the changes are mainly just for size, position and visibility. Would ya believe me when I say for some reason I've had to attempt this post several times cause my browser either crashed or connection had issues, lol >_<  Oh and thanks for the windowskin suggestion I'll give it a shot.
 Here's the current code ^^
 
 
 Code: #==============================================================================# ** DRG - Limited Shop
 # Version : 2.00
 # Author : LiTTleDRAgo
 #==============================================================================
 #
 # How To Use :
 #
 # Use Script Command :
 #
 # Script :
 #  Script :
 #    $limited_shop = {
 #      0 => ['i1','i2','i3','i4'], # This means item 1,2,3,4 didn't have limit
 #      1 => ['w1','w2','a1'],      # This means weapon 1,2 and armor 1 can only
 #                                  # bought 1 times
 #      2 => ['a2']                 # This means armor 2 can be bought 2 times
 #
 #      # This option won't do anything if SHOP_HAS_GOLD is false
 #      "G" => 3000                 # This means the shop is have 3000 gold
 #                                  # you can't sell anything if shop have 0 gold
 #                                  # if ommitted, the shop gold is set as 0
 #    }
 #
 #  To change the item inside the shop
 # Script :
 #    shop = [@map_id, @event_id]
 #    item = $data_items[x]         # set 'Gold' to change the shop gold
 #    limit = 90                    # set '-' for unlimited
 #    limit_shop_item(shop,item,limit)
 #
 #==============================================================================
 module LiTTleDRAgo
 
 SCENE_LIMITED_SHOP = {
 #  Command , Condition for Enabled
 0 => ['Buy',   '$game_party.gold > 0'],
 1 => ['Sell',],
 }
 
 SHOP_HAS_GOLD = true
 # basically if false, you can sell anything as you please
 GET_SOLD_ITEM = 1
 # 0 : Item sold won't be added into buy list
 # 1 : Item sold will added into buy list
 #     (you sold x items outside the list and that item will appeared in the
 #      buy list with limit of x)
 # 2 : Item sold will added into buy list unlimitedly
 #     (you sold  at least 1 items outside the list and that item will appeared
 #      in the buy list without limit and can be bought as many as possible)
 SHOP_LAYOUT = 'Item_Lay'
 SHOP_BACK   = 'Mn_Back'
 # Image Related Constant
 # (all images must be in Graphics/Pictures or Graphics/Windowskin
 SHOP_GOLD_TEXT = "Seller's Gold"
 OWN_TEXT       = "Own %02d"
 
 #---------------------------------------------------------------------------
 # From Falcon's Tax Script
 #---------------------------------------------------------------------------
 TAXRATE_TEXT   = "Tax Rate"
 DISCOUNT_TEXT  = "Discount Rate"
 TAX_COLOR      = Color.new(0,25,228)
 # String Related Constant
 STARTING_TAX   = 0
 # Tax in the shop
 # can be changed by $game_system.tax = (Numeric)
 
 end
 #==============================================================================
 # ** Game_System
 #------------------------------------------------------------------------------
 #  This class handles data surrounding the system. Backround music, etc.
 #  is managed here as well. Refer to "$game_system" for the instance of
 #  this class.
 #==============================================================================
 class Game_System
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :tax
 #--------------------------------------------------------------------------
 # * Alias Method
 #--------------------------------------------------------------------------
 alias init_tax initialize
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 init_tax
 @tax = LiTTleDRAgo::STARTING_TAX
 end
 end
 #==============================================================================
 # ** Scene_Shop
 #------------------------------------------------------------------------------
 #  This class performs shop screen processing.
 #==============================================================================
 
 class Scene_LimitedShop
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main
 create_arrow
 create_layout
 create_background
 create_menu
 create_windows
 Graphics.transition
 update_premenu
 update while $scene == self
 dispose_premenu
 Graphics.freeze
 @all_windows.flatten.each {|s| s.dispose if !s.disposed?}
 @all_sprite.flatten.each {|s| s.dispose if !s.disposed?}
 @spriteset.dispose
 end
 #--------------------------------------------------------------------------
 # ● update_premenu
 #--------------------------------------------------------------------------
 def update_premenu
 while @sprite_menu[-1].x < 50 && $scene == self
 @sprite_menu.each {|s| s.x = [s.x+40,50].min }
 @sprite_arrow.x = [@sprite_arrow.x+3,5].min
 @sprite_arrow.y = 130
 update_grafis
 end
 update_arrow
 end
 #--------------------------------------------------------------------------
 # ● dispose_premenu
 #--------------------------------------------------------------------------
 def dispose_premenu
 while @sprite_menu[-1].x > -200
 @sprite_menu.each_with_index {|s,i| s.x = s.x-(40+i*10) }
 @sprite_arrow.x -= 15
 @buy_window.x = [@buy_window.x+10,@resolution[0]].min
 @sell_window.x = [@sell_window.x+10,@resolution[0]].min
 update_grafis
 end
 end
 #--------------------------------------------------------------------------
 # ● create_layout
 #--------------------------------------------------------------------------
 def create_layout
 @spriteset = Spriteset_Map.new
 @layout = Sprite.new
 @layout.bitmap = RPG::Cache.picture(LiTTleDRAgo::SHOP_LAYOUT).dup rescue
 RPG::Cache.windowskin(LiTTleDRAgo::SHOP_BACK).dup
 s = Window_Help.new
 tax = ($game_system.tax||0).to_s+"%"
 w = @layout.bitmap.text_size(tax).width
 if tax.to_f > 0 # If there is tax
 @layout.bitmap.font.color = LiTTleDRAgo::TAX_COLOR
 @layout.bitmap.draw_text(0,44,@resolution[0]-(28+w),32,LiTTleDRAgo::TAXRATE_TEXT,2)
 @layout.bitmap.font.color = s.normal_color
 @layout.bitmap.draw_text(0,44,@resolution[0]-24,32,tax,2)
 elsif tax.to_f < 0 # If there is a discount rate
 @layout.bitmap.font.color = LiTTleDRAgo::TAX_COLOR
 @layout.bitmap.draw_text(0,44,@resolution[0]-(28+w),32,LiTTleDRAgo::DISCOUNT_TEXT,2)
 @layout.bitmap.font.color = s.normal_color
 @layout.bitmap.draw_text(0,44,@resolution[0]-24,32,tax,2)
 end
 s.dispose
 @layout.z = 100
 @all_sprite << [@layout]
 end
 #--------------------------------------------------------------------------
 # ● Draw Hemming Text
 #--------------------------------------------------------------------------
 def draw_hemming_text(obj, x, y, w, h, text, align = 0)
 original_color = obj.font.color.dup
 obj.font.color = Color.new(0,0,0,255)
 obj.draw_text(x  , y  , w, h, text.to_s, align)
 obj.draw_text(x  , y+2, w, h, text.to_s, align)
 obj.draw_text(x+2, y+2, w, h, text.to_s, align)
 obj.draw_text(x+2, y  , w, h, text.to_s, align)
 obj.font.color = original_color
 obj.draw_text(x+1, y+1, w, h, text.to_s, align)
 end
 #--------------------------------------------------------------------------
 # ● create_background
 #--------------------------------------------------------------------------
 def create_background
 @mnback = Plane.new
 @mnback.bitmap = RPG::Cache.picture(LiTTleDRAgo::SHOP_BACK) rescue
 RPG::Cache.windowskin(LiTTleDRAgo::SHOP_BACK)
 @mnback.opacity = 255
 @mnback.blend_type = 0
 @all_sprite << [@mnback]
 end
 #--------------------------------------------------------------------------
 # * Create Menu
 #--------------------------------------------------------------------------
 def create_menu(type = 0)
 @sprite_menu.each {|s| s.dispose } if !@sprite_menu.nil?
 @sprite_menu = []
 temp = @index
 @index = 0
 @column_max = 1
 @menu = LiTTleDRAgo::SCENE_LIMITED_SHOP
 @menu.each {|a| b = @menu[@index]
 @sprite_menu[@index] = type == 1 ? Window_Base.new(50,(48*@index)+120,160,48) :
 Window_Base.new(-200-50*@index,(48*@index)+120,160,48)
 @sprite_menu[@index].contents = Bitmap.new(160-32,16)
 @sprite_menu[@index].back_opacity = 180
 @sprite_menu[@index].contents.font.size = 20
 @sprite_menu[@index].contents.font.bold = true
 @sprite_menu[@index].contents.font.color =
 @sprite_menu[@index].disabled_color if (b[1] && !condition_eval(b[1]))
 @sprite_menu[@index].contents.draw_text(0,0,160-32,16,b[0].to_s,1)
 @sprite_menu[@index].z = @layout.z + 100
 @index += 1}
 @index = (temp||0)
 @column_max = 1
 @item_max =  @sprite_menu.size
 @all_sprite << [@sprite_menu]
 end
 #--------------------------------------------------------------------------
 # * Create Windows
 #--------------------------------------------------------------------------
 def create_windows
 @all_windows = [
 @help_window = Window_Help.new,
 @gold_window = Window_Gold.new,
 #@dummy_window = Window_Base.new(0, 128, 640, 352),
 @buy_window = Window_ShopBuyLimited.new,
 @sell_window = Window_ShopSellLimited.new,
 @number_window = Window_ShopNumber.new,
 @status_window = Window_ShopStatusLimited.new]
 @help_window.opacity = 0
 @help_window.y = 420
 @help_window.x = -200
 @gold_window.x = 480
 @gold_window.y = 0
 @gold_window.opacity = 0
 @gold_window.back_opacity = 0
 @buy_window.x = @resolution[0]-@buy_window.width
 @sell_window.x = @resolution[0]-@sell_window.width
 @number_window.x = @buy_window.x
 @number_window.y = @buy_window.y
 @buy_window.x = @resolution[0]
 @sell_window.x = @resolution[0]
 @all_windows.each_with_index {|s,i|
 s.z = @layout.z - 2
 s.active = false if [2,3,4].include?(i)
 s.visible = false if [4].include?(i)}
 @status_window.visible = false
 @buy_window.help_window = @help_window
 @sell_window.help_window = @help_window
 @command_window_active = true
 end
 #--------------------------------------------------------------------------
 # * Create Arrow
 #--------------------------------------------------------------------------
 VX = false
 def create_arrow
 @resolution = VX ? [Graphics.width,Graphics.height] : [640,480]
 @all_sprite = []
 @sprite_arrow = Sprite.new
 if $arrow_drg_menu.nil? || $arrow_drg_menu.disposed?
 bit = $game_system.windowskin_name                if !VX
 bit = [RPG::Cache.windowskin(bit),Rect.new(160,96,32,32)]  if !VX
 bit = [Cache.system("Window"),Rect.new(96,80,16,16)] if VX
 @sprite_arrow.bitmap = Bitmap.new(40, 40)
 @sprite_arrow.bitmap.stretch_blt(@sprite_arrow.bitmap.rect,bit[0],bit[1])
 bit = @sprite_arrow.bitmap
 copy = bit.clone
 (0...bit.height).each{|i|(0...bit.width).each{|j|
 bit.set_pixel(bit.width-i-1,j,copy.get_pixel(j,i))}}
 $arrow_drg_menu = bit.dup
 else
 @sprite_arrow.bitmap = $arrow_drg_menu.dup
 end
 @sprite_arrow.mirror = true if VX
 @sprite_arrow.x -= 100
 @sprite_arrow.z = 7
 @all_sprite << @sprite_arrow
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
 update_layout_position
 update_arrow
 update_grafis
 @all_windows.flatten.each {|s| s.update}
 return update_index   if @command_window_active
 return update_buy     if @buy_window.active
 return update_sell    if @sell_window.active
 return update_number  if @number_window.active
 end
 #--------------------------------------------------------------------------
 # * Update Grafis
 #--------------------------------------------------------------------------
 def update_grafis
 [Graphics,Input].each {|s|s.update}
 end
 #--------------------------------------------------------------------------
 # * Update Layout Position
 #--------------------------------------------------------------------------
 def update_layout_position
 @help_window.x = [@help_window.x+10,0].min
 @sprite_menu.each {|s| s.y -= 10} if @sprite_arrow.y > @resolution[1]-(40+34)
 @sprite_menu.each {|s| s.y += 10} if @sprite_arrow.y < 0+10
 @buy_window.visible = @sell_window.visible = !@number_window.visible
 if @buy_window.active
 @buy_window.x = [@buy_window.x-10,@resolution[0]-@buy_window.width].max
 @buy_window.x = @resolution[0] if @number_window.visible
 elsif !@number_window.visible
 @buy_window.x = [@buy_window.x+10,@resolution[0]].min
 end
 if @sell_window.active
 @sell_window.x = [@sell_window.x-10,@resolution[0]-@sell_window.width].max
 @sell_window.x = @resolution[0] if @number_window.visible
 elsif !@number_window.visible
 @sell_window.x = [@sell_window.x+10,@resolution[0]].min
 end
 # this is to make the background scroll/panorama
 @mnback.ox -= 0
 @mnback.oy -= 0
 end
 #--------------------------------------------------------------------------
 # * Update Arrow
 #--------------------------------------------------------------------------
 def update_arrow
 @sprite_arrow.x = [@sprite_arrow.x-10, 5].max
 @sprite_arrow.y = @sprite_menu[@index].y + 10
 end
 #--------------------------------------------------------------------------
 # ● condition_eval
 #--------------------------------------------------------------------------
 def condition_eval(ev='')
 return true if ev.nil?
 return ev if !ev.is_a?(String)
 return eval (ev)
 end
 #--------------------------------------------------------------------------
 # ● update_index
 #--------------------------------------------------------------------------
 def update_index
 if Input.repeat?(Input::DOWN)
 if (@column_max == 1 && Input.trigger?(Input::DOWN)) ||
 @index < @item_max - @column_max
 se_play(:cursor)
 @index = (@index + @column_max) % @item_max
 end
 return
 end
 if Input.repeat?(Input::UP)
 if (@column_max == 1 && Input.trigger?(Input::UP)) ||
 @index >= @column_max
 se_play(:cursor)
 @index = (@index - @column_max) % @item_max
 end
 return
 end
 if Input.trigger?(Input::B)
 se_play(:cancel)
 $limited_shop = nil
 $scene = Scene_Map.new
 end
 if Input.trigger?(Input::C)
 return se_play(:buzzer) if !condition_eval(@menu[@index][1])
 case @index
 when 0
 se_play(:decision)
 @command_window_active = false
 @buy_window.active = true
 @buy_window.refresh
 @status_window.visible = true
 when 1
 se_play(:decision)
 @command_window_active = false
 @sell_window.active = true
 @sell_window.refresh
 end
 end
 end
 #--------------------------------------------------------------------------
 # ● se_play
 #--------------------------------------------------------------------------
 def se_play(type)
 a = [$game_system,$data_system]
 case type
 when :cursor   : VX ? Sound.play_cursor   : a[0].se_play(a[1].cursor_se)
 when :decision : VX ? Sound.play_decision : a[0].se_play(a[1].decision_se)
 when :cancel   : VX ? Sound.play_cancel   : a[0].se_play(a[1].cancel_se)
 when :buzzer   : VX ? Sound.play_buzzer   : a[0].se_play(a[1].buzzer_se)
 end
 end
 #--------------------------------------------------------------------------
 # * Frame Update (when buy window is active)
 #--------------------------------------------------------------------------
 def update_buy
 @status_window.item = @buy_window.item
 if Input.trigger?(Input::B)
 $game_system.se_play($data_system.cancel_se)
 @command_window_active = true
 @buy_window.active = false
 @status_window.visible = false
 @status_window.item = nil
 @help_window.set_text("")
 return
 end
 if Input.trigger?(Input::C)
 @item = @buy_window.item
 price = @item.is_a?(RPG::Skill) ? @item.sp_cost : @item.price if !@item.nil?
 if @item.nil? or price > $game_party.gold
 return $game_system.se_play($data_system.buzzer_se)
 end
 number = case @item
 when RPG::Item then $game_party.item_number(@item.id)
 when RPG::Weapon then $game_party.weapon_number(@item.id)
 when RPG::Armor then $game_party.armor_number(@item.id)
 end || 0
 return $game_system.se_play($data_system.buzzer_se) if number == 99
 $game_system.se_play($data_system.decision_se)
 t = @item.is_a?(RPG::Weapon) ? 1 : @item.is_a?(RPG::Armor) ? 2 :
 @item.is_a?(RPG::Item) ? 0 : -1
 lim = @buy_window.item_bought(@item)
 d = (@buy_window.limited_shopping["#{t} #{@item.id}"]||{})['#3x53d323']||0
 s = (!d.nil? && lim.nil? ? d - lim : d) || 99
 max = price == 0 ? s : $game_party.gold / price
 max =  [max, s].min if d.abs != 999999999
 max = [max, 99 - number].min
 max = 1 if @item.is_a?(RPG::Skill)
 @buy_window.active = false
 @number_window.set(@item, max, price)
 @number_window.active = true
 @number_window.visible = true
 end
 end
 #--------------------------------------------------------------------------
 # * Frame Update (when sell window is active)
 #--------------------------------------------------------------------------
 def update_sell
 if Input.trigger?(Input::B)
 $game_system.se_play($data_system.cancel_se)
 @command_window_active = true
 @sell_window.active = false
 @status_window.item = nil
 @help_window.set_text("")
 @sell_window.instance_variable_set(:@gold, '')
 return
 end
 if Input.trigger?(Input::C)
 @item = @sell_window.item
 @status_window.item = @item
 gold = @buy_window.item_bought('Gold')
 price = @item.nil? ? 0 : @item.price / 2
 cond = LiTTleDRAgo::SHOP_HAS_GOLD ? gold < price : false
 if @item == nil or @item.price == 0 || cond
 return $game_system.se_play($data_system.buzzer_se)
 end
 $game_system.se_play($data_system.decision_se)
 number = case @item
 when RPG::Item then $game_party.item_number(@item.id)
 when RPG::Weapon then $game_party.weapon_number(@item.id)
 when RPG::Armor then $game_party.armor_number(@item.id)
 end
 max = number
 @sell_window.active = false
 (0..max).each  {|s| @can_sell = s if s*price <= gold  }
 max = [max, @can_sell].min if LiTTleDRAgo::SHOP_HAS_GOLD
 @number_window.set(@item, max, price)
 @number_window.active = true
 @number_window.visible = true
 @status_window.visible = true
 end
 end
 #--------------------------------------------------------------------------
 # * Frame Update (when quantity input window is active)
 #--------------------------------------------------------------------------
 def update_number
 if Input.trigger?(Input::B)
 $game_system.se_play($data_system.cancel_se)
 @number_window.active = false
 @number_window.visible = false
 case @index
 when 0
 @buy_window.active = true
 when 1
 @sell_window.active = true
 @status_window.visible = false
 end
 return
 end
 if Input.trigger?(Input::C)
 $game_system.se_play($data_system.shop_se)
 @number_window.active = false
 @number_window.visible = false
 number = @number_window.number
 case @index
 when 0  # buy
 price = @item.is_a?(RPG::Skill) ? @item.sp_cost : @item.price if !@item.nil?
 $game_party.lose_gold(number * price)
 case @item
 when RPG::Item : $game_party.gain_item(@item.id, number)
 when RPG::Weapon : $game_party.gain_weapon(@item.id, number)
 when RPG::Armor : $game_party.gain_armor(@item.id, number)
 when RPG::Skill : $game_party.actors[0].learn_skill(@item.id)
 end
 t = @item.is_a?(RPG::Weapon) ? 1 : @item.is_a?(RPG::Armor) ? 2 :
 @item.is_a?(RPG::Item) ? 0 : -1
 d = (@buy_window.limited_shopping["#{t} #{@item.id}"]||{})['#3x53d323']||0
 number.times {@buy_window.item_bought(@item,1)} if  d != -999999999
 @buy_window.item_bought('Gold',number*price)
 @gold_window.refresh
 @buy_window.refresh
 @status_window.refresh
 @buy_window.active = true
 create_menu(1)
 when 1  # sell
 $game_party.gain_gold(number * (@item.price / 2))
 case @item
 when RPG::Item : $game_party.lose_item(@item.id, number)
 when RPG::Weapon : $game_party.lose_weapon(@item.id, number)
 when RPG::Armor : $game_party.lose_armor(@item.id, number)
 end
 t = @item.is_a?(RPG::Weapon) ? 1 : @item.is_a?(RPG::Armor) ? 2 :
 @item.is_a?(RPG::Item) ? 0 : -1
 d = (@buy_window.limited_shopping["#{t} #{@item.id}"]||{})['#3x53d323']||0
 number.times {@buy_window.item_bought(@item,-1)} if  d != -999999999
 @buy_window.item_bought('Gold',-number*@item.price/2)
 @gold_window.refresh
 @sell_window.refresh
 @status_window.refresh
 @sell_window.active = true
 create_menu(1)
 @status_window.visible = false
 end
 return
 end
 end
 end
 #==============================================================================
 # ** Scene_Map
 #------------------------------------------------------------------------------
 #  This class performs map screen processing.
 #==============================================================================
 
 class Scene_Map
 alias drg1732013_update update
 def update
 drg1732013_update
 unless $game_player.moving?
 if !$limited_shop.nil?
 all = []
 $game_system.class.send(:attr_accessor ,:limited_shop)
 $limited_shop.dup.each_pair {|t,i|
 r = []
 i = i.split(/,/) if i.is_a?(String)
 i.collect.each {|s|
 d = s[/i(\d+)/i] ? $data_items[$1.to_i]  :
 s[/w(\d+)/i] ? $data_weapons[$1.to_i] :
 s[/a(\d+)/i] ? $data_armors[$1.to_i] :
 s[/s(\d+)/i] ? $data_skills[$1.to_i] : 0
 r << d} if i.is_a?(Array)
 all << r.unshift (t)}
 $limited_shop_process = all
 $scene = Scene_LimitedShop.new
 end
 end
 end
 end
 #==============================================================================
 # ** Interpreter
 #------------------------------------------------------------------------------
 #  This interpreter runs event commands. This class is used within the
 #  Game_System class and the Game_Event class.
 #==============================================================================
 
 class Interpreter
 #--------------------------------------------------------------------------
 # * limit_shop_item
 #--------------------------------------------------------------------------
 def limit_shop_item(shop,item,limit=nil)
 $game_system.class.send(:attr_accessor ,:limited_shop)
 map = [[@map_id, @event_id]]
 map = shop if shop.is_a?(Array)
 t = item.is_a?(RPG::Weapon) ? 1 : item.is_a?(RPG::Armor) ? 2 :
 item.is_a?(RPG::Item)   ? 0 : -1
 t = item.is_a?(String)     ? item : "#{t} #{item.id}"
 $game_system.limited_shop = {} if $game_system.limited_shop.nil?
 $game_system.limited_shop[map] = {} if $game_system.limited_shop[map].nil?
 $game_system.limited_shop[map]["#{t}"] = {} if
 $game_system.limited_shop[map]["#{t}"].nil?
 result = $game_system.limited_shop[map]["#{t}"]
 return result['Get']||0 if limit.nil?
 return result['Get'] = -limit if limit.is_a?(Integer)
 return result['Get'] = 999999999
 end
 end
 
 
 #==============================================================================
 # ** Window_ShopStatus
 #------------------------------------------------------------------------------
 #  This window displays number of items in possession and the actor's equipment
 #  on the shop screen.
 #==============================================================================
 
 class Window_ShopStatusLimited < Window_Base
 
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
 super(0, 200, 272, 352)
 self.contents = Bitmap.new(width - 32, height - 32)
 @item = nil
 self.opacity = 0
 self.back_opacity = 0
 refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
 self.contents.clear
 return if @item == nil
 return if @item.is_a?(RPG::Skill)
 return if @item.is_a?(RPG::Item)
 $game_party.actors.each_with_index {|actor,i|
 if actor.equippable?(@item)
 self.contents.font.color = normal_color
 else
 self.contents.font.color = disabled_color
 end
 face = sprite_character(actor)
 self.contents.blt(4,64-60+face.height*i,face,face.rect)
 if @item.is_a?(RPG::Weapon)
 item1 = $data_weapons[actor.weapon_id]
 elsif @item.kind == 0
 item1 = $data_armors[actor.armor1_id]
 elsif @item.kind == 1
 item1 = $data_armors[actor.armor2_id]
 elsif @item.kind == 2
 item1 = $data_armors[actor.armor3_id]
 elsif @item.kind == 3
 item1 = $data_armors[actor.armor4_id]
 else
 return
 end
 if actor.equippable?(@item)
 if @item.is_a?(RPG::Weapon)
 atk1 = item1 != nil ? item1.atk : 0
 atk2 = @item != nil ? @item.atk : 0
 change = atk2 - atk1
 end
 if @item.is_a?(RPG::Armor)
 pdef1 = item1 != nil ? item1.pdef : 0
 mdef1 = item1 != nil ? item1.mdef : 0
 pdef2 = @item != nil ? @item.pdef : 0
 mdef2 = @item != nil ? @item.mdef : 0
 change = pdef2 - pdef1 + mdef2 - mdef1
 end
 a= self.contents.font.color
 self.contents.font.color = change > 0 ? Color.new(128,255,128) :
 change < 0 ? Color.new(255,28,28) : normal_color
 self.contents.draw_text(110, 42-32 + face.height * i, 112, 32,
 sprintf("%+d", change), 2)
 end
 if item1 != nil
 x = 4+face.width
 y = 42 -64+ face.height * i + 32
 bitmap = RPG::Cache.icon(item1.icon_name)
 opacity = self.contents.font.color == normal_color ? 255 : 128
 self.contents.blt(x, y - 9, bitmap, Rect.new(0, 0, 80, 80), opacity)
 #        self.contents.draw_text(x + 45, y, 212, 32, item1.name)
 end }
 end
 #--------------------------------------------------------------------------
 # ● sprite_character
 #--------------------------------------------------------------------------
 def sprite_character(actor)
 if false
 bit = cache.character(actor.character_name)
 sign = actor.character_name[/^[\!\$]./]
 if sign != nil and sign.include?('$')
 cw = [bit.width / 3,bit.height / 4]
 else
 cw = [bit.width / 12,bit.height / 8]
 end
 index = actor.character_index
 pattern = (@pattern||0) < 3 ? (@pattern||0) : 1
 sx = [(index % 4 * 3 + pattern) * cw[0],
 (index / 4 * 4 + (2 - 2) / 2) * cw[1]]
 rect = Rect.new(sx[0], sx[1], cw[0], cw[1])
 bitmap = Bitmap.new(*cw)
 bitmap.blt(0,0,bit,rect)
 return bitmap
 end
 bit = RPG::Cache.character(actor.character_name,0)
 cw = [bit.width / 4, bit.height / 4]
 sx = [(@pattern||0) * cw[0], (2 - 2) / 2 * cw[1]]
 rect = Rect.new(sx[0], sx[1], cw[0], cw[1])
 bitmap = Bitmap.new(*cw)
 bitmap.blt(0,0,bit,rect)
 return bitmap
 end
 #--------------------------------------------------------------------------
 # * Set Item
 #     item : new item
 #--------------------------------------------------------------------------
 def item=(item)
 if @item != item
 @item = item
 refresh
 end
 end
 end
 #==============================================================================
 # ** Window_ShopBuyLimited
 #------------------------------------------------------------------------------
 #  This window displays buyable goods on the shop screen.
 #==============================================================================
 
 class Window_ShopBuyLimited < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     shop_goods : goods
 #--------------------------------------------------------------------------
 def initialize
 super(0, 295, 310, 195)
 @column_max = 3
 self.opacity = 0
 self.back_opacity = 0
 @shop_goods = $limited_shop_process.dup
 @get_sold = LiTTleDRAgo::GET_SOLD_ITEM
 @shop_goods.each {|s| t = s[0]
 next if limited_shopping['#3x53d324']
 if t == 'G'
 limited_shopping['#3x53d324'] = true
 item_bought('Gold',$limited_shop[t])
 next
 end
 s.each {|i| next if i.is_a?(Integer) || !t.is_a?(Integer)
 d = i.is_a?(RPG::Weapon) ? 1 :  i.is_a?(RPG::Armor) ? 2 :
 i.is_a?(RPG::Item) ? 0 : -1
 limited_shopping["#{d} #{i.id}"] = {} if limited_shopping["#{d} #{i.id}"].nil?
 limited_shopping["#{d} #{i.id}"]['Get'] = -t
 limited_shopping["#{d} #{i.id}"]['Get'] = 999999999 if t == 0}}
 refresh
 self.index = 0
 end
 #--------------------------------------------------------------------------
 # * Item Acquisition
 #--------------------------------------------------------------------------
 def item
 return @data[self.index]
 end
 #--------------------------------------------------------------------------
 # * update_item
 #--------------------------------------------------------------------------
 def item_bought(item,val=nil)
 t = item.is_a?(RPG::Weapon) ? 1 : item.is_a?(RPG::Armor) ? 2 :
 item.is_a?(RPG::Item) ? 0 : -1
 t = item.is_a?(String) ? item : "#{t} #{item.id}"
 limited_shopping[t] = {} if limited_shopping[t].nil?
 limited_shopping[t]['Get'] = 0 if limited_shopping[t]['Get'].nil?
 return limited_shopping[t]['Get'] += val if !val.nil?
 return limited_shopping[t]['Get']
 end
 #--------------------------------------------------------------------------
 # * limited_shopping
 #--------------------------------------------------------------------------
 def limited_shopping
 int = $game_system.map_interpreter.instance_variable_get(:@event_id)
 map = $game_system.map_interpreter.instance_variable_get(:@map_id)
 lin = [map,int]#,"#{$limited_shop}"]
 $game_system.limited_shop = {} if $game_system.limited_shop.nil?
 lim = $game_system.limited_shop[lin]
 $game_system.limited_shop[lin] = {} if lim.nil?
 return $game_system.limited_shop[lin]
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
 if self.contents != nil
 self.contents.dispose
 self.contents = nil
 end
 @data = Array.new(4){[]}
 limited_shopping.each_pair {|k,r| d = k.split(' ')
 d.size != 2 ? next : d.map! {|s| s.to_i}
 i = d[0] == 0 ? $data_items[d[1]]  : d[0] == 1 ? $data_weapons[d[1]] :
 d[0] == 2 ? $data_armors[d[1]] : $data_skills[d[1]]
 r.each_pair {|m,v|
 next if m != 'Get' || i.nil? || (v.to_i >= 0 && v != 999999999)
 r['#3x53d323']= -v
 r['#3x53d323']= -999999999 if v == 999999999 || @get_sold == 2
 @data[d[0]+1] << i }} if @get_sold != 0
 @data = @data.each {|s|s.sort!{|b,c|b.id<=>c.id}}.flatten.collect {|s|s}
 @item_max = @data.size
 return unless @item_max > 0
 self.contents = Bitmap.new(width - 32, row_max * 80)
 @data.each_index {|i| draw_item(i)}
 end
 #--------------------------------------------------------------------------
 # * Draw Item
 #     index : item number
 #--------------------------------------------------------------------------
 def draw_item(index)
 item = @data[index]
 t = item.is_a?(RPG::Weapon) ? 1 : item.is_a?(RPG::Armor) ? 2 :
 item.is_a?(RPG::Item)   ? 0 : -1
 number = case t
 when 0 : $game_party.item_number(item.id)
 when 1 : $game_party.weapon_number(item.id)
 when 2 : $game_party.armor_number(item.id)
 end || 0
 can_buy = (limited_shopping["#{t} #{item.id}"]||{})['#3x53d323']||0
 can_buy = '' if can_buy <= 0
 price = item.is_a?(RPG::Skill) ? item.sp_cost : item.price
 conds = (price <= $game_party.gold && number.to_i < 99)
 self.contents.font.color = conds ? normal_color : disabled_color
 number = number > 0 ? sprintf(LiTTleDRAgo::OWN_TEXT, number) : ''
 number.gsub!(' 0','  ')
 pos = [4 + index % @column_max * (95),index / @column_max * 50]
 rect = Rect.new(x, y, self.width / @column_max - 80, 80)
 self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
 bit = RPG::Cache.icon(item.icon_name)
 opc = self.contents.font.color == normal_color ? 255 : 128
 con = self.contents.font.size
 self.contents.blt(pos[0], pos[1], bit, Rect.new(0, 0, 80, 80), opc)
 #    self.contents.draw_text(pos[0]+58, pos[1], 212, 32, item.name, 0)
 #    self.contents.draw_text(pos[0]+25, pos[1], 88, 35, price.to_s, 2)
 #    self.contents.font.size = 18
 #    self.contents.draw_text(pos[0]+30, pos[1], 88, 32, number.to_s, 2)
 #    self.contents.font.size = 25
 #    self.contents.font.bold = true
 #    self.contents.draw_text(pos[0]+15, pos[1]+25, 80, 80, can_buy.to_s, 2)
 #    self.contents.font.size = con
 #    self.contents.font.bold = false
 end
 #--------------------------------------------------------------------------
 # * Help Text Update
 #--------------------------------------------------------------------------
 def update_help
 @help_window.set_text(self.item == nil ? "" : self.item.description)
 end
 end
 #==============================================================================
 # ** Window_ShopSellLimited
 #------------------------------------------------------------------------------
 #  This window displays items in possession for selling on the shop screen.
 #==============================================================================
 
 class Window_ShopSellLimited < Window_ShopBuyLimited
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
 if self.contents != nil
 self.contents.dispose
 self.contents = nil
 end
 @data = []
 @data = $data_items.map{|i| i if $game_party.item_number(i.id) > 0 }.compact
 @data += $data_weapons.map{|i| i if $game_party.weapon_number(i.id) > 0 }.compact
 @data += $data_armors.map{|i| i if $game_party.armor_number(i.id) > 0 }.compact
 
 # If item count is not 0, make a bitmap and draw all items
 @item_max = @data.size
 if @item_max > 0
 self.contents = Bitmap.new(width - 32, row_max * 80)
 for i in 0...@item_max
 draw_item(i)
 end
 end
 end
 #--------------------------------------------------------------------------
 # * Draw Item
 #     index : item number
 #--------------------------------------------------------------------------
 def draw_item(index)
 item = @data[index]
 t = item.is_a?(RPG::Weapon) ? 1 : item.is_a?(RPG::Armor) ? 2 :
 item.is_a?(RPG::Item) ? 0 : -1
 number = case t
 when 0 : $game_party.item_number(item.id)
 when 1 : $game_party.weapon_number(item.id)
 when 2 : $game_party.armor_number(item.id)
 end || 0
 gold = item_bought('Gold')
 gold = gold >= item.price/2 if LiTTleDRAgo::SHOP_HAS_GOLD
 gold = (item.price>0&&gold)
 self.contents.font.color = gold ? normal_color : disabled_color
 pos = [4 + index % @column_max * (95),index / @column_max * 50]
 rect = Rect.new(x, y, self.width / @column_max - 80, 80)
 #    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
 bit = RPG::Cache.icon(item.icon_name)
 opc = self.contents.font.color == normal_color ? 255 : 128
 self.contents.blt(pos[0], pos[1]+4, bit, Rect.new(0, 0, 80, 80), opc)
 #   self.contents.draw_text(pos[0]+28, pos[1], 212, 32, item.name, 0)
 self.contents.draw_text(pos[0]+70, pos[1], 16, 80, "x", 1)
 self.contents.draw_text(pos[0]+75, pos[1], 24, 80, number.to_s, 2)
 end
 #--------------------------------------------------------------------------
 # * Help Text Update
 #--------------------------------------------------------------------------
 def update_help
 @help_window.set_text(self.item == nil ? "" : self.item.description)
 return if @gold == item_bought('Gold') && @old_item == self.item
 return unless LiTTleDRAgo::SHOP_HAS_GOLD
 @old_item = self.item
 @gold = item_bought('Gold')
 s = @help_window.width - 40
 @help_window.contents.fill_rect(Rect.new(420,0,s,32),Color.new(0,0,0,0))
 @help_window.contents.font.size -= 4
 @help_window.contents.draw_text(420, 0, s, 32, LiTTleDRAgo::SHOP_GOLD_TEXT)
 @help_window.contents.draw_text(4, 0, s, 32, item_bought('Gold').to_s, 2)
 @help_window.contents.font.size += 4
 end
 end
 
 #==============================================================================
 # ** RPG::Something
 #------------------------------------------------------------------------------
 #  This module handles data item, weapon, and armor
 #==============================================================================
 
 ['Item','Weapon','Armor'].each {|clas| eval "
 module RPG
 class #{clas}
 alias tax price unless method_defined?(:tax)
 def price() (tax + tax*($game_system.tax||0) / 100).to_i end
 end
 end#"}
 
 RE: Shop Issues :P - kyonides -  11-22-2016
 
 In lines 429 through 432...
 
 
 Code: @buy_window.active = false@number_window.set(@item, max, price)
 @number_window.active = true
 @number_window.visible = true
You would need to replace it with...
 
 
 Code: $game_party.gain_item(@item.id, 1)$game_party.lose_gold(price)
So you would buy a single item at a time and lose gold, but you wouldn't stop watching the buy window at all. If you don't need to purchase a single item at a time but 10, then replace 1 with 10 or any other number you'd need to be there.
 
 
 RE: Shop Issues :P - LunarBerry -  11-23-2016
 
 Heya, I've tried both your suggestions and I thank you for your time to help me ^^
 The windowskin didn't turn out as I'd hoped (all windowskin in script actually called on the background image, so when I was matching things up it made the custom windowskin tile everywhere or otherwise had no effect, lol) but ironically I figured out a weird trick to get it to work the way I wanted. So that issue is resolved for now.
 
 For the "amount window", it did give the item when buying and kept on the buying screen but it didn't remove the item from the shop after purchase (which enables one to keep buying the same item in unlimited amounts, though one at a time) and also the selector graphic from the windowskin wasn't present so it would be tricky to see what you are actually buying until you check inventory.
 
 So, what I tried since that's the area for the effect... (after changing all the true/false to see what happens, lol)
 
 I changed this to false in the buy section
 @number_window.visible = false
 
 And this "removed" that window and allowed the buying of items as usual and stay on that window, which was great, but items still scroll on and off the scene as if it's still switching over (as in items roll in, select one to buy, it rolls out and you reconfirm the selection again and everything but that "bought" item rolls in again.)
 
 I found the area that seems to effect the scrolling in/out:
 
 Code:  #--------------------------------------------------------------------------# * Update Layout Position
 #--------------------------------------------------------------------------
 def update_layout_position
 @help_window.x = [@help_window.x+10,0].min
 @sprite_menu.each {|s| s.y -= 10} if @sprite_arrow.y > @resolution[1]-(40+34)
 @sprite_menu.each {|s| s.y += 10} if @sprite_arrow.y < 0+10
 @buy_window.visible = @sell_window.visible = !@number_window.visible
 if @buy_window.active
 @buy_window.x = [@buy_window.x-10,@resolution[0]-@buy_window.width].max
 @buy_window.x = @resolution[0] if @number_window.visible
 elsif !@number_window.visible
 @buy_window.x = [@buy_window.x+10,@resolution[0]].min
 end
 if @sell_window.active
 @sell_window.x = [@sell_window.x-10,@resolution[0]-@sell_window.width].max
 @sell_window.x = @resolution[0] if @number_window.visible
 elsif !@number_window.visible
 @sell_window.x = [@sell_window.x+10,@resolution[0]].min
 end
when I do adjust the buy_window.x to "0"
 elsif !@number_window.visible
 @buy_window.x = [@buy_window.x+0,@resolution[0]].min
 
 It would roll items in (which was fine) and did keep the items on screen (though you still have to double select to make a purchase) but then once you leave the buy mode the items don't clear out or if there isn't any items, the selector graphic doesn't clear. So if you switch to sell mode, the items in inventory to sell will overlap the buy items. At least until you actually leave shop and then it starts to roll out/clears. But other than that, it's sooo close to being functionally done >_<
 
 So now essentially I'm hoping to have two things happen.
 1. Preferably not scroll in and out each time you buy something and clear out when leaving buy mode. I actually don't mind the double confirmation, as that can give players a sort of "buffer" to help prevent accidental buying, etc.
 2.  GET_SOLD_ITEM = 1
 Item sold won't be added into buy list when set to "0"  but buy list doesn't even appear at all even when there are items setup for sale in the call script. This is pretty much the case even on a clean script/demo. Would like to have it setup to where the buy list will show up if there are items setup for sale. This would actually be great because the creator of this game project wants to setup some shops that are sell only and having this work like this will allow for that. Or maybe if there's another way around to make the buy and sell ability separate so that one shop can be buy only and one sell only.
 Again any help would be very appreciated ^^;
 
 
 
 |