Black_Mage icon

Custom Shop Window RMXP Script

Black_Mage | PRO | 03/16/14 02:20:43 AM UTC | 0 ⭐ | 657 👁️ | Never ⏰ | []
text |

14.19 KB

|

None

|

0 👍

/

0 👎

#==============================================================================
# ** Custom Shop Window By Black Mage
#==============================================================================
#==============================================================================
# ** Window_ShopBuy
#------------------------------------------------------------------------------
#  This window displays buyable goods on the shop screen.
#==============================================================================
 class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     shop_goods : goods
  #--------------------------------------------------------------------------
  def initialize(shop_goods)
    super(0, 128, 640, 132)
    @shop_goods = shop_goods
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Item Acquisition
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for goods_item in @shop_goods
      case goods_item[0]
      when 0
        item = $data_items[goods_item[1]]
        number = $game_party.item_number(@item.id)
      when 1
        item = $data_weapons[goods_item[1]]
        number = $game_party.weapon_number(@item.id)
      when 2
        item = $data_armors[goods_item[1]]
        number = $game_party.armor_number(@item.id)
      end
      if item != nil
        @data.push(item)
      end
    end
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    # Get items in possession
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    # If price is less than money in possession, and amount in possession is
    # not 99, then set to normal text color. Otherwise set to disabled color
    if item.price <= $game_party.gold and number < 99
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 260, y, 88, 32, "Price :")
    self.contents.draw_text(x + 300, y, 88, 32, item.price.to_s, 2)
    self.contents.draw_text(x + 470, y, 88, 32, "Owned :")
    self.contents.draw_text(x + 550, y, 32, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
 #==============================================================================
# ** Window_ShopStatus
#------------------------------------------------------------------------------
#  This window displays number of items in possession and the actor's equipment
#  on the shop screen.
#==============================================================================
 class Window_ShopStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 260, 640, 220)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item = nil
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh    
    self.contents.clear
    if @item == nil
      return
    end
    case @item
    when RPG::Item
      number = $game_party.item_number(@item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(@item.id)
    when RPG::Armor
      number = $game_party.armor_number(@item.id)
    end
    if @item.is_a?(RPG::Item)
      return
    end
    # Equipment adding information
    for i in 0...$game_party.actors.size
      # Get actor
      actor = $game_party.actors[i]
      # If equippable, then set to normal text color. If not, set to
      # invalid text color.
      if actor.equippable?(@item)
        self.contents.font.color = normal_color
        disabler = false
      else
        self.contents.font.color = Color.new(255, 255, 255, 128)
        disabler = true
      end
      # Get current equipment
      if @item.is_a?(RPG::Weapon)
        check = $data_weapons[actor.weapon_id]
        if check ==nil
          oldwpnstr = 0
          oldwpndex = 0
          oldwpnint = 0
          oldwpnagi = 0
          oldwpnpdf = 0
          oldwpnmdf = 0
          atkwpn = 0
        else
        oldwpnstr = $data_weapons[actor.weapon_id].str_plus
        oldwpndex = $data_weapons[actor.weapon_id].dex_plus
        oldwpnint = $data_weapons[actor.weapon_id].int_plus
        oldwpnagi = $data_weapons[actor.weapon_id].agi_plus
        oldwpnpdf = $data_weapons[actor.weapon_id].pdef
        oldwpnmdf = $data_weapons[actor.weapon_id].mdef
        atkwpn = @item.atk
        end
      elsif @item.kind == 0
        check = $data_armors[actor.armor1_id]
        if check ==nil
          oldwpnstr = 0
          oldwpndex = 0
          oldwpnint = 0
          oldwpnagi = 0
          oldwpnpdf = 0
          oldwpnmdf = 0
          atkwpn = 0
        else
        oldwpnstr = $data_armors[actor.armor1_id].str_plus
        oldwpndex = $data_armors[actor.armor1_id].dex_plus
        oldwpnint = $data_armors[actor.armor1_id].int_plus
        oldwpnagi = $data_armors[actor.armor1_id].agi_plus
        oldwpnpdf = $data_armors[actor.armor1_id].pdef
        oldwpnmdf = $data_armors[actor.armor1_id].mdef
        atkwpn = 0
        end
      elsif @item.kind == 1
        check = $data_armors[actor.armor2_id]
        if check ==nil
          oldwpnstr = 0
          oldwpndex = 0
          oldwpnint = 0
          oldwpnagi = 0
          oldwpnpdf = 0
          oldwpnmdf = 0
          atkwpn = 0
        else
        oldwpnstr = $data_armors[actor.armor2_id].str_plus
        oldwpndex = $data_armors[actor.armor2_id].dex_plus
        oldwpnint = $data_armors[actor.armor2_id].int_plus
        oldwpnagi = $data_armors[actor.armor2_id].agi_plus
        oldwpnpdf = $data_armors[actor.armor2_id].pdef
        oldwpnmdf = $data_armors[actor.armor2_id].mdef
        atkwpn = 0
        end
      elsif @item.kind == 2
        check = $data_armors[actor.armor3_id]
        if check ==nil
          oldwpnstr = 0
          oldwpndex = 0
          oldwpnint = 0
          oldwpnagi = 0
          oldwpnpdf = 0
          oldwpnmdf = 0
          atkwpn = 0
        else
        oldwpnstr = $data_armors[actor.armor3_id].str_plus
        oldwpndex = $data_armors[actor.armor3_id].dex_plus
        oldwpnint = $data_armors[actor.armor3_id].int_plus
        oldwpnagi = $data_armors[actor.armor3_id].agi_plus
        oldwpnpdf = $data_armors[actor.armor3_id].pdef
        oldwpnmdf = $data_armors[actor.armor3_id].mdef
        atkwpn = 0
        end
      else
        check = $data_armors[actor.armor4_id]
        if check ==nil
          oldwpnstr = 0
          oldwpndex = 0
          oldwpnint = 0
          oldwpnagi = 0
          oldwpnpdf = 0
          oldwpnmdf = 0
          atkwpn = 0
        else
        oldwpnstr = $data_armors[actor.armor4_id].str_plus
        oldwpndex = $data_armors[actor.armor4_id].dex_plus
        oldwpnint = $data_armors[actor.armor4_id].int_plus
        oldwpnagi = $data_armors[actor.armor4_id].agi_plus
        oldwpnpdf = $data_armors[actor.armor4_id].pdef
        oldwpnmdf = $data_armors[actor.armor4_id].mdef
        atkwpn = 0
        end
      end
       # Draw item
      x = 4 + 152*i
      y = 24
       # Draw actor's name
      self.contents.draw_text(4 + 152*i, -8, 120, 32, actor.name)
       opacity = self.contents.font.color == normal_color ? 255 : 128
       if disabler == false
        self.contents.font.color = system_color
      end
       self.contents.draw_text(x, y-2, 212, 32, "STR")
      self.contents.draw_text(x, y+19, 212, 32, "DEX")
      self.contents.draw_text(x, y+40, 212, 32, "INT")
      self.contents.draw_text(x, y+61, 212, 32, "AGI")
      self.contents.draw_text(x, y+82, 212, 32, "ATK")
      self.contents.draw_text(x, y+103, 212, 32, "PDEF")
      self.contents.draw_text(x, y+124, 212, 32, "MDEF")
       if disabler == false
        self.contents.font.color = normal_color
      end
       # Draw STR
      act = actor.str
      wpn = @item.str_plus - oldwpnstr
      self.contents.draw_text(64 + 152*i, y-2, 112, 32, act.to_s(10))
      if disabler == false
        if wpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif wpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y-2, 112, 32, sprintf("%+d", wpn), 2)
      end
       # Draw DEX
      act = actor.dex
      wpn = @item.dex_plus - oldwpndex
      if disabler == false
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(64 + 152*i, y+19, 112, 32, act.to_s(10))
      if disabler == false
        if wpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif wpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y+19, 112, 32, sprintf("%+d", wpn), 2)
      end
       # Draw INT
      act = actor.int
      wpn = @item.int_plus - oldwpnint
      if disabler == false
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(64 + 152*i, y+40, 112, 32, act.to_s(10))
      if disabler == false
        if wpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif wpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y+40, 112, 32, sprintf("%+d", wpn), 2)
      end
       # Draw AGI
      act = actor.agi
      wpn = @item.agi_plus - oldwpnagi
      if disabler == false
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(64 + 152*i, y+61, 112, 32, act.to_s(10))
      if disabler == false
        if wpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif wpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y+61, 112, 32, sprintf("%+d", wpn), 2)
      end
       # Draw ATK
      act = actor.atk
      if disabler == false
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(64 + 152*i, y+82, 112, 32, act.to_s(10))
      if disabler == false
        if atkwpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif atkwpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y+82, 112, 32, sprintf("%+d", atkwpn), 2)
      end
       # Draw PDEF
      act = actor.pdef
      wpn = @item.pdef - oldwpnpdf
      if disabler == false
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(64 + 152*i, y+103, 112, 32, act.to_s(10))
      if disabler == false
        if wpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif wpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y+103, 112, 32, sprintf("%+d", wpn), 2)
      end
       # Draw MDEF
      act = actor.mdef
      wpn = @item.mdef - oldwpnmdf
      if disabler == false
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(64 + 152*i, y+124, 112, 32, act.to_s(10))
      if disabler == false
        if wpn > 0
          self.contents.font.color = Color.new(0, 100, 255, 255)
        elsif wpn < 0
          self.contents.font.color = Color.new(100, 0, 0, 255)          
        else
          self.contents.font.color = normal_color
        end
        self.contents.draw_text(32 + 152*i, y+124, 112, 32, sprintf("%+d", wpn), 2)        
      end
     end
  end
  #--------------------------------------------------------------------------
  # * Set Item
  #     item : new item
  #--------------------------------------------------------------------------
  def item=(item)
    if @item != item
      @item = item
      refresh
    end
  end
end

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎