Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3773 miembros registrados.
El último usuario registrado es Selu64.

Nuestros miembros han publicado un total de 85868 mensajes en 12230 argumentos.

[RMXP] New Items Display

Página 1 de 2. 1, 2  Siguiente

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] New Items Display

Mensaje por Eron el 2017-05-05, 13:04

Ya hace que no aporto un script así que aquí os paso uno =D Wecoc me inspiró con tanto script x'DD

New Items Display muestra qué items y equipo son nuevos. Se consideran nuevos cuando tras obtenerlos y antes no tener ninguno, vas a la ventana para verlos. Una vez te vas de esa ventana, si vuelves a entrar a ella ya no son considerados nuevos. Cuando digo ventana ésta puede ser la de Objetos, la de Equipo o la de Objetos desde Batalla (opcional). Os dejo unos minutos para que desencriptéis lo que acabo de decir.

Con la imagen se ve más claro lo que hace, si acabas de obtener un Éter y un Super Éter y vas al menú de objetos se verá así:


Usé éste Icon, podéis crearos el vuestro:

Hay cosas por editar en la configuración también, mirad el principio del script. Debería ser compatible con casi cualquier cosa aunque algunos suben sistemas muy raros así que no sé.

Código:
# * New Items Display (XP) - por Eron (no req. créditos)

module Data_Check
  
  NEW_ITEM_ICON = "new_item" # Icon file
  
  # Mostrar New en batalla / Actualizar estado New en batalla
  DISPLAY_IN_BATTLE = true
  REFRESH_IN_BATTLE = true
  
  # IDs en los items que no sale el icono New pese a ser nuevos
  BASIC_ITEMS   = [1, 2, 3]
  BASIC_WEAPONS = []
  BASIC_ARMORS  = []
  
  module_function
  def refresh_items
    for i in 1...$data_items.size
      $game_system.item_data[i] = $game_party.item_number(i)
    end
  end
  def refresh_weapons
    for i in 1...$data_items.size
      $game_system.weapon_data[i] = $game_party.total_weapon_number(i)
    end
  end
  def refresh_armors
    for i in 1...$data_items.size
      $game_system.armor_data[i] = $game_party.total_armor_number(i)
    end
  end
end

class Game_Party
  def total_weapon_number(weapon_id)
    result = weapon_number(weapon_id)
    for i in 0...@actors.size
      result += 1 if @actors[i].weapon_id == weapon_id
    end
    return result
  end
  def total_armor_number(armor_id)
    result = armor_number(armor_id)
    for i in 0...@actors.size
      result += 1 if @actors[i].armor1_id == armor_id
      result += 1 if @actors[i].armor2_id == armor_id
      result += 1 if @actors[i].armor3_id == armor_id
      result += 1 if @actors[i].armor4_id == armor_id
    end
    return result
  end
end

class Game_System
  attr_accessor :item_data, :weapon_data, :armor_data
  alias data_check_new_ini initialize unless $@
  def initialize
    data_check_new_ini
    @item_data = {}
    @item_data.default = 0
    @weapon_data = {}
    @weapon_data.default = 0
    @armor_data = {}
    @armor_data.default = 0
  end
end

class Scene_Title
  alias data_set_at_start command_new_game unless $@
  def command_new_game
    data_set_at_start
    Data_Check.refresh_items
    Data_Check.refresh_weapons
    Data_Check.refresh_armors
  end
end

class Scene_Item
  alias data_check_main main unless $@
  def main
    data_check_main
    Data_Check.refresh_items
    Data_Check.refresh_weapons
    Data_Check.refresh_armors
  end
end

class Scene_Equip
  alias data_check_main main unless $@
  def main
    data_check_main
    Data_Check.refresh_weapons
    Data_Check.refresh_armors
  end
  
  alias data_refresh_equip update_item unless $@
  def update_item
    if Input.trigger?(Input::C)
      item = @item_window.item
      case item
      when RPG::Weapon
        data_number = $game_system.weapon_data[item.id]
        if data_number == 0
          total_number = $game_party.total_weapon_number(item.id)
          $game_system.weapon_data[item.id] = total_number
        end
      when RPG::Armor
        data_number = $game_system.armor_data[item.id]
        if data_number == 0
          total_number = $game_party.total_armor_number(item.id)
          $game_system.armor_data[item.id] = total_number
        end
      end
    end
    data_refresh_equip
  end
end

class Scene_Battle
  alias data_check_end_item end_item_select unless $@
  def end_item_select
    data_check_end_item
    if Data_Check::REFRESH_IN_BATTLE
      Data_Check.refresh_items
    end
  end
end

#----------------------------------------------------------------------------

class Window_EquipItem < Window_Selectable
  alias data_check_draw_item draw_item unless $@
  def draw_item(index)
    data_check_draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    bitmap = RPG::Cache.icon(Data_Check::NEW_ITEM_ICON)
    case item
    when RPG::Weapon
      data_number = $game_system.weapon_data[item.id]
      if data_number != $game_party.total_weapon_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_WEAPONS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    when RPG::Armor
      data_number = $game_system.armor_data[item.id]
      if data_number != $game_party.total_armor_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_ARMORS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    end
  end
end

class Window_Item < Window_Selectable
  alias data_check_draw_item draw_item unless $@
  def draw_item(index)
    data_check_draw_item(index)
    return if $game_temp.in_battle && Data_Check::DISPLAY_IN_BATTLE == false
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    bitmap = RPG::Cache.icon(Data_Check::NEW_ITEM_ICON)
    case item
    when RPG::Item
      data_number = $game_system.item_data[item.id]
      if data_number != $game_party.item_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_ITEMS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    when RPG::Weapon
      data_number = $game_system.weapon_data[item.id]
      if data_number != $game_party.total_weapon_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_WEAPONS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    when RPG::Armor
      data_number = $game_system.armor_data[item.id]
      if data_number != $game_party.total_armor_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_ARMORS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    end
  end
end

Esa idea se puede replantear de varias formas, si os interesa otra versión comendad abajo y no olvidéis darme like y suscribiros en mi -ay no que ésto es solo un post-, solo comentad =)
avatar
Eron
Principiante
Principiante

0/3

Créditos 3593

Gracias : 56

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por orochii el 2017-05-06, 01:30

Me gusta la idea, la he visto en tantos juegos y nunca me pasó la idea de copiarla xD. No sé porqué, porque a veces ayuda a encontrar cosas entre tanta basura que encuentras, xDDDD.
avatar
orochii
Reportero

0/3

Créditos 7418

Gracias : 362

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por plergoth el 2017-05-07, 11:59

Lo he encontrado muy interesante, hacía tiempo que buscaba algo así y no lo encontraba, has tenido una idea cojonuda, así que me lo copiaré para mi proyecto.

Por cierto, tengo una duda, ¿Sabes si para que funcione bien hay que empezar una partida nueva?
Lo he probado en un proyecto nuevo y funciona perfectamente, pero en el mío no, supongo que por usarlo en una partida avanzada, el caso es que al empezar una partida tampoco funciona, ¿Sabes si hay conflicto con algún otro script? Lo veo raro pero nunca se sabe.
avatar
plergoth
Soñador
Soñador

0/3

Créditos 164

Gracias : 8

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Eron el 2017-05-08, 16:42

No debería haber problemas al cargar partida, pero problemas de compatibilidad sí puede ser.
Prueba a poner éste script al final de todo, debajo de cualquier otro script personalizado y justo encima de main.
Si sigue sin funcionar tendrás que dar detalles de qué otros scripts osas que modifiquen las escenas de objetos, equipo o batalla.
avatar
Eron
Principiante
Principiante

0/3

Créditos 3593

Gracias : 56

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Lithering-Games el 2017-05-08, 17:47

Hola. Me parece una idea interesante, y ya que en mi proyecto se puede llegar a tener muchos objetos en el inventario, quisiera implementarlo. El problema es que yo uso XAS Hero Edition 3.8, y este presenta una modificación en la escena de objetos para poder equipar objetos desde el inventario. Si no es mucha molestia, ¿Podrías hacerlos compatibles?

Aquí te dejo la Demo de XAS Hero 3.8:
https://mega.nz/#!ssMXiTYZ!Cgi2PC-ncL1sLI3TfdG1m5s8g6RahkI8vYiFcdwL54s
avatar
Lithering-Games
Principiante
Principiante

0/3

Créditos 535

Gracias : 21

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-05-08, 19:12

Yo acabo de probarlo y me funciona bien con el XAS 3.91, así que con el XAS 3.8 debería ser lo mismo. Al fin y al cabo todos los métodos importantes del script son alias en vez de reescrituras enteras, así que solo debes asegurarte de que el script New Items Display queda debajo de las demás modificaciones.

Buen aporte Eron, me gustó la idea ;D
Orochii me dió una idea relacionada, quizá sería interesante que las cosas se mostraran por orden de encuentro, o al menos que las que salen como "New" además de eso quedaran al final de la lista.
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Lithering-Games el 2017-05-08, 22:32

@Wecoc escribió:Yo acabo de probarlo y me funciona bien con el XAS 3.91, así que con el XAS 3.8 debería ser lo mismo. Al fin y al cabo todos los métodos importantes del script son alias en vez de reescrituras enteras, así que solo debes asegurarte de que el script New Items Display queda debajo de las demás modificaciones.
Pues tienes razón, asumí que no funcionaria pero lo hace.

Es un gran aporte, sin duda vendrá de ayuda
avatar
Lithering-Games
Principiante
Principiante

0/3

Créditos 535

Gracias : 21

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-05-12, 05:06

Eron… esta muy bueno el script… aunque me gustaría saber si se puede hacer un sistema similar que añada ese icons sobre el otro pero de forma un tanto permanente y que se pueda ir cambiando el icons de este hasta que finalmente se desactive con un interruptor.

Es que tengo en mi proyecto un sistema que limita la cantidad de algunos items en el inventario y esta cantidad va cambiando según pasa el juego. Lo malo es que esta capacidad no se ve en ninguna parte del menú y me gustaría mucho que fuera con tu sistema.

Ejemplo:
“Super Poción” solo se permite 1 en el inventario y me gustaría añadirle un icons con un 1 encima, luego vayas pasando el juego, este sube de capacidad a 10 para que cambie el icons a un n°10 y finalmente sea hasta 99 para retirar todos los icons sobrepuestos a este. Obviamente esto implica que el icons no solo se pueda usar en el de “Super Poción”, además no es el mismo valor (Icons) en todos y el desactivado seria de forma un tanto individual para cada icons, así que el script no creo que sea muy fácil crearlo….
Si lo haces fantástico (Pides versiones y yo te las doy, confiamos en ti Eron…)

Por cierto he hecho muchos pedidos... a la próxima subo unos script... intentare de que sean novedosos... es que hay muchos (es fabuloso que haya variedades) pero puede que lo comparta y finalmente termine por haber uno igual...
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-05-12, 08:33

¡Un Wecoc salvaje ha aparecido!

Lo que pides no es difícil, es cuestión de definir el máximo para cada ID de item en una array, dentro de Game_System. Ese máximo se comprobará al comprar objeto y al obtenerlo, y finalmente se usará para mostrar el icono "icon_1", "icon_10" o "icon_99" encima.

Prueba con éste script.

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

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

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

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

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

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

class Game_Party
  #----------------------------------------------------------------------------
  # * Gain Item
  #----------------------------------------------------------------------------
  alias force_gain_item gain_item unless $@
  def gain_item(item_id, n)
    force_gain_item(item_id, n)
    if item_id > 0 and n > 0
      if $game_system.item_max_data.keys.include?(item_id)
        max = $game_system.item_max_data[item_id]
        @items[item_id] = [[item_number(item_id) + n, 0].max, max].min
      end
    end
  end
end

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

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(item.id)
          item_max = $game_system.item_max_data[item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end


Última edición por Wecoc el 2017-05-14, 19:09, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-05-12, 09:07

Este no podre revisarlo ahora pero lo haré lo más pronto pueda...
Desde hoy me he vuelto un gran admirador y Fans de Wecoc XD notworthy
realmente se paso.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Hk Diamond el 2017-05-14, 07:20

Excelente, este script definitivamente ira a mi proyecto tambien jajaja, es un buen agregado para un menu
avatar
Hk Diamond
Iniciado
Iniciado

0/3

Créditos 11

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-05-14, 19:05

Amigo Wecoc cambia en la línea 74:

max = $game_system.item_max_data(item_id)

el paréntesis () por uno de estos [] o puede que a los usuarios les aparezca
estos mensajitos  XD….



Con está solución el script me funciono perfecto… gracias wecoc.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-05-14, 19:10

Hecho, gracias por avisar. A menudo scripteo demasiado "rápido" y luego ocurren éstas cosas.
Me alegra que te haya servido ;)
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Eron el 2017-05-16, 09:59

@Wecoc escribió:Orochii me dió una idea relacionada, quizá sería interesante que las cosas se mostraran por orden de encuentro, o al menos que las que salen como "New" además de eso quedaran al final de la lista.
Fácil, es reescribir el refresh de Window_Item y Window_EquipItem haciendo dos bucles en vez de uno: en el primero se descartan los New, y en el segundo al revés. Lo único que veo es que normalmente el órden es Items - Armas - Protectores, y haciendo lo que he dicho quizá luego el órden parezca algo... raro x'D Pero bueno, igualmente un rato que pueda explicaré como hacer ese tipo de cambios.

@AsFzKakarotto escribió:me gustaría saber si se puede hacer un sistema similar que añada ese icons sobre el otro pero de forma un tanto permanente y que se pueda ir cambiando el icons de este hasta que finalmente se desactive con un interruptor

Es una buena idea. Creo que esa cuestión ya fue resuelta, aunque lo del interruptor no estoy seguro de si puedes hacerlo con lo que te ha pasado Wecoc. Bueno ya me avisaréis =)

--------------

Alguien (no recuerdo quien, pido disculpas) me preguntó por chatbox si se puede hacer lo mismo con las habilidades. Es distinto porque van por actor, la configuración para saber si una habilidad es nueva se vuelve más liosa, pero aún así sigue siendo posible.
avatar
Eron
Principiante
Principiante

0/3

Créditos 3593

Gracias : 56

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-05-20, 19:39

@Eron escribió:
@Wecoc escribió:Orochii me dió una idea relacionada, quizá sería interesante que las cosas se mostraran por orden de encuentro, o al menos que las que salen como "New" además de eso quedaran al final de la lista.

Fácil, es reescribir el refresh de Window_Item y Window_EquipItem haciendo dos bucles en vez de uno: en el primero se descartan los New, y en el segundo al revés. Lo único que veo es que normalmente el órden es Items - Armas - Protectores, y haciendo lo que he dicho quizá luego el órden parezca algo... raro x'D Pero bueno, igualmente un rato que pueda explicaré como hacer ese tipo de cambios.

Creo que lo suyo en ese caso es restringir Window_Item a solo items, al fin y al cabo el equipo ya lo ves en la escena de equipo.
De ese modo te ahorras esas cosas raras.

He hecho la prueba, ponedlo dentro del script New Items Display al final de todo.

Código:
# * Wecoc's Add-on: Sort items (new ones appear last)

class Scene_Item
  def main
    data_check_main
    Data_Check.refresh_items
  end
end

class Window_Item < Window_Selectable
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        data_number = $game_system.item_data[i]
        if data_number == $game_party.item_number(item.id) or
            !Data_Check::BASIC_ITEMS.include?(item.id)
          @data.push($data_items[i])
        end
      end
    end
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        data_number = $game_system.item_data[i]
        if data_number != $game_party.item_number(item.id) and
            !Data_Check::BASIC_ITEMS.include?(item.id)
          @data.push($data_items[i])
        end
      end
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
end

Saludos.
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-05-24, 16:37

Vengo a dejar por aquí un script:

• Limita la cantidad de Items, Weapons y Armors en el Inventario
• Aparece dicho Artículo limitado con un mini-icons incorporado que indica la
 cantidad permitida en el inventario.

• Este Script INCLUYE la aparición de los mini-icons en la tienda...
 ojo... solo puede ser compatible con la tienda por defecto del maker.

Imagen demostrativa:



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

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

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

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

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

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

if @item.is_a?(RPG::Item)
 if $game_system.item_max_data.keys.include?(item.id)
    item_max = $game_system.item_max_data[item.id]
 end
end

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

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

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

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Weapon)
        if $game_system.weapon_max_data.keys.include?(@item.id)
          item_max = $game_system.weapon_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Armor)
        if $game_system.armor_max_data.keys.include?(@item.id)
          item_max = $game_system.armor_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end


Última edición por AsFzKakarotto el 2017-06-21, 02:32, editado 1 vez
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Eron el 2017-05-26, 07:54

Ese primer fallo es porque no se debió usar esa línea si se usa alias, o una cosa o la otra. Es muy fácil arreglar eso, pero no es exactamente el cambio que hiciste.

El segundo fallo también es una chorrada, en algunas lineas de esa parte en vez de item hay que usar @item. Con eso cambiado lo de comprar solo uno ya debería andar todo bien, aunque no estoy nada seguro =(
Lo otro que has dicho sobre éste tema no lo entiendo del todo, ya se encargará Wecoc supongo, me centro en lo principal.

Finalmente adaptarlo para weapons y armors un "copiar-pegar-cambiar nombre" así que es un cambio muy directo.

Si Wecoc no aparece antes creo que puedo hacerte esos tres apaños yo mismo, son cambios muy superficiales, no hay que entrar a pelearse con códigos malignos (???) x'DD
avatar
Eron
Principiante
Principiante

0/3

Créditos 3593

Gracias : 56

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-05-30, 00:20

No sé como se me escapan todos esos fallos, si siempre intento testear... En fin, creo que a veces voy con demasiadas prisas x_x"

Arreglé los tres puntos tal como dice Eron, en realidad en el primer punto sí se necesitan ámbos pero el alias se usa solo en caso de excepción.

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

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

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

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

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

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

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

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

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Weapon)
        if $game_system.weapon_max_data.keys.include?(@item.id)
          item_max = $game_system.weapon_max_data[@item.id]
        end
      end
      if @item.is_a?(RPG::Armor)
        if $game_system.armor_max_data.keys.include?(@item.id)
          item_max = $game_system.armor_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end

A ver si está todo en orden ésta vez.
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-06-04, 03:20

ok, lo reviso lo antes que pueda. Gracias Wecoc y a Eron también por sus menciones.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Lithering-Games el 2017-06-05, 20:30

Buenas. Como ya comente el script me resultaría de gran utilidad, y aunque funciona de maravilla en el menú de objetos, en el menú de equipos tiene errores. Funciona bien al principio pero a medida que aumentan los equipos recogidos, te dice que son nuevas armaduras viejas y no aparece nada en las nuevas.
avatar
Lithering-Games
Principiante
Principiante

0/3

Créditos 535

Gracias : 21

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-06-09, 18:46

Veo que Eron está desaparecido últimamente.

Yo no logro ver el origen del error que dices, quizá si detectas más concretamente en qué casos marca algo incorrectamente se pueda solucionar.
Se me ocurre que quizá el motivo del error sea que al vender el equipo y quedarte sin ninguno de ese tipo "desaprenda" que había llegado a tenerlo, por lo que si lo obtienes de nuevo volverá a salirte como nuevo. Si es ese el caso solo hay que tener más cuidado al almacenar weapon_data y armor_data.
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Lithering-Games el 2017-06-10, 00:40

@Wecoc escribió:Veo que Eron está desaparecido últimamente.

Yo no logro ver el origen del error que dices, quizá si detectas más concretamente en qué casos marca algo incorrectamente se pueda solucionar.
Se me ocurre que quizá el motivo del error sea que al vender el equipo y quedarte sin ninguno de ese tipo "desaprenda" que había llegado a tenerlo, por lo que si lo obtienes de nuevo volverá a salirte como nuevo. Si es ese el caso solo hay que tener más cuidado al almacenar weapon_data y armor_data.
Creo que no me he explicado bien. Para empezar, olvide decir que en mi proyecto no se pueden vender armaduras, hay una sola tienda y la uso para pociones, ya que es un juego estilo metroidvania para conseguir nuevo equipo, uno debe explorar el mapa. Ademas, testeando se me han acabado muchas veces las pociones y al volver a agarrar una el cartel no volvia a aparecer

El error del script se ve no cuando coges el primer equipable, ocurre  a partir del segundo o tercero. El cartel de new no aparece donde debería, sino que en otro protector y a veces incluso desfasado. Y no pasa en casos concretos, ocurre con todo nuevo protector que adquieras. Aquí dejo un par de imágenes por si no se me entiende.
Demostración:

3 armaduras para recoger en este mapa que hice para este ejemplo, el jugador empieza con una armadura de cuero equipada por defecto.

Tome una armadura y esta correctamente marcada como nueva, hasta ahora todo bien.
Tomo otra armadura.

Aquí, sin embargo, se ve el cartel en la armadura equivocada, y ademas esta desfasado.

Agarre la ultima armadura, y esta vez el cartel no aparece desfasado, pero si en la armadura equivocada.(La nueva armadura es la de plata, no la de hierro)


Gracias por el interés, espero el problema pueda ser solucionado.
avatar
Lithering-Games
Principiante
Principiante

0/3

Créditos 535

Gracias : 21

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Wecoc el 2017-06-10, 05:06

Vale, ahora sí se entiende, todo se resume en que usas una ventana Window_EquipItem diferente. Es cuestión de cambiar las coordenadas por las de los nuevos iconos.

Prueba ahora:

Código:
# * New Items Display (XP) - por Eron (no req. créditos)
# Versión editada

module Data_Check
 
  NEW_ITEM_ICON = "new_item" # Icon file
 
  # Mostrar New en batalla / Actualizar estado New en batalla
  DISPLAY_IN_BATTLE = true
  REFRESH_IN_BATTLE = true
 
  # IDs en los items que no sale el icono New pese a ser nuevos
  BASIC_ITEMS  = [1, 2, 3]
  BASIC_WEAPONS = []
  BASIC_ARMORS  = []
 
  module_function
  def refresh_items
    for i in 1...$data_items.size
      $game_system.item_data[i] = $game_party.item_number(i)
    end
  end
  def refresh_weapons
    for i in 1...$data_items.size
      $game_system.weapon_data[i] = $game_party.total_weapon_number(i)
    end
  end
  def refresh_armors
    for i in 1...$data_items.size
      $game_system.armor_data[i] = $game_party.total_armor_number(i)
    end
  end
end

class Game_Party
  def total_weapon_number(weapon_id)
    result = weapon_number(weapon_id)
    for i in 0...@actors.size
      result += 1 if @actors[i].weapon_id == weapon_id
    end
    return result
  end
  def total_armor_number(armor_id)
    result = armor_number(armor_id)
    for i in 0...@actors.size
      result += 1 if @actors[i].armor1_id == armor_id
      result += 1 if @actors[i].armor2_id == armor_id
      result += 1 if @actors[i].armor3_id == armor_id
      result += 1 if @actors[i].armor4_id == armor_id
    end
    return result
  end
end

class Game_System
  attr_accessor :item_data, :weapon_data, :armor_data
  alias data_check_new_ini initialize unless $@
  def initialize
    data_check_new_ini
    @item_data = {}
    @item_data.default = 0
    @weapon_data = {}
    @weapon_data.default = 0
    @armor_data = {}
    @armor_data.default = 0
  end
end

class Scene_Title
  alias data_set_at_start command_new_game unless $@
  def command_new_game
    data_set_at_start
    Data_Check.refresh_items
    Data_Check.refresh_weapons
    Data_Check.refresh_armors
  end
end

class Scene_Item
  alias data_check_main main unless $@
  def main
    data_check_main
    Data_Check.refresh_items
    Data_Check.refresh_weapons
    Data_Check.refresh_armors
  end
end

class Scene_Equip
  alias data_check_main main unless $@
  def main
    data_check_main
    Data_Check.refresh_weapons
    Data_Check.refresh_armors
  end
 
  alias data_refresh_equip update_item unless $@
  def update_item
    if Input.trigger?(Input::C)
      item = @item_window.item
      case item
      when RPG::Weapon
        data_number = $game_system.weapon_data[item.id]
        if data_number == 0
          total_number = $game_party.total_weapon_number(item.id)
          $game_system.weapon_data[item.id] = total_number
        end
      when RPG::Armor
        data_number = $game_system.armor_data[item.id]
        if data_number == 0
          total_number = $game_party.total_armor_number(item.id)
          $game_system.armor_data[item.id] = total_number
        end
      end
    end
    data_refresh_equip
  end
end

class Scene_Battle
  alias data_check_end_item end_item_select unless $@
  def end_item_select
    data_check_end_item
    if Data_Check::REFRESH_IN_BATTLE
      Data_Check.refresh_items
    end
  end
end

#----------------------------------------------------------------------------

class Window_EquipItem < Window_Selectable
  alias data_check_draw_item draw_item unless $@
  def draw_item(index)
    data_check_draw_item(index)
    item = @data[index]
    x = 4
    y = index * 32
    bitmap = RPG::Cache.icon(Data_Check::NEW_ITEM_ICON)
    case item
    when RPG::Weapon
      data_number = $game_system.weapon_data[item.id]
      if data_number != $game_party.total_weapon_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_WEAPONS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    when RPG::Armor
      data_number = $game_system.armor_data[item.id]
      if data_number != $game_party.total_armor_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_ARMORS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    end
  end
end

class Window_Item < Window_Selectable
  alias data_check_draw_item draw_item unless $@
  def draw_item(index)
    data_check_draw_item(index)
    return if $game_temp.in_battle && Data_Check::DISPLAY_IN_BATTLE == false
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    bitmap = RPG::Cache.icon(Data_Check::NEW_ITEM_ICON)
    case item
    when RPG::Item
      data_number = $game_system.item_data[item.id]
      if data_number != $game_party.item_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_ITEMS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    when RPG::Weapon
      data_number = $game_system.weapon_data[item.id]
      if data_number != $game_party.total_weapon_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_WEAPONS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    when RPG::Armor
      data_number = $game_system.armor_data[item.id]
      if data_number != $game_party.total_armor_number(item.id)
        if data_number == 0
          if !Data_Check::BASIC_ARMORS.include?(item.id)
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
          end
        end
      end
    end
  end
end

Solo cambié éstas líneas:

Código:
    x = 4
    y = index * 32

A ver si ahora te sirve.
avatar
Wecoc
Administrador
Administrador



Créditos 12087

Gracias : 519

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Lithering-Games el 2017-06-10, 15:23

¡Gracias! Ahora funciona de maravilla. Me había olvidado completamente de que cambie la Window_EquipItem , mala mía por no avisar.

De nuevo, gracias. Que tengas un buen día.
avatar
Lithering-Games
Principiante
Principiante

0/3

Créditos 535

Gracias : 21

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por AsFzKakarotto el 2017-06-12, 21:40

Listo.... he revisado tu ultima solución wecoc ( el 2017-05-30, 00:20) y
lamento decir que hay 2 errores más.

•Cuando se Añade una Weapon o Armor:



•Cuando se compra un Weapon o Armor:



He separado el Weapon y Armor para que solo sea con Items y ahora si quedo perfecto, pero es solo para items:

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

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

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

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

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

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

class Game_Party
  #----------------------------------------------------------------------------
  # * Gain Item
  #----------------------------------------------------------------------------
  alias force_gain_item gain_item unless $@
  def gain_item(item_id, n)
    force_gain_item(item_id, n)
    if item_id > 0 and n > 0
      if $game_system.item_max_data.keys.include?(item_id)
        max = $game_system.item_max_data[item_id]
        @items[item_id] = [[item_number(item_id), 0].max, max].min
      end
    end
  end
end

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

class Scene_Shop
  #----------------------------------------------------------------------------
  # * Update Buy
  #----------------------------------------------------------------------------
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      item_max = 99
      if @item.is_a?(RPG::Item)
        if $game_system.item_max_data.keys.include?(@item.id)
          item_max = $game_system.item_max_data[@item.id]
        end
      end
      if number >= item_max
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
end

e intente duplicar el script con el método mencionado por Eron, para que funcione con Weapon y Armor pero creo no poder hacerlo, por que hay muchos Comandos "Items" que cambiar y otros que no hay que cambiar y para mi es algo confuso... disculpen
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] New Items Display

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 1 de 2. 1, 2  Siguiente

Ver el tema anterior Ver el tema siguiente Volver arriba


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