Maker Palace

¡El Reino del RpgMaker y del Ocio!
 
ÍndiceBuscarGrupos de UsuariosScriptsRecursosTutorialesPalaceJuegosPalaceWikiFAQRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Temas similares
Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Últimos temas
» Dando una vuelta por acá
por LinkLuis55 Ayer a las 2:56 pm

» Heroes del Crimen 2 DEMO
por jasuso Mar Ago 01, 2017 12:04 am

» The Legend of Celestia II: A World of Twilight Shadows Demo
por Jlopez_96 Vie Jul 28, 2017 6:20 pm

» Screenshot del nuevo KUnits XP oon menú
por kyonides-arkanthos Sáb Jul 15, 2017 1:14 am

» The Legend of Celestia: Four Cristals
por Jlopez_96 Mar Abr 25, 2017 4:59 pm

» [VXAce] Burando Doragon
por gantzer49 Dom Abr 23, 2017 7:43 pm

» Que se cuece por estos lares?
por Frikilangelo Jue Mar 23, 2017 8:10 am

Recomendados
RPG en RPG Maker
La importancia de un Backup
Que requiere un sistema de Batalla para ser exitoso
9 Minutos de Juegos por fans
Guía de Subforos para Tontos de Maker Palace
Indice de Scripts Locales XP
Falcao Pearl ABS Liquid
¿Quién está en línea?
En total hay 10 usuarios en línea: 0 Registrados, 0 Ocultos y 10 Invitados :: 1 Motor de búsqueda

Ninguno

La mayor cantidad de usuarios en línea fue 179 el Mar Ago 30, 2011 10:06 pm.
MiniChat
Mejores posteadores
Raiden (3346)
 
DaviX (2740)
 
Frikilangelo (2461)
 
SagahonArturo (1806)
 
Falcao (1775)
 
kyonides-arkanthos (1766)
 
Mur-mai-der (1755)
 
Ares (1613)
 
LinkLuis55 (1556)
 
Webmaster24 (1354)
 
Afiliados
Crear foro Mundo Maker Foro de anime y RM2k3/XP/VX Computer mix
Flag Counter
free counters
Visitas


Comparte | 
 

 [Ayuda] Categorias Item Menu.

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
ripher
Escudero Maker
Escudero Maker


Cantidad de envíos : 40
Miembro desde : 09/08/2010
Localización : Chile
Sexo : Masculino

Maker : RMXP


MensajeTema: [Ayuda] Categorias Item Menu.   Jue Dic 27, 2012 2:37 am

Hola,

Necesito combinar dos sistemas de categoria de objetos,
darle la apariencia de uno, al sistema del otro.
y arreglar algunas cosas.

Script 1:
Código:
#==============================================================================#
#
#                        Categorías de Objetos (2012)
#
#==============================================================================#

#    Este Script muestra una modificacion del Menu de items
#  el cual reordena los objetos en categorias totalmente editables

# Creditos: Northro
#          Ripher
#
#==============================================================================#
module Northro
  module CategorizeItems
    Vocab = ["Usar", "Ver Descripción", "Atras"]
   
#==============================================================================#
#
# Aquí se edita la descripción de cada categoría 
#
#==============================================================================#   
    Description = { 
"Todo" => "Lista de todos los Objetos obtenidos",   
"Objetos" => "Objetos Comunes y útiles",
"Pócimas" => "Pociones consumibles de todo tipo",
"Textos" => "Libros, notas, documentos, pergaminos",
"Claves" => "Llaves, Pistas, Claves, etc",
"Raresas" => "Objetos extraños, raros y misteriosos",
"Procesos" => "Para combinar ingredientes en Alquimia",
"Herbologia" => "Recursos vegetales",
"Sustancias" => "Derivados Vegetales",
"Materiales" => "Extraidos de bestias",
"Deribados" => "Procesados de los Materiales",
"Pesca"   => "Utencilios y cosas de pesca",
"Alimento" => "Elementos para consumir",
"Mineria" => "Metales, piedras, gemas",
"Reliquias" => "Joyas, Tesoros, Talismanes",
"Trofeos" => "Premios del Gremio",
"Arrojadizas" => "Armas que se lanzan y causan daño",
"Armas" => "Armamento portable y equipable",
"Escudos" => "Elemento para la defenza",
"Cascos" => "Cascos, Gorras, Sombreros",
"Armaduras" => "Protectores para el cuerpo",
"Accesorios" => "Accesorios que dan ciertas utilidades",
"Equipo" => "Todo el equipo poseido",
"Todo" => "Todo objeto, elemento y armamento"
}

#==============================================================================#
#
# Define que objetos (por id) entran en la categoría.   
#
#==============================================================================#
    Categories = {
 
"Todo" => [],   
"Objetos" => (11..20).to_a + [10, 49, 47],
"Pócimas" => (441..466).to_a + (468..511).to_a + (514..543).to_a, 
"Textos" => (581..620).to_a + [17, 18, 19],
"Claves"   => [45, 46],
"Raresas" => [],
"Procesos" => (20..38).to_a,
"Herbologia" => [49] + (51..66).to_a + (68..94).to_a + (96..108).to_a,
"Sustancias" => (111..159).to_a,
"Materiales" => (161..268).to_a,
"Deribados"   => (271..314).to_a,
"Pesca" => [47] + (321..344).to_a,
"Alimento" => (351..371).to_a,
"Mineria"   => (631..655).to_a,
"Reliquias" => (600..630).to_a,
"Trofeos"   => (570..580).to_a,
"Arrojadizas"   => (545..569).to_a,
"Armas"   => [:weapons],
"Escudos"   => [:shields],
"Cascos" => [:helmets],
"Armaduras"   => [:body_armors],
"Accesorios" => [:accessories],
"Equipo" => [:shields, :helmets, :body_armors, :accessories],
"Todo" => [:all]
    }
   
#==============================================================================#
#
# Orden de aparición en el menu 
#
#==============================================================================#   
    Order = {
1 => "Todo",
2   => "Objetos",
3   => "Pócimas",
4   => "Textos",
5   => "Claves",
6   => "Raresas",
7   => "Procesos",
8   => "Herbologia",
9   => "Sustancias",
10   => "Materiales",
11   => "Deribados",
12   => "Pesca",
13   => "Alimento",
14   => "Mineria",
15   => "Reliquias",
16   => "Trofeos",
17   => "Arrojadizas",
18   => "Armas",
19   => "Escudos",
20   => "Cascos",
21   => "Armaduras",
22   => "Accesorios",
23   => "Equipo",
24   => "Todo"
    }

#==============================================================================#
#
# Descripcion Extensa de cada objeto arma y protector. 
#
#==============================================================================#
    ItemDescription = {
   
    1 => ["Esta poción te cura",
        "500 de PV",
        "aúnque no la puedas combinar con nada",
        "es muy buena para batallas complicadas.",
        "", "",
        "Presiona la tecla de abajo para seguir viendo la descripción",
        "", "", "", "", "", "",
        "Que buen sistema no crees?",
        "", "", "", "", ""],
    2 => ["Poción muy buena pero", "necesitas ser inteligente para usarla."],
    3 => [""]

}

    WeaponDescription = {
    1 => [
        "Esta arma es la más básica",
        "para los guerreros que nos iniciamos",
        "en la batalla de la arena.",
        "", "", "",
        "Presiona la tecla de abajo para seguir viendo la descripción",
        "", "", "", "", "", "",
        "Que buen sistema no crees?",
        "", "", "", "", ""],
    2 => [
        "Arma buena para",
        "cuando ya abandones la arena y vallas a la",
        "guerra."],
    3 => [""]
    }

    ArmorDescription = {
    1 => [
        "Esta escudo es el más básico",
        "para los guerreros que nos iniciamos",
        "en la batalla de la arena.",
        "", "", "",
        "Presiona la tecla de abajo para seguir viendo la descripción",
        "", "", "", "", "", "",
        "Que buen sistema no crees?",
        "", "", "", "", ""],
    2 => [
        "Escudo bueno para",
        "cuando ya abandones la arena y vallas a la",
        "guerra."],
    3 => [""]
    }
 
#==============================================================================#
#
#==============================================================================#
#
#                          Configuracion Avanzada
#
#==============================================================================#
    CursorSpeed = 40  # Velocidad en la que baja el cursor
    MaxCategory = 4  # Número máximo de categorias en la pantalla del menu
    BackOpacity = 160 # Opacidad de las ventanas.
    FogName = "Fondo" # Nombre de la fog que usaremos. colocada en carpeta fogs.
    FogOx = 1.5      # Velocidad en que se va a mover la fog en el eje "X".
    FogOy = 1.0      # Velocidad en que se va a mover la fog en el eje "Y".
  end
end

#==============================================================================#
#                            FIN DE EDICION
#==============================================================================#


class Scene_Item
  def main
    @fog = Plane.new(Viewport.new(0, 0, 640, 480))
    @fog.z = 50
    @fog.bitmap = RPG::Cache.fog(Northro::CategorizeItems::FogName, 0)
    commands = []
    for i in Northro::CategorizeItems::Order.keys.sort
      commands.push(Northro::CategorizeItems::Order[i])
    end
    max_category = Northro::CategorizeItems::MaxCategory
    @category_window = Window_Category.new(commands, max_category)
    @category_window.y = 64
    @options_window = Window_ItemOptions.new(Northro::CategorizeItems::Vocab)
    @description_window = Window_ItemDescription.new(0, 128, 640, 352)
    @description_window.visible = false
    @help_window = Window_Help.new
    @help_window.back_opacity = Northro::CategorizeItems::BackOpacity
    @item_window = Window_CategorizeItem.new
    @category_window.help_window = @help_window
    @target_window = Window_Target.new
    @target_window.back_opacity = Northro::CategorizeItems::BackOpacity
    @options_window.visible = @target_window.visible = false
    @options_window.active = @item_window.active = @target_window.active = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @fog.dispose
    @category_window.dispose
    @options_window.dispose
    @description_window.dispose
    @help_window.dispose
    @item_window.dispose
    @target_window.dispose
  end
 
  def update
    @fog.ox += Northro::CategorizeItems::FogOx
    @fog.oy += Northro::CategorizeItems::FogOy
    @category_window.update
    @options_window.update
    @description_window.update
    @help_window.update
    @item_window.update
    @target_window.update
    if @category_window.active
      update_category
    elsif @options_window.active
      update_options
    elsif @description_window.active
      update_description
    elsif @item_window.active
      update_item
    elsif @target_window.active
      update_target
    end
  end
 
  def update_category
    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)
      $game_system.se_play($data_system.decision_se)
      @item_window.refresh(@category_window.items)
      @item_window.active, @category_window.active = true, false
    end
  end
 
  def update_options
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @options_window.visible = @options_window.active = false
      @options_window.index = 0
      @item_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      case @options_window.index
      when 0
        @item = @item_window.item
        unless @item.is_a?(RPG::Item)
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        unless $game_party.item_can_use?(@item.id)
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        if @item.scope >= 3
          @options_window.active = @options_window.visible = false
          @target_window.x = (@item_window.index + 1) % 2 * 304
          @target_window.visible = true
          @target_window.active = true
          if @item.scope == 4 || @item.scope == 6
            @target_window.index = -1
          else
            @target_window.index = 0
          end
        else
          if @item.common_event_id > 0
            $game_temp.common_event_id = @item.common_event_id
            $game_system.se_play(@item.menu_se)
            if @item.consumable
              $game_party.lose_item(@item.id, 1)
              @item_window.draw_item(@item_window.index)
            end
            $scene = Scene_Map.new
            return
          end
        end
        return
      when 1
        $game_system.se_play($data_system.decision_se)
        @description_window.active = @description_window.visible = true
        @options_window.visible = @options_window.active = false
        @item_window.visible = false
        case @item_window.item
        when RPG::Item ; kind = 0
        when RPG::Weapon ; kind = 1
        when RPG::Armor ; kind = 2
        end
        @description_window.refresh(kind, @item_window.item.id)
        @help_window.set_item(@item_window.item, 1)
      when 2
        $game_system.se_play($data_system.decision_se)
        @options_window.visible = @options_window.active = false
        @item_window.active = true
      end
      @options_window.index = 0
    end
  end
 
  def update_description
    proc = Proc.new {
    @description_window.active = @description_window.visible = false
    @options_window.visible = @options_window.active = true
    @item_window.visible = true
    @options_window.index = 1
    @description_window.refresh
    @category_window.update_help
    }
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      proc.call
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      proc.call
    end
  end
 
  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @item_window.active, @category_window.active = false, true
      @item_window.refresh
      @item_window.index = 0
      return
    end
    if Input.trigger?(Input::C)
      if @item_window.item.nil?
        $game_system.se_play($data_system.cancel_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @options_window.visible = true
      @options_window.active, @item_window.active = true, false
    end
  end
 
  def update_target
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      unless $game_party.item_can_use?(@item.id)
        @item_window.refresh
      end
      @options_window.active = @options_window.visible = true
      @target_window.visible = false
      @target_window.active = false
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.item_number(@item.id) == 0
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if @target_window.index == -1
        used = false
        for i in $game_party.actors
          used |= i.item_effect(@item)
        end
      end
      if @target_window.index >= 0
        target = $game_party.actors[@target_window.index]
        used = target.item_effect(@item)
      end
      if used
        $game_system.se_play(@item.menu_se)
        if @item.consumable
          $game_party.lose_item(@item.id, 1)
          @item_window.draw_item(@item_window.index)
        end
        @target_window.refresh
        if $game_party.all_dead?
          $scene = Scene_Gameover.new
          return
        end
        if @item.common_event_id > 0
          $game_temp.common_event_id = @item.common_event_id
          $scene = Scene_Map.new
          return
        end
      end
      unless used
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
end

class Window_Category < Window_Selectable
  include(Northro::CategorizeItems)
  WLH = 5
 
  def initialize(commands, max_category)
    super(0, 0, 640, 64)
    @max_category = max_category
    @command_size = ((width - 32) - ((max_category - 1) * WLH)) / max_category
    h = @command_size * commands.size + (commands.size * WLH)
    @item_max = commands.size
    @commands = commands
    @column_max = @item_max
    self.contents = Bitmap.new(h, height - 32)
    self.back_opacity = BackOpacity
    refresh
    self.index = 0
  end
 
  def command
    return @commands[self.index]
  end
 
  def items
    return Categories[command]
  end
 
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
 
  def draw_item(index, color)
    self.contents.font.color = color
    rect_x = @command_size * index + (WLH * index)
    rect = Rect.new(rect_x, 4, @command_size, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    b = Bitmap.new(1, 1)
    w = b.text_size(@commands[index]).width
    rect.x += (@command_size / 2) - (w / 2)
    self.contents.draw_text(rect, @commands[index])
  end
 
  def disable_item(index)
    draw_item(index, disabled_color)
  end
 
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
      return
    end
    if @index <= @max_category
      row = @index / @max_category
    else
      row = @index - (@max_category - 1)
    end
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = @command_size
    x = @index % @column_max * (cursor_width + WLH) - self.ox
    y = @index / @column_max * WLH - self.oy
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
 
  def update_help
   
#    @help_window.dispose # 3 lineas agregadas
#    @item_window.dispose #
#    @target_window.dispose #

    @help_window.set_text(Description[command])
  end
 
  def row_max
    return @column_max
  end
 
  def top_row
    return (self.ox / @command_size) + WLH
  end
 
  def top_row=(row)
    if row < 0
      row = 0
    end
    if row > row_max - 1
      row = row_max - 1
    end
    self.ox = (row * @command_size) + (WLH * row)
  end
 
  def page_row_max
    return 1
  end
end

class Window_ItemOptions < Window_Selectable
  WLH = 32
 
  def initialize(commands)
    command_size = 0
    @command_size = 0
    b = Bitmap.new(1, 1)
    for command in commands
      command_size = b.text_size(command).width
      @command_size = command_size if command_size > @command_size
    end
    @command_size += 10
    super(100, 200, @command_size * commands.size + (commands.size * WLH), 64)
    @item_max = commands.size
    @commands = commands
    @column_max = @item_max
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = Northro::CategorizeItems::BackOpacity
    refresh
    self.index = 0
    self.z += 999
    self.x = 320 - self.width / 2
  end
 
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
 
  def draw_item(index, color)
    self.contents.font.color = color
    rect_x = @command_size * index + (WLH * index)
    rect = Rect.new(rect_x, 4, @command_size, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    b = Bitmap.new(1, 1)
    w = b.text_size(@commands[index]).width
    rect.x += (@command_size / 2) - (w / 2)
    self.contents.draw_text(rect, @commands[index])
  end
 
  def disable_item(index)
    draw_item(index, disabled_color)
  end
 
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
      return
    end
    row = @index / @column_max
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = self.width / @column_max - WLH
    x = @index % @column_max * (cursor_width + WLH)
    y = @index / @column_max * WLH - self.oy
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
end

class Window_CategorizeItem < Window_Selectable
  def initialize(column_max = 2)
    super(0, 128, 640, 352)
    @column_max = column_max
    refresh
    self.back_opacity = Northro::CategorizeItems::BackOpacity
    self.index = 0
  end
 
  def item
    return @data[self.index]
  end
 
  def refresh(items = [])
    self.oy = 0
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for item in items
      if item == :all
        for i in 1...$data_items.size
          if $game_party.item_number(i) > 0
            @data.push($data_items[i])
          end
        end
        for i in 1...$data_weapons.size
          if $game_party.weapon_number(i) > 0
            @data.push($data_weapons[i])
          end
        end
        for i in 1...$data_armors.size
          if $game_party.armor_number(i) > 0
            @data.push($data_armors[i])
          end
        end
      elsif item == :weapons
        for i in 1...$data_weapons.size
          if $game_party.weapon_number(i) > 0
            @data.push($data_weapons[i])
          end
        end
      elsif item == :shields
        for i in 1...$data_armors.size
          if $game_party.armor_number(i) > 0 and $data_armors[i].kind == 0
            @data.push($data_armors[i])
          end
        end
      elsif item == :helmets
        for i in 1...$data_armors.size
          if $game_party.armor_number(i) > 0 and $data_armors[i].kind == 1
            @data.push($data_armors[i])
          end
        end
      elsif item == :body_armors
        for i in 1...$data_armors.size
          if $game_party.armor_number(i) > 0 and $data_armors[i].kind == 2
            @data.push($data_armors[i])
          end
        end
      elsif item == :accessories
        for i in 1...$data_armors.size
          if $game_party.armor_number(i) > 0 and $data_armors[i].kind == 3
            @data.push($data_armors[i])
          end
        end
      else
        if $game_party.item_number(item) > 0
          @data.push($data_items[item])
        end
      end
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      (0...@item_max).each {|i| draw_item(i)}
    end
  end
 
  def draw_item(index)
    item = @data[index]
    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) and $game_party.item_can_use?(item.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 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 + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
 
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end

class Window_ItemDescription < Window_Base
  include(Northro::CategorizeItems)
  attr_accessor :active
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @active = false
    @item_id = 0
    self.back_opacity = Northro::CategorizeItems::BackOpacity
    refresh
  end
  def descriptions
    case @kind
    when 0 ; return @item_id.nil? ? [""] : ItemDescription[@item_id]
    when 1 ; return @item_id.nil? ? [""] : WeaponDescription[@item_id]
    when 2 ; return @item_id.nil? ? [""] : ArmorDescription[@item_id]
    end
  end
  def refresh(kind = nil, item_id = nil)
    self.oy = 0
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    return if kind.nil? and item_id.nil?
    @kind = kind
    @item_id = item_id
    if not descriptions.nil? and descriptions.size > 0
      index = 0
      self.contents = Bitmap.new(width - 32, descriptions.size * 32)
      for description in descriptions
        draw_item(index, description)
        index += 1
      end
    end
  end
  def draw_item(index, description, color = normal_color)
    self.contents.font.color = color
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, description)
  end
  def update
    if @active
      if not descriptions.nil? and (descriptions.size * 32) > self.height - 32
        if Input.repeat?(Input::UP)
          $game_system.se_play($data_system.cursor_se) if self.oy > 0
          self.oy = [self.oy - CursorSpeed, 0].max
        elsif Input.repeat?(Input::DOWN)
          if self.oy < (descriptions.size * 32) - (height - 32)
            $game_system.se_play($data_system.cursor_se)
          end
          s = CursorSpeed
          self.oy = [self.oy + s, (descriptions.size * 32) - (height - 32)].min
        end
      end
    end
  end
end
class Window_Help < Window_Base
  def set_item(item, align = 0)
    if item != @item or align != @align
      self.contents.clear
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.blt(self.width - 60, 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, item.name, align)
      @item = item
      @align = align
      @actor = nil
      @text = nil
    end
    self.visible = true
  end
end

Correcciones:
1-Actualizar descripcion resumida cuando se entra en categorias
2-Mostrar Items en la pool antes de seleccionar Categoria
3-Reiniciar cursor al salir de categoria
4-En opciones: -usar
-ver descripcion (acabada)
-atras (cambiar por botar objeto) si/no
5-Visual: -Ver descripcion:
1ra linea: Icono+Nombre+descripcion resumida
2da linea: Borrar Categorias
3ra linea: Descripcion acabada
4ta linea: Parametros, pv, pm, estados(icono), valor.

-Agregar icono a categoria como el 2do Script:
Al estilo Categorized de Albertfish

-Agregar colores distintos a los nombres de objetos importantes


*A continuación postiaré el 2do Script, demaciado largo.
Volver arriba Ir abajo
Ver perfil de usuario
ripher
Escudero Maker
Escudero Maker


Cantidad de envíos : 40
Miembro desde : 09/08/2010
Localización : Chile
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: [Ayuda] Categorias Item Menu.   Jue Dic 27, 2012 2:39 am

El 2do es el de Categorias por albertfish
Código:
   
    module CIM_Config
      # If this value is true the category icons will be displayed in a
      # separate window. If you set it to false, the icons will be displayed
      # in the category title bar.
      # Default value: true
      CATEGORIES_WINDOW = true
   
      # This value determines if there is a recent items category.
      # Default value: true
      RECENT_ITEMS = true
   
      # This value determines if there is a consumable items category.
      # Default value: true
      CONSUME_ITEMS = true
   
      # This value determines if there is equipment categories.
      # Default value: true
      EQUIPMENT = true
   
      # This value determines if the equipment is displayed as a single
      # category.
      # Default value: false
      SINGLE_EQUIPMENT_CATEGORY = false
   
      # This value determines if there is a raw materials category.
      # Default value: true
      RAW_MATERIALS = true
   
      # This value determines if there is a quest items category.
      # Default value: true
      QUEST_ITEMS = true
   
      # This value determines if there is a all items category.
      # Default value: true
      ALL_ITEMS = true
   
      # This values determines where the all items category will be.
      # 1 is the very first position, 2 the second, and so on.
      # Warning! If this number is larger than the number of categories
      # then it will cause an error.
      # For example, if there are 5 categories and the number is set to 7
      # an error will occur.
      # Default Value: 2
      ALL_ITEMS_POSITION = 2
   
      # This value determines if the unhighlighted category icons are translucent
      # or opaque.
      # Default value: true
      UNSELECTED_TRANSLUCENT = true
   
      # This value determines if there is a selection cursor for the category
      # window.
      # Default Value: true
      CATEGORY_CURSOR = true
   
      # This is where you set the category title alignment.
      #  0 = Left
      #  1 = Center
      #  2 = Right
      # Default value: 1
      TITLE_ALIGNMENT = 1
   
      # This is where you set how the icon in the help window is displayed.
      #  0 = Not displayd
      #  1 = Normal Size
      #  2 = Double Size
      # Default value: 2
      ICON_DISPLAY = 2
   
      # Set the menu item icons. These must be size 24px by 24px.
      # The icons must be placed in the icons folder in the games directory
      # and the file name of the icons must be placed between the quotation
      # marks.
      I_RECENT = "032-Item01"
      I_CONSUME = "021-Potion01"
      I_WEAPONS = "001-Weapon01"
      I_BODY = "013-Body01"
      I_HEAD = "010-Head01"
      I_ARM = "009-Shield01"
      I_ACCESSORY = "017-Accessory02"
      I_RAW = "043-Item12"
      I_QUEST = "035-Item04"
      I_ALL = "034-Item03"
      # This next one is used when you group the different equipment into
      # one category.
      I_EQUIPMENT = "009-Shield01"
   
      # Set the menu item text. This is the text that will display at the bottom
      # informing the player what each category is.
      T_RECENT = "Objetos recientes"
      T_CONSUME = "Pocion"
      T_WEAPONS = "Armas"
      T_BODY = "Armadura Equipo"
      T_HEAD = "Casco Equipo"
      T_ARM = "Escudos"
      T_ACCESSORY = "Accesorios"
      T_RAW = "Material"
      T_QUEST = "Objetos quest"
      T_ALL = "Todos objetos"
      # This next one is used when you group the different equipment into
      # one category.
      T_EQUIPMENT = "Equipo"

      #============================================================================
      #  End Editable Area.
      #----------------------------------------------------------------------------
      #  Warning! Do not edit beyond this point unless you know what you are doing!
      #============================================================================
      ITEMS_MENU_ICONS = []
      ITEMS_MENU_TEXT = []
      ITEM_ID = []
   
      # Add recent items category
      if RECENT_ITEMS
        ITEMS_MENU_TEXT.push(T_RECENT)
        ITEMS_MENU_ICONS.push(I_RECENT)
        ITEM_ID.push("Recent")
      end
      # Add consumable items category
      if CONSUME_ITEMS
        ITEMS_MENU_TEXT.push(T_CONSUME)
        ITEMS_MENU_ICONS.push(I_CONSUME)
        ITEM_ID.push("Consume")
      end
      # Add equipment category(s)
      if SINGLE_EQUIPMENT_CATEGORY && EQUIPMENT
        ITEMS_MENU_TEXT.push(T_EQUIPMENT)
        ITEMS_MENU_ICONS.push(I_EQUIPMENT)
        ITEM_ID.push("Equip")
      elsif EQUIPMENT
        ITEMS_MENU_TEXT.push(T_WEAPONS)
        ITEMS_MENU_ICONS.push(I_WEAPONS)
        ITEM_ID.push("Weapon")
        ITEMS_MENU_TEXT.push(T_BODY)
        ITEMS_MENU_ICONS.push(I_BODY)
        ITEM_ID.push("Body")
        ITEMS_MENU_TEXT.push(T_HEAD)
        ITEMS_MENU_ICONS.push(I_HEAD)
        ITEM_ID.push("Head")
        ITEMS_MENU_TEXT.push(T_ARM)
        ITEMS_MENU_ICONS.push(I_ARM)
        ITEM_ID.push("Arm")
        ITEMS_MENU_TEXT.push(T_ACCESSORY)
        ITEMS_MENU_ICONS.push(I_ACCESSORY)
        ITEM_ID.push("Accessory")
      end
      # Add raw materials category
      if RAW_MATERIALS
        ITEMS_MENU_TEXT.push(T_RAW)
        ITEMS_MENU_ICONS.push(I_RAW)
        ITEM_ID.push("Raw")
      end
      # Add quest items category
      if QUEST_ITEMS
        ITEMS_MENU_TEXT.push(T_QUEST)
        ITEMS_MENU_ICONS.push(I_QUEST)
        ITEM_ID.push("Quest")
      end
      # Add all items category
      if QUEST_ITEMS
        ITEMS_MENU_TEXT.insert(ALL_ITEMS_POSITION - 1, T_ALL)
        ITEMS_MENU_ICONS.insert(ALL_ITEMS_POSITION - 1, I_ALL)
        ITEM_ID.insert(ALL_ITEMS_POSITION - 1, "All")
      end
    end

    #==============================================================================
    # ** Window_Blank
    #------------------------------------------------------------------------------
    #  This window deals with blank window backgrounds.
    #==============================================================================

    class Window_Blank < Window_Base
      #--------------------------------------------------------------------------
      # * Object Initialization
      #    x        : window x coordinate
      #    y        : window y coordinate
      #    width    : window width
      #    height  : window height
      #--------------------------------------------------------------------------
      def initialize(x, y, width, height)
        super(x, y, width, height)
      end
    end

    #==============================================================================
    # ** Window_Category
    #------------------------------------------------------------------------------
    #  This window deals with item category command choices.
    #==============================================================================

    class Window_Category < Window_Selectable
      #--------------------------------------------------------------------------
      # * include the CMS_Config module
      #--------------------------------------------------------------------------
      include CIM_Config
   
      #--------------------------------------------------------------------------
      # * Object Initialization
      #    width    : window width
      #    commands : command text string array
      #--------------------------------------------------------------------------
      def initialize(width, commands)
        # Compute window height from command quantity
        cw = 32 + ITEMS_MENU_TEXT.size * 32
        super(640 - cw, 0, cw, 64)
        @column_max = ITEMS_MENU_TEXT.size
        @item_max = ITEMS_MENU_TEXT.size
        @commands = commands
        @select = 0
        self.contents = Bitmap.new(cw - 32, height - 32)
        refresh
        self.index = 0
        self.opacity = 0 unless CATEGORIES_WINDOW
      end
      #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      def refresh
        self.contents.clear
        for i in 0...@item_max
          draw_item(i)
        end
      end
      #--------------------------------------------------------------------------
      # * Draw Item
      #    index : item number
      #    color : text color
      #--------------------------------------------------------------------------
      def draw_item(index)
        rect = Rect.new(0, 0, 24, 24)
        bitmap = RPG::Cache.icon(ITEMS_MENU_ICONS[index])
        self.contents.blt(4 + 32 * index, 4, bitmap, rect) unless UNSELECTED_TRANSLUCENT && index != @select
        self.contents.blt(4 + 32 * index, 4, bitmap, rect, 160) if UNSELECTED_TRANSLUCENT && index != @select
      end
      #--------------------------------------------------------------------------
      # * Disable Item
      #    index : item number
      #--------------------------------------------------------------------------
      def disable_item(index)
        draw_item(index)
      end
      #--------------------------------------------------------------------------
      # * Update Cursor Rectangle
      #--------------------------------------------------------------------------
      def update_cursor_rect
        @select = @index
        # If cursor position is less than 0
        if @index < 0 || !CATEGORY_CURSOR
          self.cursor_rect.empty
          return
        end
        # Update cursor rectangle
        self.cursor_rect.set(@index*32, 0, 32, 32)
      end
      #--------------------------------------------------------------------------
      # * Help Text Update
      #--------------------------------------------------------------------------
      def update_help
        @help_window.set_text(ITEMS_MENU_TEXT[self.index])
      end
    end

    #==============================================================================
    # ** Window_ItemTop
    #------------------------------------------------------------------------------
    #  This window shows top bar with the title "Items" on it.
    #==============================================================================

    class Window_ItemTop < Window_Base
      #--------------------------------------------------------------------------
      # * include the CMS_Config module
      #--------------------------------------------------------------------------
      include CIM_Config
   
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize
        cw = 32 + ITEMS_MENU_TEXT.size * 32
        super(0, 0, 640 - cw, 64)
        self.contents = Bitmap.new(width - 32, height - 32)
        @text = ITEMS_MENU_TEXT[0]
        @width = 640 - cw
        update
        self.opacity = 0 unless CATEGORIES_WINDOW
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        self.contents.clear
        self.contents.draw_text(0, 0, @width - 32, 32, @text, TITLE_ALIGNMENT)
      end
      def set_text(text)
        @text = text
      end
    end

    #==============================================================================
    # ** Window_ItemHelp
    #------------------------------------------------------------------------------
    #  This window shows skill and item explanations along with actor status.
    #==============================================================================

    class Window_ItemHelp < Window_Base
      #--------------------------------------------------------------------------
      # * include the CMS_Config module
      #--------------------------------------------------------------------------
      include CIM_Config
   
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize
        super(0, 0, 640, 128)
        self.contents = Bitmap.new(width - 32, height - 32)
        self.opacity = 0
      end
      #--------------------------------------------------------------------------
      # * Set Text
      #  text  : text string displayed in window
      #  align : alignment (0..flush left, 1..center, 2..flush right)
      #--------------------------------------------------------------------------
      def set_text(text, item, align = 0)
        # If at least one part of text and alignment differ from last time
        if text != @text or align != @align
          # Redraw text
          self.contents.clear
          # Redraw icon
          if item
            bitmap = RPG::Cache.icon(item.icon_name)
            width = bitmap.width
            height = bitmap.height
            src_rect = Rect.new(0, 0, width, height)
            dest_rect = Rect.new(0, 24, width * 2, height * 2)
            self.contents.stretch_blt(dest_rect, bitmap, src_rect) if ICON_DISPLAY == 2
            self.contents.blt(0, 36, bitmap, src_rect)if ICON_DISPLAY == 1
          else
            width = 0
          end
          self.contents.font.color = normal_color
          self.contents.draw_text(4 + width * ICON_DISPLAY, 32, self.width - 40, 32, text, align)
          @text = text
          @align = align
          @actor = nil
        end
        self.visible = true
      end
      #--------------------------------------------------------------------------
      # * Set Display
      #  text  : text string displayed in window
      #  align : alignment (0..flush left, 1..center, 2..flush right)
      #--------------------------------------------------------------------------
      def set_display(text, icon, align = 0)
        # If at least one part of text and alignment differ from last time
        if text != @text or align != @align
          # Redraw text
          self.contents.clear
          # Redraw icon
          if icon
            bitmap = RPG::Cache.icon(icon)
            width = bitmap.width
            height = bitmap.height
            src_rect = Rect.new(0, 0, width, height)
            dest_rect = Rect.new(0, 24, width * 2, height * 2)
            self.contents.stretch_blt(dest_rect, bitmap, src_rect)
          else
            width = 0
          end
          self.contents.font.color = normal_color
          self.contents.draw_text(4 + width * 2, 32, self.width - 40, 32, text, align)
          @text = text
          @align = align
          @actor = nil
        end
        self.visible = true
      end
      #--------------------------------------------------------------------------
      # * Set Actor
      #    actor : status displaying actor
      #--------------------------------------------------------------------------
      def set_actor(actor)
        if actor != @actor
          self.contents.clear
          draw_actor_name(actor, 4, 0)
          draw_actor_state(actor, 140, 0)
          draw_actor_hp(actor, 284, 0)
          draw_actor_sp(actor, 460, 0)
          @actor = actor
          @text = nil
          self.visible = true
        end
      end
      #--------------------------------------------------------------------------
      # * Set Enemy
      #    enemy : name and status displaying enemy
      #--------------------------------------------------------------------------
      def set_enemy(enemy)
        text = enemy.name
        state_text = make_battler_state_text(enemy, 112, false)
        if state_text != ""
          text += "  " + state_text
        end
        set_text(text, 1, 1)
      end
    end

    #==============================================================================
    # ** Window_Item
    #------------------------------------------------------------------------------
    #  This window displays items in possession on the item and battle screens.
    #==============================================================================

    class Window_ItemMenu < Window_Selectable
      #--------------------------------------------------------------------------
      # * include the CMS_Config module
      #--------------------------------------------------------------------------
      include CIM_Config
   
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize
        super(0, 64, 640, 352)
        @column_max = 2
        @category = ITEM_ID[0]
        refresh
        self.index = -1
        @category_select = true
        # If in battle, move window to center of screen
        # and make it semi-transparent
        if $game_temp.in_battle
          self.y = 64
          self.height = 256
          self.back_opacity = 160
        end
      end
      #--------------------------------------------------------------------------
      # * Get Item
      #--------------------------------------------------------------------------
      def item
        case @category
        when "Recent"
          if @items_max > 20
            return @recent[self.index + (@items_max - 20)]
          else
            return @recent[self.index]
          end
        when "Consume"
          return @consumable[self.index]
        when "Weapon"
          return @weapon[self.index]
        when "Body"
          return @body[self.index]
        when "Head"
          return @head[self.index]
        when "Arm"
          return @arm[self.index]
        when "Accessory"
          return @accessory[self.index]
        when "Raw"
          return @raw[self.index]
        when "Quest"
          return @quest[self.index]
        when "Equip"
          return @equipment[self.index]
        when "All"
          return @all[self.index]
        end
      end
      #--------------------------------------------------------------------------
      # * Set Category
      #--------------------------------------------------------------------------
      def category(index)
        @category = ITEM_ID[index]
      end
      #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      def refresh
        if self.contents != nil
          self.contents.dispose
          self.contents = nil
        end
     
        @recent = []
        @consumable = []
        @weapon = []
        @body = []
        @head = []
        @arm = []
        @accessory = []
        @raw = []
        @quest = []
        @equipment = []
        @all = []
        # Add item
        for i in 1...$data_items.size
          if $game_party.item_number(i) > 0
            # Add recent items
            if $game_party.recent_items.size < 20
              for u in 0...$game_party.recent_items.size
                if $data_items[i].id == $game_party.recent_items[u].id && $game_party.recent_items[u].is_a?(RPG::Item)
                  @recent[($game_party.recent_items.size - 1) - u] = ($data_items[i])
                end
              end
            else
              for u in $game_party.recent_items.size-20...$game_party.recent_items.size
                if $data_items[i].id == $game_party.recent_items[u].id && $game_party.recent_items[u].is_a?(RPG::Item)
                  @recent[21 - (u - ($game_party.recent_items.size-20))] = ($data_items[i])
                end
              end
            end
         
            # Add consumable, raw and quest items
            if $data_items[i].consumable
              if $data_items[i].occasion == 3
                @raw.push($data_items[i])
              else
                @consumable.push($data_items[i])
              end
            else
              @quest.push($data_items[i])
            end
            @all.push($data_items[i])
          end
        end
     
        # Also add weapons and armors if outside of battle
        unless $game_temp.in_battle
          for i in 1...$data_weapons.size
            if $game_party.weapon_number(i) > 0
              # Add recent items
              if $game_party.recent_items.size < 20
                for u in 0...$game_party.recent_items.size
                  if $data_weapons[i].id == $game_party.recent_items[u].id && $game_party.recent_items[u].is_a?(RPG::Weapon)
                    @recent[($game_party.recent_items.size - 1) - u] = ($data_weapons[i])
                  end
                end
              else
                for u in $game_party.recent_items.size-20...$game_party.recent_items.size
                  if $data_weapons[i].id == $game_party.recent_items[u].id && $game_party.recent_items[u].is_a?(RPG::Weapon)
                    @recent[21 - (u - ($game_party.recent_items.size-20))] = ($data_weapons[i])
                  end
                end
              end
           
              # Add weapons
              @weapon.push($data_weapons[i])
              @equipment.push($data_weapons[i])
              @all.push($data_weapons[i])
            end
          end
          for i in 1...$data_armors.size
            if $game_party.armor_number(i) > 0
              # Add recent armors
              if $game_party.recent_items.size < 20
                for u in 0...$game_party.recent_items.size
                  if $data_armors[i].id == $game_party.recent_items[u].id && $game_party.recent_items[u].is_a?(RPG::Armor)
                    @recent[($game_party.recent_items.size - 1) - u] = ($data_armors[i])
                  end
                end
              else
                for u in $game_party.recent_items.size-20...$game_party.recent_items.size
                  if $data_armors[i].id == $game_party.recent_items[u].id && $game_party.recent_items[u].is_a?(RPG::Armor)
                    @recent[21 - (u - ($game_party.recent_items.size-20))] = ($data_armors[i])
                  end
                end
              end
           
              # Add armors
              if $data_armors[i].kind == 2 # Body Armor
                @body.push($data_armors[i])
              elsif $data_armors[i].kind == 1 # Head Armor
                @head.push($data_armors[i])
              elsif $data_armors[i].kind == 0 # Arm Armor
                @arm.push($data_armors[i])
              elsif $data_armors[i].kind == 3 # Accessories
                @accessory.push($data_armors[i])
              end
              @equipment.push($data_armors[i])
              @all.push($data_armors[i])
            end
          end
        end
     
        # Repaint
        if @category == "Recent"
          @item_max = @recent.size
        elsif @category == "Consume"
          @item_max = @consumable.size
        elsif @category == "Weapon"
          @item_max = @weapon.size
        elsif @category == "Body"
          @item_max = @body.size
        elsif @category == "Head"
          @item_max = @head.size
        elsif @category == "Arm"
          @item_max = @arm.size
        elsif @category == "Accessory"
          @item_max = @accessory.size
        elsif @category == "Raw"
          @item_max = @raw.size
        elsif @category == "Quest"
          @item_max = @quest.size
        elsif @category == "Equip"
          @item_max = @equipment.size
        elsif @category == "All"
          @item_max = @all.size
        end
        @items_max = @item_max
        if @item_max == 0
          self.contents.dispose if self.contents != nil
          self.contents = Bitmap.new(width - 32, height - 32)
        end
          if @item_max > 20 && @category == "Recent"
            self.contents = Bitmap.new(width - 32, height - 32)
            for i in @recent.size-20...@recent.size
              draw_item(i)
            end
            @items_max = @item_max
            @item_max = 20
          elsif @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)
        case @category
        when "Recent"
          item = @recent[index]
        when "Consume"
          item = @consumable[index]
        when "Weapon"
          item = @weapon[index]
        when "Body"
          item = @body[index]
        when "Head"
          item = @head[index]
        when "Arm"
          item = @arm[index]
        when "Accessory"
          item = @accessory[index]
        when "Raw"
          item = @raw[index]
        when "Quest"
          item = @quest[index]
        when "Equip"
          item = @equipment[index]
        when "All"
          item = @all[index]
        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) and
          $game_party.item_can_use?(item.id)
          self.contents.font.color = normal_color
        else
          self.contents.font.color = disabled_color
        end
        x = 4 + index % 2 * (288 + 32)
        if @item_max > 20 && @category == "Recent"
          y = (index - (@item_max - 20)) / 2 * 32
        else
          y = index / 2 * 32
        end
        if item != nil
          rect = Rect.new(x, y, self.width / @column_max - 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 + 240, y, 16, 32, ":", 1)
          self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
        end
      end
      #--------------------------------------------------------------------------
      # * Help Text Update
      #--------------------------------------------------------------------------
      def update_help
        if @index >= 0
          @help_window.set_text(self.item == nil ? "" : self.item.description, self.item)
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        if self.active and @item_max >= 0 and @index >= 0
          if Input.trigger?(Input::UP) && @index <= 1
            @index = -1
          end
        end
        super
      end
      def cat_select(tf)
        @category_select = tf
      end
      #--------------------------------------------------------------------------
      # * Update Cursor Rectangle
      #--------------------------------------------------------------------------
      def update_cursor_rect
        # If cursor position is less than 0
        if @index < 0 || @category_select
          self.cursor_rect.empty
          return
        end
        # Get current row
        row = @index / @column_max
        # If current row is before top row
        if row < self.top_row
          # Scroll so that current row becomes top row
          self.top_row = row
        end
        # If current row is more to back than back row
        if row > self.top_row + (self.page_row_max - 1)
          # Scroll so that current row becomes back row
          self.top_row = row - (self.page_row_max - 1)
        end
        # Calculate cursor width
        cursor_width = self.width / @column_max - 32
        # Calculate cursor coordinates
        x = @index % @column_max * (cursor_width + 32)
        y = @index / @column_max * 32 - self.oy
        # Update cursor rectangle
        self.cursor_rect.set(x, y, cursor_width, 32)
      end
      #--------------------------------------------------------------------------
      # * Draw Items after use
      #--------------------------------------------------------------------------
      def draw_items(index)
        if @category == "Recent" && @recent.size > 20
          draw_item(index + (@item_max - 20))
        else
          draw_item(index)
        end
      end
    end

    #==============================================================================
    # ** Scene_Item
    #------------------------------------------------------------------------------
    #  This class performs item screen processing.
    #==============================================================================

    class Scene_Item
      #--------------------------------------------------------------------------
      # * Main Processing
      #--------------------------------------------------------------------------
      def main
        # Make help window, item window
        @top_window = Window_Blank.new(0, 0, 640, 64) unless CIM_Config::CATEGORIES_WINDOW
        @help_window = Window_ItemHelp.new
        @itemtop_window = Window_ItemTop.new
        @help_windowback = Window_Blank.new(0, 416, 640, 64)
        @help_window.y = 384
        @item_window = Window_ItemMenu.new
        @item_window.active = false
        # Associate help window
        @item_window.help_window = @help_window
        # Make target window (set to active)
        @category_window = Window_Category.new(320, [])
        @category_window.active = true
        @category_window.help_window = @itemtop_window
        # Make target window (set to invisible / inactive)
        @target_window = Window_Target.new
        @target_window.visible = false
        @target_window.active = false
        @item_window.refresh
        # Execute transition
        Graphics.transition
        # Main loop
        loop do
          # Update game screen
          Graphics.update
          # Update input information
          Input.update
          # Frame update
          update
          # Abort loop if screen is changed
          if $scene != self
            break
          end
        end
        # Prepare for transition
        Graphics.freeze
        # Dispose of windows
        @help_window.dispose
        @item_window.dispose
        @target_window.dispose
        @help_windowback.dispose
        @category_window.dispose
        @itemtop_window.dispose
        @top_window.dispose unless CIM_Config::CATEGORIES_WINDOW
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        # Update windows
        @help_window.update
        @item_window.update
        @target_window.update
        @help_windowback.update
        @category_window.update
        @category_window.refresh
        @itemtop_window.update
        @top_window.update unless CIM_Config::CATEGORIES_WINDOW
        # If item window is active: call update_item
        if @item_window.active
          update_item
          return
        end
        # If target window is active: call update_target
        if @target_window.active
          update_target
          return
        end
        # If target window is active: call update_target
        if @category_window.active
          @help_window.set_display ("", "")
          update_category
          return
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (when item window is active)
      #--------------------------------------------------------------------------
      def update_item
        # If B button was pressed
        if Input.trigger?(Input::B)
          # Set category window active
          @item_window.active = false
          @item_window.cat_select(true)
          @category_window.active = true
          # Play decision SE
          $game_system.se_play($data_system.decision_se)
          return
        end
        # If C button was pressed
        if Input.trigger?(Input::C)
          # Get currently selected data on the item window
          @item = @item_window.item
          # If not a use item
          unless @item.is_a?(RPG::Item)
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # If it can't be used
          unless $game_party.item_can_use?(@item.id)
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # Play decision SE
          $game_system.se_play($data_system.decision_se)
          # If effect scope is an ally
          if @item.scope >= 3
            # Activate target window
            @item_window.active = false
            @target_window.x = (@item_window.index + 1) % 2 * 304
            @target_window.visible = true
            @target_window.active = true
            # Set cursor position to effect scope (single / all)
            if @item.scope == 4 || @item.scope == 6
              @target_window.index = -1
            else
              @target_window.index = 0
            end
          # If effect scope is other than an ally
          else
            # If command event ID is valid
            if @item.common_event_id > 0
              # Command event call reservation
              $game_temp.common_event_id = @item.common_event_id
              # Play item use SE
              $game_system.se_play(@item.menu_se)
              # If consumable
              if @item.consumable
                # Decrease used items by 1
                $game_party.lose_item(@item.id, 1)
                # Draw item window item
                @item_window.draw_item(@item_window.index)
              end
              # Switch to map screen
              $scene = Scene_Map.new
              return
            end
          end
          return
        end
        # If UP button was pressed
        if Input.trigger?(Input::UP) && @item_window.index == -1
          # Set category window active
          @item_window.active = false
          @item_window.cat_select(true)
          @category_window.active = true
          # Play cursor SE
          $game_system.se_play($data_system.cursor_se)
          return
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (when target window is active)
      #--------------------------------------------------------------------------
      def update_target
        # If B button was pressed
        if Input.trigger?(Input::B)
          # Play cancel SE
          $game_system.se_play($data_system.cancel_se)
          # If unable to use because items ran out
          unless $game_party.item_can_use?(@item.id)
            # Remake item window contents
            @item_window.refresh
          end
          # Erase target window
          @item_window.active = true
          @target_window.visible = false
          @target_window.active = false
          @item_window.refresh
          return
        end
        # If C button was pressed
        if Input.trigger?(Input::C)
          # If items are used up
          if $game_party.item_number(@item.id) == 0
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # If target is all
          if @target_window.index == -1
            # Apply item effects to entire party
            used = false
            for i in $game_party.actors
              used |= i.item_effect(@item)
            end
          end
          # If single target
          if @target_window.index >= 0
            # Apply item use effects to target actor
            target = $game_party.actors[@target_window.index]
            used = target.item_effect(@item)
          end
          # If an item was used
          if used
            # Play item use SE
            $game_system.se_play(@item.menu_se)
            # If consumable
            if @item.consumable
              # Decrease used items by 1
              $game_party.lose_item(@item.id, 1)
              # Redraw item window item
              @item_window.draw_items(@item_window.index)
            end
            # Remake target window contents
            @target_window.refresh
            # If all party members are dead
            if $game_party.all_dead?
              # Switch to game over screen
              $scene = Scene_Gameover.new
              return
            end
            # If common event ID is valid
            if @item.common_event_id > 0
              # Common event call reservation
              $game_temp.common_event_id = @item.common_event_id
              # Switch to map screen
              $scene = Scene_Map.new
              return
            end
          end
          # If item wasn't used
          unless used
            # Play buzzer SE
            $game_system.se_play($data_system.buzzer_se)
          end
          return
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (when category window is active)
      #--------------------------------------------------------------------------
      def update_category
        @item_window.category(@category_window.index)
        @item_window.cat_select(true)
        if Input.repeat? (Input::RIGHT) || Input.repeat? (Input::LEFT)
        @item_window.refresh
        end
        # If B button was pressed
        if Input.trigger?(Input::B)
          # Play cancel SE
          $game_system.se_play($data_system.cancel_se)
          # Switch to menu screen
          $scene = Scene_Menu.new(0)
          return
        end
        # If C button was pressed
        if Input.trigger?(Input::C)
          # Get currently selected data on the item window
          @item = @category_window.index
          # Set item window active
          @item_window.active = true
          @item_window.index = 0
          @category_window.active = false
          @item_window.cat_select(false)
          # Play decision SE
          $game_system.se_play($data_system.decision_se)
          return
        end
        # If DOWN button was pressed
        if Input.trigger?(Input::DOWN)
          # Set item window active
          @item_window.active = true
          @item_window.index = 0
          @category_window.active = false
          @item_window.cat_select(false)
          # Play cursor SE
          $game_system.se_play($data_system.cursor_se)
          return
        end
      end
    end

    #==============================================================================
    # ** Game_Party
    #------------------------------------------------------------------------------
    #  This class handles the party. It includes information on amount of gold
    #  and items. Refer to "$game_party" for the instance of this class.
    #==============================================================================

    class Game_Party
      attr_reader    :recent_items
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      alias af_cim_init_gp initialize
      def initialize
        af_cim_init_gp
        @recent_items = []
      end
      #--------------------------------------------------------------------------
      # * Gain Items (or lose)
      #    item_id : item ID
      #    n      : quantity
      #--------------------------------------------------------------------------
      def gain_item(item_id, n)
        # Update quantity data in the hash.
        if item_id > 0
          @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
          gain_recent_item(item_id) if n >= 0
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Weapons (or lose)
      #    weapon_id : weapon ID
      #    n        : quantity
      #--------------------------------------------------------------------------
      def gain_weapon(weapon_id, n)
        # Update quantity data in the hash.
        if weapon_id > 0
          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
          gain_recent_weapon(weapon_id) if n >= 0
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Armor (or lose)
      #    armor_id : armor ID
      #    n        : quantity
      #--------------------------------------------------------------------------
      def gain_armor(armor_id, n)
        # Update quantity data in the hash.
        if armor_id > 0
          @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
          gain_recent_armor(armor_id) if n >= 0
        end
      end
      #--------------------------------------------------------------------------
      # * Lose Items
      #    item_id : item ID
      #    n      : quantity
      #--------------------------------------------------------------------------
      def lose_item(item_id, n)
        # Reverse the numerical value and call it gain_item
        gain_item(item_id, -n)
        for i in 0...@recent_items.size
          if $game_party.item_number(@recent_items[i].id) == 0 && @recent_items[i].is_a?(RPG::Item) && @recent_items[i].id == item_id
            @recent_items.delete_at(i)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Lose Weapons
      #    weapon_id : weapon ID
      #    n        : quantity
      #--------------------------------------------------------------------------
      def lose_weapon(weapon_id, n)
        # Reverse the numerical value and call it gain_weapon
        gain_weapon(weapon_id, -n)
        for i in 0...@recent_items.size
          if $game_party.item_number(@recent_items[i].id) == 0 && @recent_items[i].is_a?(RPG::Weapon) && @recent_items[i].id == weapon_id
            @recent_items.delete_at(i)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Lose Armor
      #    armor_id : armor ID
      #    n        : quantity
      #--------------------------------------------------------------------------
      def lose_armor(armor_id, n)
        # Reverse the numerical value and call it gain_armor
        gain_armor(armor_id, -n)
        if $game_party.item_number(armor_id) <= 0
        for i in 0...@recent_items.size
          if $game_party.item_number(@recent_items[i].id) == 0 && @recent_items[i].is_a?(RPG::Armor) && @recent_items[i].id == armor_id
            @recent_items.delete_at(i)
          end
        end
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Recent Items
      #    item_id  : item ID
      #--------------------------------------------------------------------------
      def gain_recent_item(item_id)
        for i in 0...@recent_items.size
          if @recent_items[i].id == $data_items[item_id].id && @recent_items[i].is_a?(RPG::Item)
            @recent_items.delete_at(i)
          end
        end
        @recent_items.push($data_items[item_id])
        if @recent_items.size > 40
          @recent_items.delete_at(0)
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Recent Weapons
      #    weapon_id : weapon ID
      #--------------------------------------------------------------------------
      def gain_recent_weapon(weapon_id)
        for i in 0...@recent_items.size
          if @recent_items[i].id == $data_weapons[weapon_id].id && @recent_items[i].is_a?(RPG::Weapon)
            @recent_items.delete_at(i)
          end
        end
        @recent_items.push($data_weapons[weapon_id])
        if @recent_items.size > 40
          @recent_items.delete_at(0)
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Recent Armor
      #    armor_id  : armor ID
      #--------------------------------------------------------------------------
      def gain_recent_armor(armor_id)
        for i in 0...@recent_items.size
          if @recent_items[i].id == $data_armors[armor_id].id && @recent_items[i].is_a?(RPG::Armor)
            @recent_items.delete_at(i)
          end
        end
        @recent_items.push($data_armors[armor_id])
        if @recent_items.size > 40
          @recent_items.delete_at(0)
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Items (or lose)
      #    item_id : item ID
      #    n      : quantity
      #--------------------------------------------------------------------------
      def equip_item(item_id, n)
        # Update quantity data in the hash.
        if item_id > 0
          @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Weapons (or lose)
      #    weapon_id : weapon ID
      #    n        : quantity
      #--------------------------------------------------------------------------
      def equip_weapon(weapon_id, n)
        # Update quantity data in the hash.
        if weapon_id > 0
          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
        end
      end
      #--------------------------------------------------------------------------
      # * Gain Armor (or lose)
      #    armor_id : armor ID
      #    n        : quantity
      #--------------------------------------------------------------------------
      def equip_armor(armor_id, n)
        # Update quantity data in the hash.
        if armor_id > 0
          @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
        end
      end
    end

    #==============================================================================
    # ** Game_Actor
    #------------------------------------------------------------------------------
    #  This class handles the actor. It's used within the Game_Actors class
    #  ($game_actors) and refers to the Game_Party class ($game_party).
    #==============================================================================
    class Game_Actor
      #--------------------------------------------------------------------------
      # * Change Equipment
      #    equip_type : type of equipment
      #    id    : weapon or armor ID (If 0, remove equipment)
      #--------------------------------------------------------------------------
      def equip(equip_type, id)
        case equip_type
        when 0  # Weapon
          if id == 0 or $game_party.weapon_number(id) > 0
            $game_party.equip_weapon(@weapon_id, 1)
            @weapon_id = id
            $game_party.lose_weapon(id, 1)
          end
        when 1  # Shield
          if id == 0 or $game_party.armor_number(id) > 0
            update_auto_state($data_armors[@armor1_id], $data_armors[id])
            $game_party.equip_armor(@armor1_id, 1)
            @armor1_id = id
            $game_party.lose_armor(id, 1)
          end
        when 2  # Head
          if id == 0 or $game_party.armor_number(id) > 0
            update_auto_state($data_armors[@armor2_id], $data_armors[id])
            $game_party.equip_armor(@armor2_id, 1)
            @armor2_id = id
            $game_party.lose_armor(id, 1)
          end
        when 3  # Body
          if id == 0 or $game_party.armor_number(id) > 0
            update_auto_state($data_armors[@armor3_id], $data_armors[id])
            $game_party.equip_armor(@armor3_id, 1)
            @armor3_id = id
            $game_party.lose_armor(id, 1)
          end
        when 4  # Accessory
          if id == 0 or $game_party.armor_number(id) > 0
            update_auto_state($data_armors[@armor4_id], $data_armors[id])
            $game_party.equip_armor(@armor4_id, 1)
            @armor4_id = id
            $game_party.lose_armor(id, 1)
          end
        end
      end
    end
Volver arriba Ir abajo
Ver perfil de usuario
DaviX
Admin.
Admin.
avatar

Cantidad de envíos : 2740
Miembro desde : 08/07/2009
Edad : 23
Localización : España
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: [Ayuda] Categorias Item Menu.   Vie Dic 28, 2012 9:24 am

UP por peticion Wink

Se necesita ayuda

_________________
Soy puta y me gusta que me den por culo.
Hahhahaa

by:Ares
xDDDD
Volver arriba Ir abajo
Ver perfil de usuario
Raiden
Admin
Admin
avatar

Cantidad de envíos : 3346
Miembro desde : 01/03/2010
Edad : 24
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: [Ayuda] Categorias Item Menu.   Vie Dic 28, 2012 4:46 pm

Haber, segun entiendo tienes 2 sistemas de categorías de objetos. Y quieres que uno de ellos se vea como el otro no? mas exactamente quieres que el de Northro se vea como el otro sistema?

_________________




"La amenaza de una espada, mantiene a la otra envainada."

Spoiler:
 
Volver arriba Ir abajo
Ver perfil de usuario
ripher
Escudero Maker
Escudero Maker


Cantidad de envíos : 40
Miembro desde : 09/08/2010
Localización : Chile
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: [Ayuda] Categorias Item Menu.   Sáb Dic 29, 2012 1:38 pm

Shooter escribió:
Haber, segun entiendo tienes 2 sistemas de categorías de objetos. Y quieres que uno de ellos se vea como el otro no? mas exactamente quieres que el de Northro se vea como el otro sistema?

Si, es una de las modificaciones,
como que aparezcan los iconos, pero con la descripcion y nombre en el cuadro
de texto.
arreglar los cursores, para poder entrar a la categoria
bajando y con boton de accion.
y salir con cancelar o arriba.
y que se vean los objetos en la categoria, antes de entrar en ella.
Volver arriba Ir abajo
Ver perfil de usuario
Raiden
Admin
Admin
avatar

Cantidad de envíos : 3346
Miembro desde : 01/03/2010
Edad : 24
Sexo : Masculino

Maker : RMXP

Logros MP :


MensajeTema: Re: [Ayuda] Categorias Item Menu.   Dom Dic 30, 2012 2:35 am

Entiendo, hasta el momento no me parece mucho o muy complicado. Lo intentare pero no me comprometo con dar resultados muy pronto.

_________________




"La amenaza de una espada, mantiene a la otra envainada."

Spoiler:
 
Volver arriba Ir abajo
Ver perfil de usuario
ripher
Escudero Maker
Escudero Maker


Cantidad de envíos : 40
Miembro desde : 09/08/2010
Localización : Chile
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: [Ayuda] Categorias Item Menu.   Sáb Ene 05, 2013 11:01 pm

Gracias,
todavia no tengo la solucion,
se me ocurrio, hacer todo lo contrario
tomar las descripciones de items, y organizacion de las categorias al estilo del de Northro,
y usar el otro de base...

saludos y feliz año!
Volver arriba Ir abajo
Ver perfil de usuario
Contenido patrocinado




MensajeTema: Re: [Ayuda] Categorias Item Menu.   

Volver arriba Ir abajo
 
[Ayuda] Categorias Item Menu.
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» [RPG Maker XP] Icon Scene Menu v 2.0
» Galv | Menu vertical
» Ayuda con Ace Attorney :U
» [Ayuda] Como cambiar abreviatura de GOLD RMVX ACE
» [RpgXp] Ayuda con las escenas y otra pregunta

Permisos de este foro:No puedes responder a temas en este foro.
Maker Palace :: RGSS Scripts :: Scripts Maker XP-
Cambiar a: