¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [RPG Maker XP] Clasificar inventario el Sáb Abr 23, 2011 12:44 pm

D.A.C.

avatar
Script: Clasificar inventario
Autor: XRXS
Versión: X

Este script nos permitirá dividir la sección del inventario del menú en varios apartados personalizables (de forma predeterminada: objetos, armas, escudos, yelmos, armaduras y accesorios).

Código:
#======================================================
# Organizar Inventario
# Autor: XRXS
# Traducción: D.A.C.
#======================================================
# Este script permite que puedas organizar el inventario, separando los objetos
# por categorías.
# Para crear tu propio estilo de organización, debes editar el módulo
# XRXS_MP2_Fixed_Variable.
# Puedes definiar el nombre de cada categoría en "KIND_NAMES",
# y en "KIND_KINDS" puedes decidir el tipo de objeto que muestra cada categoría.
#======================================================

#======================================================
# XRXS_MP2_Fixed_Variable
#======================================================
module XRXS_MP2_Fixed_Variable
  #Definición de los nombres de las categorías de objetos del menú.
  KIND_NAMES = ["Objetos", "Armas", "Escudos ", "Yelmos", "Armaduras", "Accesorios"]
  # Tipos de objetos mostrados en cada categoría.
  KIND_KINDS = [0, 1, 3, 4, 5, 6]
  #nil = Todos los objetos.
  #0 = Objetos.
  #1 = Armas.
  #2 = Todos los equipamientos de defensa (Yelmos, escudos, armaduras y accesorios).
  #3 = Escudos.
  #4 = Yelmos.
  #5 = Armaduras.
  #6 = Accesorios.
  #7 = Objetos que no afectan a nadie.
  #8 = Objetos que solo pueden ser usados en la batalla.
  #9 = Objetos que solo pueden ser usados en el menú.
  #10= Objetos que no pueden ser usados.
  #11= Objetos que llaman a 'Eventos comunes'.
  #12= Objetos sin precio (0 monedas de coste).
  #13= Objetos que aumentan los atributos.
  #14= Objetos de curación.
  #15= Objetos con atributos elementales.
 
  # IMPORTANTE:
  # El orden en que defines la función "KIND_KINDS" debe ser el mismo que el
  # definido por "KIND_NAMES" o se producirán errores.
 
end

#======================================================
# Window_Item
#======================================================
class Window_Item < Window_Selectable
  #--------------------------------------------------------------------------
  include XRXS_MP2_Fixed_Variable
  #--------------------------------------------------------------------------
  alias xrxs_mp2_initialize initialize
  alias xrxs_mp2_refresh refresh
  #--------------------------------------------------------------------------
  def initialize
    xrxs_mp2_initialize
    if not $scene.is_a?(Scene_Battle)
      self.y += 64
      self.height -= 64
    end
    @itemkind = KIND_KINDS[0]
    refresh
  end
  #--------------------------------------------------------------------------
  def refresh
    if @itemkind == nil
      xrxs_mp2_refresh
      return
    end
      if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    @item_max = data_sdgs(@itemkind)
    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
  #--------------------------------------------------------------------------
  def set_itemkind_index(itemkind_index)
    @itemkind = KIND_KINDS[itemkind_index]
    refresh
  end
  #--------------------------------------------------------------------------
  def data_sdgs(itemkind)
    @data = []
    if $scene.is_a?(Scene_Battle)
      get_data(0, false)
    elsif itemkind.is_a?(Numeric) or itemkind.nil?
      get_data(itemkind, false)
    elsif itemkind.is_a?(Array)
      for i in 0...itemkind.size
        get_data(itemkind[i], false)
      end
    end
    return @data.size
  end
  #--------------------------------------------------------------------------
  def get_data(itemkind, refresh = false)
    case itemkind
    when nil
      set_own_item_data
      set_own_weapon_data
      set_own_armor_data
    when 0
      set_own_item_data
    when 1
      set_own_weapon_data
    when 2
      set_own_armor_data
    when 3
      set_own_armor_shield_data
    when 4
      set_own_armor_helm_data
    when 5
      set_own_armor_mail_data
    when 6
      set_own_armor_accessory_data
    when 7
      set_own_item_noscope_data
    when 8
      set_own_item_battleonly_data
    when 9
      set_own_item_menuonly_data
    when 10
      set_own_item_unusable_data
    when 11
      set_own_item_commonevent_data
    when 12
      set_own_item_zeroprice_data
    when 13
      set_own_item_parameterup_data
    when 14
      set_own_item_recovers_data
    when 15
      set_own_item_elements_data
    when -3
      last_data = @data.dup
      @data.clear
      set_own_armor_shield_data
      @data = last_data - @data
    when -4
      last_data = @data.dup
      @data.clear
      set_own_armor_helm_data
      @data = last_data - @data
    when -5
      last_data = @data.dup
      @data.clear
      set_own_armor_mail_data
      @data = last_data - @data
    when -6
      last_data = @data.dup
      @data.clear
      set_own_armor_accessory_data
      @data = last_data - @data
    when -7
      last_data = @data.dup
      @data.clear
      set_own_item_noscope_data
      @data = last_data - @data
    when -8
      last_data = @data.dup
      @data.clear
      set_own_item_battleonly_data
      @data = last_data - @data
    when -9
      last_data = @data.dup
      @data.clear
      set_own_item_menuonly_data
      @data = last_data - @data
    when -10
      last_data = @data.dup
      @data.clear
      set_own_item_unusable_data
      @data = last_data - @data
    when -11
      last_data = @data.dup
      @data.clear
      set_own_item_commonevent_data
      @data = last_data - @data
    when -12
      last_data = @data.dup
      @data.clear
      set_own_item_zeroprice_data
      @data = last_data - @data
    when -13
      last_data = @data.dup
      @data.clear
      set_own_item_parameterup_data
      @data = last_data - @data
    when -14
      last_data = @data.dup
      @data.clear
      set_own_item_recovers_data
      @data = last_data - @data
    when -15
      last_data = @data.dup
      @data.clear
      set_own_item_elements_data
      @data = last_data - @data
    else
      if refresh
        xrxs_mp2_refresh
      else
        @data = []
      end
    end
    return
  end
  #--------------------------------------------------------------------------
  def set_own_item_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_weapon_data
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0
        @data.push($data_weapons[i])
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_armor_data
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        @data.push($data_armors[i])
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_armor_shield_data
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        if $data_armors[i].kind == 0 and !@data.include?($data_armors[i])
          @data.push($data_armors[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_armor_helm_data
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        if $data_armors[i].kind == 1 and !@data.include?($data_armors[i])
          @data.push($data_armors[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_armor_mail_data
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        if $data_armors[i].kind == 2 and !@data.include?($data_armors[i])
          @data.push($data_armors[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_armor_accessory_data
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        if $data_armors[i].kind == 3 and !@data.include?($data_armors[i])
          @data.push($data_armors[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_noscope_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].scope == 0 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_battleonly_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].occasion == 1 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_menuonly_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].occasion == 2 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_unusable_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].occasion == 3 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_commonevent_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].common_event_id > 0 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_zeroprice_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].price == 0 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_parameterup_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].parameter_type > 0 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def set_own_item_recovers_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if ($data_items[i].recover_hp_rate > 0 or
          $data_items[i].recover_hp > 0 or
          $data_items[i].recover_sp_rate > 0 or
          $data_items[i].recover_sp > 0 or
          $data_items[i].minus_state_set.size > 0) and
          !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end

  end
  #--------------------------------------------------------------------------
  def set_own_item_elements_data
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].element_set.size > 0 and !@data.include?($data_items[i])
          @data.push($data_items[i])
        end
      end
    end
  end
end

#======================================================
# Window_Itemkind
#======================================================
class Window_Itemkind < Window_Selectable
  #--------------------------------------------------------------------------
  include XRXS_MP2_Fixed_Variable
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @commands = KIND_NAMES
    @item_max = KIND_NAMES.size
    @column_max = KIND_NAMES.size
    @disabled = []
    for i in 0...@item_max
      @disabled[i] = false
    end
    self.active = true
    self.index = 0
    refresh
  end
  #--------------------------------------------------------------------------
  def disable(index)
    @disabled[index] = true
    refresh
  end
  #--------------------------------------------------------------------------
  def disabled?(index)
    return @disabled[index]
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...KIND_NAMES.size
      draw_item(i, (@disabled[i] ? disabled_color : normal_color))
    end
  end
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = color
    x = 304 + (index - KIND_NAMES.size/2.0) * 600/KIND_NAMES.size
    rect = Rect.new(x, 0, 600/KIND_NAMES.size, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[index], 1)
  end
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if index != -1
      return unless self.active
      x = 304 + (index - KIND_NAMES.size/2.0) * 600/KIND_NAMES.size
      self.cursor_rect.set(x, 0, 600/KIND_NAMES.size, 32)
      update_help
    end
  end
  #--------------------------------------------------------------------------
  def update_help
    return if @help_window.nil?
    @help_window.set_text(KIND_NAMES[self.index] + " - Seleccione el objeto deseado.")
  end
end

#======================================================
# Scene_Item
#======================================================
class Scene_Item
  #--------------------------------------------------------------------------
  include XRXS_MP2_Fixed_Variable
  #--------------------------------------------------------------------------
  alias xrxs_mp2_update update
  alias xrxs_mp2_update_item update_item
  #--------------------------------------------------------------------------
  def main
    @help_window = Window_Help.new
    @item_window = Window_Item.new
    @kind_window = Window_Itemkind.new
    @item_window.help_window = @help_window
    @kind_window.help_window = @help_window
    for i in 0...KIND_NAMES.size
      @kind_window.disable(i) if @item_window.data_sdgs(KIND_KINDS[i]) == 0
    end
    @target_window = Window_Target.new
    @target_window.visible = false
    @target_window.active = false
    @kind_window.active = true
    @item_window.active = false
    @item_window.index = -1
    @now_itemkind = nil
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @item_window.dispose
    @target_window.dispose   
    @kind_window.dispose
  end
  #--------------------------------------------------------------------------
  def update
    xrxs_mp2_update
    if @now_itemkind != @kind_window.index
      @item_window.set_itemkind_index(@kind_window.index)
      @now_itemkind = @kind_window.index
    end
    @kind_window.update
    if @kind_window.active
      update_kind
      return
    end
  end
  #--------------------------------------------------------------------------
  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @kind_window.active = true
      @item_window.active = false
      @item_window.index = -1
      Input.update
      return
    end
    xrxs_mp2_update_item
  end
  #--------------------------------------------------------------------------
  def update_kind
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(0)
      return
    end
    if Input.trigger?(Input::C)
      if @kind_window.disabled?(@kind_window.index)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @item_window.active = true
      @item_window.index = 0
      @kind_window.active = false
      return
    end
  end
end

Instrucciones:

  1. Copiar el script encima de 'Main'.
  2. Para definir los nombres de las categorías de objetos del menú, ve a la línea 19 del script y edítala (KIND_NAMES).
  3. Para escoger qué clase de objetos quieres en dichas categorías, ve a la línea 21 del script y edítala (KIND_KINDS).


Imágenes:




Si quieres verlo, haz click aquí.

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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