Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[RMXP] New Items Display

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-06-13, 06:52

Aquí lo tienes para items, weapons y armors, ahora sí.

Código:
#==============================================================================
# ** [XP] Máximo individual para items, weapons y armors
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
# Para definir el máximo de un item:
#  $game_system.item_max_data[ID item] = max
#  $game_system.weapon_max_data[ID weapon] = max
#  $game_system.armor_max_data[ID armor] = max
#==============================================================================

#==============================================================================
# * Game_System
#==============================================================================

class Game_System
  attr_accessor :item_max_data
  attr_accessor :weapon_max_data
  attr_accessor :armor_max_data
  #----------------------------------------------------------------------------
  # * Initialize
  #----------------------------------------------------------------------------
  alias item_max_ini initialize unless $@
  def initialize
    item_max_ini
    # Definir máximo por defecto para cada item (ID item => máximo)
    @item_max_data  = {1 => 1, 2 => 1, 3 => 1, 6 => 10, 7 => 10, 8 => 10}
    @weapon_max_data = {}
    @armor_max_data  = {}
  end
  # Definir iconos (deja vacío "" si alguna de las opciones no usa gráfico)
  ITEM_ICON_1  = "icon_1"
  ITEM_ICON_10 = "icon_10"
  ITEM_ICON_99 = "icon_99"
 
  WEAPON_ICON_1  = "icon_1"
  WEAPON_ICON_10 = "icon_10"
  WEAPON_ICON_99 = "icon_99"
 
  ARMOR_ICON_1  = "icon_1"
  ARMOR_ICON_10 = "icon_10"
  ARMOR_ICON_99 = "icon_99"
end

#==============================================================================
# * Window_Item
#==============================================================================

class Window_Item < Window_Selectable
  #----------------------------------------------------------------------------
  # * Draw Item
  #----------------------------------------------------------------------------
  alias item_max_draw draw_item unless $@
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    item_max_draw(index)
    if item.is_a?(RPG::Item)
      if $game_system.item_max_data.keys.include?(item.id)
        case $game_system.item_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_1)  rescue nil
        when 10
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_99) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Weapon)
      if $game_system.weapon_max_data.keys.include?(item.id)
        case $game_system.weapon_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_1)  rescue nil
        when 10
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_99) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Armor)
      if $game_system.armor_max_data.keys.include?(item.id)
        case $game_system.armor_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_1)  rescue nil
        when 10
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_99) rescue nil
        end
      end
    end
    return if bitmap.nil?
    self.contents.blt(x + 2, y + 4 + 2, bitmap, Rect.new(0, 0, 24, 24))
  end
end

#==============================================================================
# * Game_Party
#==============================================================================

class Game_Party
  unless $@
    alias force_gain_item  gain_item
    alias force_gain_weapon gain_weapon
    alias force_gain_armor  gain_armor
  end
  #----------------------------------------------------------------------------
  # * Gain Item
  #----------------------------------------------------------------------------
  def gain_item(item_id, n)
    if item_id > 0 and n > 0
      if $game_system.item_max_data.keys.include?(item_id)
        max = $game_system.item_max_data[item_id]
        @items[item_id] = [[item_number(item_id) + n, 0].max, max].min
      else
        force_gain_item(item_id, n)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Weapon
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    if weapon_id > 0 and n > 0
      if $game_system.weapon_max_data.keys.include?(weapon_id)
        max = $game_system.weapon_max_data[weapon_id]
        @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, max].min
      else
        force_gain_weapon(weapon_id, n)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Armor
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    if armor_id > 0 and n > 0
      if $game_system.armor_max_data.keys.include?(armor_id)
        max = $game_system.armor_max_data[armor_id]
        @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, max].min
      else
        force_gain_armor(armor_id, n)
      end
    end
  end
end

#==============================================================================
# * Scene_Shop
#==============================================================================

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  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
      @dummy_window.visible = true
      @buy_window.active = false
      @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
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        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
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Weapon)
        if $game_system.weapon_max_data.keys.include?(@item.id)
          item_max = $game_system.weapon_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Armor)
        if $game_system.armor_max_data.keys.include?(@item.id)
          item_max = $game_system.armor_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end

Si hay más bugs me tiro por un puente.
avatar
Wecoc
Administrador
Administrador



Créditos 12280

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-06-21, 02:35

Este es el único Bug encontrado.... todo lo demás está perfecto:

Problema:
El objeto al venderse o removerlo, este no se retira del inventario.

Intente de hacer una solución, fusionando un script pasado que has
hecho con este mismo sistema, la cual como resultado funciona
perfecto, pero no se si los cambios hechos son los correctos.

Código:
#==============================================================================
# ** [XP] Máximo individual para items, weapons y armors
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
# Para definir el máximo de un item:
#  $game_system.item_max_data[ID item] = max
#  $game_system.weapon_max_data[ID weapon] = max
#  $game_system.armor_max_data[ID armor] = max
#==============================================================================

#==============================================================================
# * Game_System
#==============================================================================

class Game_System
  attr_accessor :item_max_data
  attr_accessor :weapon_max_data
  attr_accessor :armor_max_data
  #----------------------------------------------------------------------------
  # * Initialize
  #----------------------------------------------------------------------------
  alias item_max_ini initialize unless $@
  def initialize
    item_max_ini
    # Definir máximo por defecto para cada item (ID item => máximo)
    @item_max_data  = {1 => 1, 2 => 1, 3 => 1, 6 => 10, 7 => 10, 8 => 10}
    @weapon_max_data = {1 => 1}
    @armor_max_data  = {1 => 2}
  end
  # Definir iconos (deja vacío "" si alguna de las opciones no usa gráfico)
  ITEM_ICON_1  = "icon_1"
  ITEM_ICON_10 = "icon_10"
  ITEM_ICON_99 = ""
  
  WEAPON_ICON_1  = "icon_1"
  WEAPON_ICON_10 = "icon_10"
  WEAPON_ICON_99 = ""
  
  ARMOR_ICON_1  = "icon_1"
  ARMOR_ICON_10 = "icon_10"
  ARMOR_ICON_99 = ""
end

#==============================================================================
# * Window_Item
#==============================================================================

class Window_Item < Window_Selectable
  #----------------------------------------------------------------------------
  # * Draw Item
  #----------------------------------------------------------------------------
  alias item_max_draw draw_item unless $@
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    item_max_draw(index)
    if item.is_a?(RPG::Item)
      if $game_system.item_max_data.keys.include?(item.id)
        case $game_system.item_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_1)  rescue nil
        when 2
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_99) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Weapon)
      if $game_system.weapon_max_data.keys.include?(item.id)
        case $game_system.weapon_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_1)  rescue nil
        when 2
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_99) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Armor)
      if $game_system.armor_max_data.keys.include?(item.id)
        case $game_system.armor_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_1)  rescue nil
        when 2
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_99) rescue nil
        end
      end
    end
    return if bitmap.nil?
    self.contents.blt(x + 2, y + 4 + 2, bitmap, Rect.new(0, 0, 24, 24))
  end
end

#==============================================================================
# * Game_Party
#==============================================================================

class Game_Party
  unless $@
    alias force_gain_item  gain_item
    alias force_gain_weapon gain_weapon
    alias force_gain_armor  gain_armor
  end
  #----------------------------------------------------------------------------
  # * Gain Item
  #----------------------------------------------------------------------------
  alias force_gain_item gain_item unless $@
  def gain_item(item_id, n)
    force_gain_item(item_id, n)
    if item_id > 0 and n > 0
      if $game_system.item_max_data.keys.include?(item_id)
        max = $game_system.item_max_data[item_id]
        @items[item_id] = [[item_number(item_id), 0].max, max].min
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Weapon
  #--------------------------------------------------------------------------
  alias force_gain_weapon gain_weapon unless $@
  def gain_weapon(weapon_id, n)
    force_gain_weapon(weapon_id, n)
    if weapon_id > 0 and n > 0
      if $game_system.weapon_max_data.keys.include?(weapon_id)
        max = $game_system.weapon_max_data[weapon_id]
        @weapons[weapon_id] = [[weapon_number(weapon_id), 0].max, max].min
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Armor
  #--------------------------------------------------------------------------
  alias force_gain_armor gain_armor unless $@
  def gain_armor(armor_id, n)
    force_gain_armor(armor_id, n)
    if armor_id > 0 and n > 0
      if $game_system.armor_max_data.keys.include?(armor_id)
        max = $game_system.armor_max_data[armor_id]
        @armors[armor_id] = [[armor_number(armor_id), 0].max, max].min
      end
    end
  end
end

#==============================================================================
# * Scene_Shop
#==============================================================================

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  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
      @dummy_window.visible = true
      @buy_window.active = false
      @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
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        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
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Weapon)
        if $game_system.weapon_max_data.keys.include?(@item.id)
          item_max = $game_system.weapon_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Armor)
        if $game_system.armor_max_data.keys.include?(@item.id)
          item_max = $game_system.armor_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end

Con esto no me ha aparecido ningún bug.

También he hecho una pequeña adaptación para que los icons limitados aparezcan
en la ventana default de la tienda, ya que para este sistema yo creo que puede
ser fundamental que en una tienda aparezcan estos icons sobre los items
con limites de capacidad. Pero no voy a publicar el script en el
siguiente post por que el tema será muy extenso jejee.

Aquí lo encontrarán. http://www.mundo-maker.com/t13937-rmxp-new-items-display#103913
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 314

Gracias : 68

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-07-01, 01:15

La verdad es que los cambios que hiciste no estaban del todo correctos, aunque te doy las gracias por el esfuerzo; tu script me ayudó a entender qué fallaba. En tu última versión volvía al error de antes, de sumarlos dos veces en vez de solo una. Ahora ya sí que está.

Además en tu caso usas los límites distintos de los que había de 1, 10 y 100, he visto que usas 1 y 2, y el script puede adaptarse mejor para ese caso concreto así que le he hecho ese pequeño cambio, pongo ámbas versiones.

Versión 'Wecoc':
Código:
#==============================================================================
# ** [XP] Máximo individual para items, weapons y armors
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
# --- Versión Wecoc ---
# Para definir el máximo de un item:
#  $game_system.item_max_data[ID item] = max
#  $game_system.weapon_max_data[ID weapon] = max
#  $game_system.armor_max_data[ID armor] = max
#==============================================================================

#==============================================================================
# * Game_System
#==============================================================================

class Game_System
  attr_accessor :item_max_data
  attr_accessor :weapon_max_data
  attr_accessor :armor_max_data
  #----------------------------------------------------------------------------
  # * Initialize
  #----------------------------------------------------------------------------
  alias item_max_ini initialize unless $@
  def initialize
    item_max_ini
    # Definir máximo por defecto para cada item (ID item => máximo)
    @item_max_data  = {1 => 1, 2 => 1, 3 => 1, 6 => 10, 7 => 10, 8 => 10}
    @weapon_max_data = {}
    @armor_max_data  = {}
  end
  # Definir iconos (deja vacío "" si alguna de las opciones no usa gráfico)
  ITEM_ICON_1  = "icon_1"
  ITEM_ICON_10 = "icon_10"
  ITEM_ICON_99 = "icon_99"
 
  WEAPON_ICON_1  = "icon_1"
  WEAPON_ICON_10 = "icon_10"
  WEAPON_ICON_99 = "icon_99"
 
  ARMOR_ICON_1  = "icon_1"
  ARMOR_ICON_10 = "icon_10"
  ARMOR_ICON_99 = "icon_99"
end

#==============================================================================
# * Window_Item
#==============================================================================

class Window_Item < Window_Selectable
  #----------------------------------------------------------------------------
  # * Draw Item
  #----------------------------------------------------------------------------
  alias item_max_draw draw_item unless $@
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    item_max_draw(index)
    if item.is_a?(RPG::Item)
      if $game_system.item_max_data.keys.include?(item.id)
        case $game_system.item_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_1)  rescue nil
        when 10
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_99) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Weapon)
      if $game_system.weapon_max_data.keys.include?(item.id)
        case $game_system.weapon_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_1)  rescue nil
        when 10
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_99) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Armor)
      if $game_system.armor_max_data.keys.include?(item.id)
        case $game_system.armor_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_1)  rescue nil
        when 10
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_10) rescue nil
        when 99
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_99) rescue nil
        end
      end
    end
    return if bitmap.nil?
    self.contents.blt(x + 2, y + 4 + 2, bitmap, Rect.new(0, 0, 24, 24))
  end
end

#==============================================================================
# * Game_Party
#==============================================================================

class Game_Party
  unless $@
    alias force_gain_item  gain_item
    alias force_gain_weapon gain_weapon
    alias force_gain_armor  gain_armor
  end
  #----------------------------------------------------------------------------
  # * Gain Item
  #----------------------------------------------------------------------------
  def gain_item(item_id, n)
    if item_id > 0 and n > 0
      if $game_system.item_max_data.keys.include?(item_id)
        max = $game_system.item_max_data[item_id]
        @items[item_id] = [[item_number(item_id) + n, 0].max, max].min
        return
      end
    end
    force_gain_item(item_id, n)
  end
  #--------------------------------------------------------------------------
  # * Gain Weapon
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    if weapon_id > 0 and n > 0
      if $game_system.weapon_max_data.keys.include?(weapon_id)
        max = $game_system.weapon_max_data[weapon_id]
        @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, max].min
        return
      end
    end
    force_gain_weapon(weapon_id, n)
  end
  #--------------------------------------------------------------------------
  # * Gain Armor
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    if armor_id > 0 and n > 0
      if $game_system.armor_max_data.keys.include?(armor_id)
        max = $game_system.armor_max_data[armor_id]
        @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, max].min
        return
      end
    end
    force_gain_armor(armor_id, n)
  end
end

#==============================================================================
# * Scene_Shop
#==============================================================================

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  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
      @dummy_window.visible = true
      @buy_window.active = false
      @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
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        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
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Weapon)
        if $game_system.weapon_max_data.keys.include?(@item.id)
          item_max = $game_system.weapon_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Armor)
        if $game_system.armor_max_data.keys.include?(@item.id)
          item_max = $game_system.armor_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end

Versión 'AsFzKakarotto':
Código:
#==============================================================================
# ** [XP] Máximo individual para items, weapons y armors
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
# --- Versión AsFzKakarotto ---
# Para definir el máximo de un item:
#  $game_system.item_max_data[ID item] = max
#  $game_system.weapon_max_data[ID weapon] = max
#  $game_system.armor_max_data[ID armor] = max
#==============================================================================

#==============================================================================
# * Game_System
#==============================================================================

class Game_System
  attr_accessor :item_max_data
  attr_accessor :weapon_max_data
  attr_accessor :armor_max_data
  #----------------------------------------------------------------------------
  # * Initialize
  #----------------------------------------------------------------------------
  alias item_max_ini initialize unless $@
  def initialize
    item_max_ini
    # Definir máximo por defecto para cada item (ID item => máximo)
    @item_max_data  = {1 => 1, 2 => 1, 3 => 1, 6 => 2, 7 => 2, 8 => 2}
    @weapon_max_data = {1 => 1}
    @armor_max_data  = {1 => 2}
  end
  # Definir iconos (deja vacío "" si alguna de las opciones no usa gráfico)
  ITEM_ICON_1 = "icon_1"
  ITEM_ICON_2 = "icon_2"
 
  WEAPON_ICON_1 = "icon_1"
  WEAPON_ICON_2 = "icon_2"
 
  ARMOR_ICON_1 = "icon_1"
  ARMOR_ICON_2 = "icon_2"
end

#==============================================================================
# * Window_Item
#==============================================================================

class Window_Item < Window_Selectable
  #----------------------------------------------------------------------------
  # * Draw Item
  #----------------------------------------------------------------------------
  alias item_max_draw draw_item unless $@
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    item_max_draw(index)
    if item.is_a?(RPG::Item)
      if $game_system.item_max_data.keys.include?(item.id)
        case $game_system.item_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_1)  rescue nil
        when 2
          bitmap = RPG::Cache.icon(Game_System::ITEM_ICON_2) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Weapon)
      if $game_system.weapon_max_data.keys.include?(item.id)
        case $game_system.weapon_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_1)  rescue nil
        when 2
          bitmap = RPG::Cache.icon(Game_System::WEAPON_ICON_2) rescue nil
        end
      end
    end
    if item.is_a?(RPG::Armor)
      if $game_system.armor_max_data.keys.include?(item.id)
        case $game_system.armor_max_data[item.id]
        when 1
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_1)  rescue nil
        when 2
          bitmap = RPG::Cache.icon(Game_System::ARMOR_ICON_2) rescue nil
        end
      end
    end
    return if bitmap.nil?
    self.contents.blt(x + 2, y + 4 + 2, bitmap, Rect.new(0, 0, 24, 24))
  end
end

#==============================================================================
# * Game_Party
#==============================================================================

class Game_Party
  unless $@
    alias force_gain_item  gain_item
    alias force_gain_weapon gain_weapon
    alias force_gain_armor  gain_armor
  end
  #----------------------------------------------------------------------------
  # * Gain Item
  #----------------------------------------------------------------------------
  def gain_item(item_id, n)
    if item_id > 0 and n > 0
      if $game_system.item_max_data.keys.include?(item_id)
        max = $game_system.item_max_data[item_id]
        @items[item_id] = [[item_number(item_id) + n, 0].max, max].min
        return
      end
    end
    force_gain_item(item_id, n)
  end
  #--------------------------------------------------------------------------
  # * Gain Weapon
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    if weapon_id > 0 and n > 0
      if $game_system.weapon_max_data.keys.include?(weapon_id)
        max = $game_system.weapon_max_data[weapon_id]
        @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, max].min
        return
      end
    end
    force_gain_weapon(weapon_id, n)
  end
  #--------------------------------------------------------------------------
  # * Gain Armor
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    if armor_id > 0 and n > 0
      if $game_system.armor_max_data.keys.include?(armor_id)
        max = $game_system.armor_max_data[armor_id]
        @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, max].min
        return
      end
    end
    force_gain_armor(armor_id, n)
  end
end

#==============================================================================
# * Scene_Shop
#==============================================================================

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  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
      @dummy_window.visible = true
      @buy_window.active = false
      @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
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        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
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Weapon)
        if $game_system.weapon_max_data.keys.include?(@item.id)
          item_max = $game_system.weapon_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Armor)
        if $game_system.armor_max_data.keys.include?(@item.id)
          item_max = $game_system.armor_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end

No encuentres más bugs ;)
avatar
Wecoc
Administrador
Administrador



Créditos 12280

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.