Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Ver el tema anterior Ver el tema siguiente Ir abajo

Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-17, 03:06

Hola a todos, aquí vengo de nuevo a pedir ayuda ya que lo que he intentado para mostrar la Vida-HP de los personajes jugables en los mapas no me funciona ni con los scripts que encontré los cuales no me convencieron.
Lo que quiero es que cuando seleccione a cada personaje jugable aparezca una imagen de su face(rostro-cara) y a un lado (derecha) una barra de vida con su Vida en números y que vaya decreciendo conforme reciba daño y que aumente cuando se cure con cualquier método; con lo de mostrar la imagen no tengo ningún problema pero con los números disminuyendo y aumentando sí porque no sé como hacerlo.
Quiero lograr algo como esto:

Si alguien me ayuda a hacerlo se lo agradezco de antemano porque sería muy útil lograrlo ya que hay escenas en las que el jugador pierde vida si no usa un item para evitarlo.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Poka el 2018-06-18, 08:26

Hola Daniel, yo también uso ese tipo de barras de vida en mis proyectos.

Los números son imágenes también.

Spoiler:
Spoiler:

Tienes muchas maneras de hacerlo.

Haz imágenes del 0 al 9, entonces ve mostrando...
1 imagen del 1 al 9
2 imágenes del 10 al 99
3 imágenes de 100 al 999
Eso con los números.

Si lo combinas con interfaces y demás... buah!!! Te queda algo guay! :3
avatar
Poka
Guerrero
Guerrero

0/3

Créditos 2566

Gracias : 89

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-18, 21:48

Gracias por responder Poka y silvanash pero no me expliqué bien así que aquí voy de nuevo:
poner la vida con imágenes no es lo que quiero sino más bien ponerla por medio de llamado de script y que se vea como en este video del script XAS:

O como en este otro de Falcao:

No sé si alguien pueda hacer un pequeño script para ese fin o modificar el Xas cuyo enlace aparece abajo:
Xas
O este de Falcao cuyo script del hud copié a mi juego pero no funcionó:
Falcao
Si alguien me ayuda a lograrlo repito que se lo agradezco de antemano porque esa opción es muy importante para mi juego.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por newold el 2018-06-26, 08:46

@Dariel Lopez escribió:Hola a todos, aquí vengo de nuevo a pedir ayuda ya que lo que he intentado para mostrar la Vida-HP de los personajes jugables en los mapas no me funciona ni con los scripts que encontré los cuales no me convencieron.
Lo que quiero es que cuando seleccione a cada personaje jugable aparezca una imagen de su face(rostro-cara) y a un lado (derecha) una barra de vida con su Vida en números y que vaya decreciendo conforme reciba daño y que aumente cuando se cure con cualquier método; con lo de mostrar la imagen no tengo ningún problema pero con los números disminuyendo y aumentando sí porque no sé como hacerlo.
Quiero lograr algo como esto:

Si alguien me ayuda a hacerlo se lo agradezco de antemano porque sería muy útil lograrlo ya que hay escenas en las que el jugador pierde vida si no usa un item para evitarlo.

Te he hecho este script a ver si te sirve, ya me dices

Código:
#===============================================================================
class Newold_HP_GUI
  #-----------------------------------------------------------------------------
  def initialize
    
    # ··········································································
    # ················· COMIENZA CONFIGURACIÓN ·································
    # ··········································································
    
    # imagen vida llena
    @hp_full = "bar_hp_01" # imagen dentro de la carpeta Graphics/Pictures
    # imagen vida vacía
    @hp_empty = "bar_hp_02" # imagen dentro de la carpeta Graphics/Pictures
    # Fuente para el texto que muestra la vida
    @font = {
      :name         => "Verdana", # Nombre de la fuente (usar así: \"nombre\")
      :size         => 20, # Tamaño de la fuente
      :color        => Color.new(255,255,255), # Color para el texto
      :bold         => false, # Negrita
      :italic       => false, # Cursiva
      :outline      => true, # Texto bordeado por una línea
      :out_color    => Color.new(0,0,0), # Color de la línea de bordeado
      :shadow       => false # Mostrar el texto sombreado
    }
    # Posiciín De la barra de vida
    @hp_pos = {
      :x => 544 - 140,  # Posición X
      :y => 10          # Posición Y
    }
    # Posición del texto
    @text_pos = {
      :x            => 544 - 140,   # Posición X
      :y            => 10,          # Posición Y
      # Alineación del texto (0:normal, 1:Centrado, 2:Alineado a la derecha)
      :align        => 1,
      :width        => 100,         # Ancho del texto (nil para autoajustar)
      :height       => nil          # Alto del texto (nil para autoajustar)
    }
    # Opciones para mostrar la cara del personaje
    @face_options = {
      :show         => true,        # Mostrar la cara
      :x            => 544 - 180,   # Posición X
      :y            => 5,           # Posición Y
      :width        => 32,          # Ancho para la imagen
      :height       => 32           # Alto para la imagen
    }
    
    # ··········································································
    # ················· FIN CONFIGURACIÓN ······································
    # ··········································································
    
    font = Font.new
    font.name = @font[:name].to_s
    font.size = @font[:size].to_i
    font.color = @font[:color]
    font.bold = @font[:bold]==true
    font.italic = @font[:italic]==true
    font.outline = @font[:outline]==true
    font.out_color = @font[:out_color]
    font.shadow = @font[:shadow]==true
    @font = font
    @enabled = false
    @last_enabled = false
    @data = [nil, nil]
    draw
    disable
  end
  #-----------------------------------------------------------------------------
  def draw
    @viewport = Viewport.new
    @viewport.z = 1000000
    @bar = Sprite.new(@viewport)
    b1 = Cache.picture(@hp_full)
    @bar.bitmap = Bitmap.new(b1.width, b1.height)
    @bar.z = 0
    @bar.x = @hp_pos[:x]
    @bar.y = @hp_pos[:y]
    
    @text = Sprite.new(@viewport)
    @text.z = 10
    @text.x = @text_pos[:x]
    @text.y = @text_pos[:y]
    
    @face = Sprite.new(@viewport)
    @face.bitmap = Bitmap.new(@face_options[:width],@face_options[:height])
    @face.z = 20
    @face.x = @face_options[:x]
    @face.y = @face_options[:y]
    
    refresh
  end
  #-----------------------------------------------------------------------------
  def update
    return unless @enabled
    refresh
  end
  #-----------------------------------------------------------------------------
  def refresh
    draw if @bar.disposed?
    hp = $game_party.members[0].hp rescue 0
    mhp = $game_party.members[0].mhp rescue 0
    if hp == @data[0] and mhp == @data[1]
      return
    end
    @data = [hp, mhp]
    
    # Refresh Bar
    b1 = Cache.picture(@hp_full)
    b2 = Cache.picture(@hp_empty)
    @bar.bitmap.clear
    @bar.bitmap.stretch_blt(@bar.bitmap.rect, b2, b2.rect)
    w = (b1.width * (hp.to_f / mhp.to_f)).to_i rescue 0
    if w > 0
      h = b1.height
      rect = Rect.new(0, 0, w, h)
      @bar.bitmap.stretch_blt(rect, b1, b1.rect)
    end
    
    # Refresh Text
    @text.bitmap.dispose rescue nil
    t = "#{hp} / #{mhp}"
    b = Bitmap.new(1,1)
    b.font = @font.dup
    size = b.text_size(t)
    b.dispose
    w = (@text_pos[:width].to_i < 1) ? size.width : @text_pos[:width].to_i
    h = (@text_pos[:height].to_i < 1) ? size.height : @text_pos[:height].to_i
    @text.bitmap = Bitmap.new(w, h)
    @text.bitmap.font = @font.dup
    @text.bitmap.draw_text(0, 0, w, h, t, @text_pos[:align])
    
    # Refresh Face
    @face.bitmap.clear
    if @face_options[:show] == true
      begin
        face_name = $game_party.members[0].face_name
        face_index = $game_party.members[0].face_index
        bitmap = Cache.face(face_name)
        rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
        @face.bitmap.stretch_blt(@face.bitmap.rect, bitmap, rect)
        bitmap.dispose
      rescue
      end
    end
  end
  #-----------------------------------------------------------------------------
  def enable
    set_enabled(true)
    show_hud
  end
  #-----------------------------------------------------------------------------
  def disable
    @last_enabled = @enabled
    @enabled = false
    show_hud
  end
  #-----------------------------------------------------------------------------
  def set_enabled(value)
    @enabled = @last_enabled = value
  end
  #-----------------------------------------------------------------------------
  def set_previous_enable
    @enabled = @last_enabled
    @data = [nil, nil]
    show_hud
  end
  #-----------------------------------------------------------------------------
  def show_hud
    draw if @bar.disposed?
    @bar.visible = @text.visible = @face.visible = @enabled
  end
  #-----------------------------------------------------------------------------
  def enabled?
    return @last_enabled
  end
  #-----------------------------------------------------------------------------
  def dispose
    @bar.dispose
    @text.dispose
    @face.dispose
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

#===============================================================================
class Scene_Title < Scene_Base
  #-----------------------------------------------------------------------------
  alias start_newold_hp_gui start
  def start
    $hp_gui.set_enabled(false)
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

#===============================================================================
class Scene_Map < Scene_Base
  #-----------------------------------------------------------------------------
  alias update_newold_hp_gui update
  def update
    update_newold_hp_gui
    $hp_gui.update
  end
  #-----------------------------------------------------------------------------
  alias start_newold_hp_gui start
  def start
    $hp_gui.set_previous_enable
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
  alias terminate_newold_hp_gui terminate
  def terminate
    $hp_gui.disable
    terminate_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


#===============================================================================
module DataManager
  #-----------------------------------------------------------------------------
  class << self
    # --------------------------------------------------------------------
    alias make_save_contents_newold_hp_gui make_save_contents
    def make_save_contents
      contents = make_save_contents_newold_hp_gui
      contents[:newold_hp_gui_enabled]        = $hp_gui.enabled?
      contents
    end
    # --------------------------------------------------------------------
    alias extract_save_contents_newold_hp_gui extract_save_contents
    def extract_save_contents(contents)
      extract_save_contents_newold_hp_gui(contents)
      $hp_gui.set_enabled(contents[:newold_hp_gui_enabled] == true)
    end
    # --------------------------------------------------------------------
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


$hp_gui = Newold_HP_GUI.new

El script usa dos imágenes que deben estar en la carpeta Graphics/Pictures, yo te he dibujado 2 barras, tu las puedes cambiar si quieres

Bajar imágenes

En la primera parte del script puedes configurar cosas, viene con descripciones todo para saber que tocas :D a ver si te sirve.


Para activar la barra de vida tienes que usar el comando llamar script y poner esto:

$hp_gui.enable


Para desactivar la barra de vida tienes que usar el comando llamar script y poner esto:

$hp_gui.disable


El script mostrará una barra de vida + el texto que dice la vida que tiene/le falta (GUI). Se actualiza en tiempo real y siempre muestra la vida del primer personaje de la party, el que controlas. también te da la opción de mostrar la cara del personaje.

Si quieres que la misma GUI sirva para mostrar diferentes cosas (hp, mp, exp... etc) habría que hacer algunos pequeños cambios al script para poder hacer eso

y una última cosa el tamaño de la barra de vida será el tamaño de la imagen que uses en @hp_full (yo te dibuje una de 100x20)

*Edit: Añadido que muestre la cara del personaje también, que se me había olvidado xd

Edit2: Bueno ya que me he puesto te lo completo un poco, esta versión modificada del mismo script permite añadir más barras a la pantalla, abajo del script viene como configurar las barras extras y hacer que muestren o hp, o mp o exp, así como configurar como se muestra la información:

Código:
#===============================================================================
class Newold_Bars_GUI
  #-----------------------------------------------------------------------------
  def initialize
    @bars = []
    @bars << Bar.new
  end
  #-----------------------------------------------------------------------------
  def add_bar
    @bars << Bar.new
  end
  #-----------------------------------------------------------------------------
  def enable(id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.enable #rescue nil
      }
    else
      @bars[id].enable rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def disable(id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.disable rescue nil
      }
    else
      @bars[id].disable rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def set_enabled(value, id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.set_enabled(value) rescue nil
      }
    else
      @bars[id].set_enabled(value) rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def set_previous_enable(id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.set_previous_enable rescue nil
      }
    else
      @bars[id].set_previous_enable rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def update
    @bars.each{|bar|
      bar.update #rescue next
    }
  end
  #-----------------------------------------------------------------------------
  def dispose
    @bars.each{|bar|
      bar.dispose rescue next
    }
  end
  #-----------------------------------------------------------------------------
  def set_bars_data(id, hp_full_image="", hp_empty_image="", x=0, y=0)
    @bars[id.to_i].set_bars_data(hp_full_image, hp_empty_image, x, y)
  end
  #-----------------------------------------------------------------------------
  def set_font_data(id, font_data)
    @bars[id.to_i].set_font_data(font_data)
  end
  #-----------------------------------------------------------------------------
  def set_text_data(id, show=true, x=0, y=0, align=0,
    width=nil, height=nil, format="<a>/<b>")
    @bars[id.to_i].set_text_data(show, x, y, align, width, height, format)
  end
  #-----------------------------------------------------------------------------
  def set_face_data(id, show, x, y, width, height)
    @bars[id.to_i].set_face_data(show, x, y, width, height)
  end
  #-----------------------------------------------------------------------------
  def set_type(id, type)
    @bars[id.to_i].set_type(type)
  end
  #-----------------------------------------------------------------------------
  
  
  
  class Bar
    #---------------------------------------------------------------------------
    def initialize
      
      # ········································································
      # ················· COMIENZA CONFIGURACIÓN ·······························
      # ········································································
      
      # Toda esta configuración son los valores por defecto que tendrá
      # la barra recién creada
      
      # imagen vida llena
      @hp_full = "bar_hp_01" # imagen dentro de la carpeta Graphics/Pictures
      # imagen vida vacía
      @hp_empty = "bar_hp_02" # imagen dentro de la carpeta Graphics/Pictures
      # Fuente para el texto que muestra la vida
      @font = {
        # Nombre de la fuente
        :name         => "Verdana",
        # Tamaño de la fuente
        :size         => 20,
        # Color para el texto
        :color        => Color.new(255,255,255),
        # Negrita (true or false)
        :bold         => false,
        # Cursiva (true or false)
        :italic       => false,
        # Texto bordeado por una línea (true or false)
        :outline      => true,
        # Color de la línea de bordeado
        :out_color    => Color.new(0,0,0),
        # Mostrar el texto sombreado (true or false)
        :shadow       => false
      }
      # Posición De la barra de vida
      @hp_pos = {
        :x => 544 - 140,  # Posición X
        :y => 10          # Posición Y
      }
      # Opciones para mostrar el texto
      @text_pos = {
        # Mostrar u ocultar el texto (true or false)
        :show         => true,
        # Posición X
        :x            => 544 - 140,
        # Posición Y
        :y            => 10,
        # Alineación del texto (0:normal, 1:Centrado, 2:Alineado a la derecha)
        :align        => 1,
        # Ancho del texto (nil = autoajustar)
        :width        => 100,
        # Alto del texto (nil = autoajustar)
        :height       => nil,
        # Formato del texto (<a> = Valor actual, <b> = Valor Máximo)
        :format       => "<a> / <b>"
      }
      # Opciones para mostrar la cara del personaje
      @face_options = {
        # Mostrar la cara (true or false)
        :show         => true,
        # Posición X
        :x            => 544 - 180,
        # Posición Y
        :y            => 5,
        # Ancho para la imagen
        :width        => 32,
        # Alto para la imagen
        :height       => 32
      }
      
      # Tipo de dato a mostrar en la barra
      # 0 = HP
      # 1 = MP
      # 2 = Experience
      @type = 0
      
      # ········································································
      # ················· FIN CONFIGURACIÓN ····································
      # ········································································
      
      font = Font.new
      font.name = @font[:name].to_s
      font.size = @font[:size].to_i
      font.color = @font[:color]
      font.bold = @font[:bold]==true
      font.italic = @font[:italic]==true
      font.outline = @font[:outline]==true
      font.out_color = @font[:out_color]
      font.shadow = @font[:shadow]==true
      @font = font
      @enabled = false
      @last_enabled = false
      @data = [nil, nil]
      draw
      disable
    end
    #---------------------------------------------------------------------------
    def set_bars_data(hp_full_image, hp_empty_image, x, y)
      @hp_empty = hp_empty_image.to_s
      @hp_full = hp_full_image.to_s
      @hp_pos = {
        :x => x.to_i,
        :y => y.to_i
      }
      begin
        @bar.x = @hp_pos[:x]
        @bar.y = @hp_pos[:y]
      rescue
      end
    end
    #---------------------------------------------------------------------------
    def set_font_data(font_data)
      font = Font.new
      font.name = font_data[:name].to_s
      font.size = font_data[:size].to_i
      font.color = font_data[:color]
      font.bold = font_data[:bold]==true
      font.italic = font_data[:italic]==true
      font.outline = font_data[:outline]==true
      font.out_color = font_data[:out_color]
      font.shadow = font_data[:shadow]==true
      @font = font
    end
    #---------------------------------------------------------------------------
    def set_text_data(show=true, x=0, y=0, align=0, width=nil,
      height = nil, format="<a>/<b>")
      @text_pos = {
        :show         => show==true,
        :x            => x.to_i,
        :y            => y.to_i,
        :align        => align.to_i,
        :width        => width.nil? ? nil : width.to_i,
        :height       => height.nil? ? nil : height.to_i,
        :format       => format.to_s
      }
      begin
        @text.x = @text_pos[:x]
        @text.y = @text_pos[:y]
      rescue
      end
    end
    #---------------------------------------------------------------------------
    def set_face_data(show, x, y, width, height)
      @face_options = {
        :show         => show==true,
        :x            => x.to_i,
        :y            => y.to_i,
        :width        => [1, width.to_i].max,
        :height       => [1, height.to_i].max
      }
      begin
        @face.x = @face_options[:x]
        @face.y = @face_options[:y]
      rescue
      end
    end
    #---------------------------------------------------------------------------
    def set_type(type)
      @type = type.to_i
    end
    #---------------------------------------------------------------------------
    def draw
      @viewport = Viewport.new
      @viewport.z = 1000000
      @bar = Sprite.new(@viewport)
      b1 = Cache.picture(@hp_full)
      @bar.bitmap = Bitmap.new(b1.width, b1.height)
      @bar.z = 0
      @bar.x = @hp_pos[:x]
      @bar.y = @hp_pos[:y]
      
      @text = Sprite.new(@viewport)
      @text.z = 10
      @text.x = @text_pos[:x]
      @text.y = @text_pos[:y]
      
      @face = Sprite.new(@viewport)
      @face.bitmap = Bitmap.new(@face_options[:width],@face_options[:height])
      @face.z = 20
      @face.x = @face_options[:x]
      @face.y = @face_options[:y]
      
      refresh
    end
    #---------------------------------------------------------------------------
    def update
      return unless @enabled
      refresh
    end
    #---------------------------------------------------------------------------
    def refresh
      draw if @bar.disposed?
      
      value1, value2, value3 = get_values
 
      if value1 == @data[0] and value2 == @data[1]
        return
      end
      @data = [value1, value2]
      
      # Refresh Bar
      b1 = Cache.picture(@hp_full)
      b2 = Cache.picture(@hp_empty)
      @bar.bitmap.clear
      @bar.bitmap.stretch_blt(@bar.bitmap.rect, b2, b2.rect)
      w = (b1.width * (value1.to_f / value2.to_f)).to_i rescue 0
      if w > 0
        h = b1.height
        rect = Rect.new(0, 0, w, h)
        @bar.bitmap.stretch_blt(rect, b1, b1.rect)
      end
      
      # Refresh Text
      @text.bitmap.dispose rescue nil
      if @text_pos[:show] == true
        t = value3
        b = Bitmap.new(1,1)
        b.font = @font.dup
        size = b.text_size(t)
        b.dispose
        w = (@text_pos[:width].to_i < 1) ? size.width : @text_pos[:width].to_i
        h = (@text_pos[:height].to_i < 1) ? size.height : @text_pos[:height].to_i
        @text.bitmap = Bitmap.new(w, h)
        @text.bitmap.font = @font.dup
        @text.bitmap.draw_text(0, 0, w, h, t, @text_pos[:align])
      end
      
      # Refresh Face
      if @face_options[:show] == true
        begin
          @face.bitmap.clear
          face_name = $game_party.members[0].face_name
          face_index = $game_party.members[0].face_index
          bitmap = Cache.face(face_name)
          rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
          @face.bitmap.stretch_blt(@face.bitmap.rect, bitmap, rect)
          bitmap.dispose
        rescue
        end
      end
    end
    #---------------------------------------------------------------------------
    def get_values
      begin
        actor = $game_party.members[0]
      rescue
        return 0, 0, " "
      end

      case @type
      when 0 # HP
        value1 = actor.hp rescue 0
        value2 = actor.mhp rescue 0
      when 1 # MP
        value1 = actor.mp rescue 0
        value2 = actor.mmp rescue 0
      when 2 # Experience
        value1 = actor.max_level? ? "-------" : actor.exp
        value2 = actor.max_level? ? "-------" : actor.next_level_exp - actor.exp
      else
        value1 = 0
        value2 = 0
      end
      
      value3 = @text_pos[:format].to_s.dup
      value3.gsub!("<a>", value1.to_s)
      value3.gsub!("<b>", value2.to_s)
      
      return value1, value2, value3
    end
    #---------------------------------------------------------------------------
    def enable
      set_enabled(true)
      show_hud
    end
    #---------------------------------------------------------------------------
    def disable
      @last_enabled = @enabled
      @enabled = false
      show_hud
    end
    #---------------------------------------------------------------------------
    def set_enabled(value)
      @enabled = @last_enabled = value
    end
    #---------------------------------------------------------------------------
    def set_previous_enable
      @enabled = @last_enabled
      @data = [nil, nil]
      show_hud
    end
    #---------------------------------------------------------------------------
    def show_hud
      draw if @bar.disposed?
      @bar.visible = @text.visible = @face.visible = @enabled
    end
    #---------------------------------------------------------------------------
    def enabled?
      return @last_enabled
    end
    #---------------------------------------------------------------------------
    def dispose
      @bar.dispose
      @text.dispose
      @face.dispose
    end
    #---------------------------------------------------------------------------
  end
  #=============================================================================
end
#===============================================================================


#===============================================================================
class Scene_Title < Scene_Base
  #-----------------------------------------------------------------------------
  alias start_newold_hp_gui start
  def start
    $GUI.set_enabled(false)
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

#===============================================================================
class Scene_Map < Scene_Base
  #-----------------------------------------------------------------------------
  alias update_newold_hp_gui update
  def update
    update_newold_hp_gui
    $GUI.update
  end
  #-----------------------------------------------------------------------------
  alias start_newold_hp_gui start
  def start
    $GUI.set_previous_enable(nil)
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
  alias terminate_newold_hp_gui terminate
  def terminate
    $GUI.disable(nil)
    terminate_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


#===============================================================================
module DataManager
  #-----------------------------------------------------------------------------
  class << self
    # --------------------------------------------------------------------
    alias make_save_contents_newold_hp_gui make_save_contents
    def make_save_contents
      contents = make_save_contents_newold_hp_gui
      contents[:newold_hp_gui_enabled]        = $GUI.enabled?
      contents
    end
    # --------------------------------------------------------------------
    alias extract_save_contents_newold_hp_gui extract_save_contents
    def extract_save_contents(contents)
      extract_save_contents_newold_hp_gui(contents)
      $GUI.set_enabled(contents[:newold_hp_gui_enabled] == true)
    end
    # --------------------------------------------------------------------
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

# Crea la primera barra configurada según los valores
# definidos por defecto
$GUI = Newold_Bars_GUI.new

=begin

  Para añadir más barras seguir el siguiente esquema (Puedes Copiar y pegar
  y después cambiar los valores):
  
  # ----------------------------------------------------------------------------
  # ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
  
  # ············································································
  # ⏺️ Crear una nueva barra ⏺️
  $GUI.add_bar
  # ············································································
  
  # Editar las características de una barra
  
  # ············································································
  id = 0 # ID de la barra a editar
  # ············································································
  
  # ············································································
  # ⏺️ Configuración de la Barra ⏺️
  # * imagen vida llena:
  hp_full_image = "bar_hp_01"   # imagen dentro de la carpeta Graphics/Pictures
  # * imagen vida vacía:
  hp_empty_image = "bar_hp_02"  # imagen dentro de la carpeta Graphics/Pictures
  # * Posición:
  x = 0                         # Posición X
  y = 0                         # Posición Y
  $GUI.set_bars_data(id, hp_full_image, hp_empty_image, x, y)
  # ············································································
  
  # ············································································
  # ⏺️ Configuración de la fuente ⏺️
  font_data = {
    # Nombre de la fuente
    :name         => "Verdana",
    # Tamaño de la fuente
    :size         => 20,
    # Color para el texto
    :color        => Color.new(255,255,255),
    # Negrita (true or false)
    :bold         => false,
    # Cursiva (true or false)
    :italic       => false,
    # Texto bordeado por una línea (true or false)
    :outline      => true,
    # Color de la línea de bordeado
    :out_color    => Color.new(0,0,0),
    # Mostrar el texto sombreado (true or false)
    :shadow       => false
  }
  $GUI.set_font_data(id, font_data)
  # ············································································
  
  # ············································································
  # ⏺️ Configuración del texto ⏺️
  show   = true         # Mostrar u ocultar el texto (true or false)
  x      = 0            # Posición X
  y      = 0            # Posición Y
  align  = 1            # Alineación del texto (0:normal, 1:Centrado, 2:derecha)
  width  = 100          # Ancho del texto (nil = autoajustar)
  height = nil          # Alto del texto (nil = autoajustar)
  format = "<a> / <b>"  # texto (<a> = Valor actual, <b> = Valor Máximo)
  $GUI.set_text_data(id, show, x, y, align, width, height, format)
  # ············································································
  
  # ············································································
  # ⏺️ Configuración de la Cara ⏺️
  show    = true        # Mostrar la cara (true or false)
  x       = 0           # Posición X
  y       = 0           # Posición Y
  width   = 32          # Ancho para la imagen
  height  = 32          # Alto para la imagen
  $GUI.set_face_data(id, show, x, y, width, height)
  # ············································································
  
  # ············································································
  # ⏺️ Configuración del tipo de dato a mostrar ⏺️
  # 0 = HP
  # 1 = MP
  # 2 = Experience
  type = 1
  $GUI.set_type(id, type)
  # ············································································
  
  # ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  # ----------------------------------------------------------------------------
  
  # -------------------------------------------------------------
  
=end


# ▼▼▼▼ Añade aquí debajo las Barras que necesites y/o configura las barras ▼▼▼▼


En este segundo script las barras se activan/desactivan así:

Para activar la barra tienes que usar el comando llamar script y poner esto:

$GUI.enable(ID de la barra o nil para activarlas todas)


Para desactivar la barra tienes que usar el comando llamar script y poner esto:

$GUI.disable(ID de la barra o nil para desactivarlas todas)
avatar
newold
Principiante
Principiante

0/3

Créditos 1276

Gracias : 137

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-26, 22:06

Muchísimas gracias por tomarte la molestia de crear un script para sacarme del apuro newold; ya probé el segundo pero solo con la barra de HP, y más tarde cuando me despierte (porque voy a dormir un poco)probaré a ver si puedo agregar las barras de MP y Exp.
Gracias de nuevo porque esas barras le dan mucha más vista a cualquier juego.
Edito: Copié la parte del script que sirve para poner más barras, en este caso la de MP, pero me marca este error:

¿Hice algo mal o te faltaría ponerle algo más al script?
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por newold el 2018-06-27, 07:35

no se, a mi me funciona, revisé por si había colgado mal el script y no le veo nada raro. De todas formas te pego aquí otra vez el script que acabo de comprobar, añadiendo la barra de mp

Código:
#===============================================================================
class Newold_Bars_GUI
  #-----------------------------------------------------------------------------
  def initialize
    @bars = []
    @bars << Bar.new
  end
  #-----------------------------------------------------------------------------
  def add_bar
    @bars << Bar.new
  end
  #-----------------------------------------------------------------------------
  def enable(id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.enable #rescue nil
      }
    else
      @bars[id].enable rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def disable(id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.disable rescue nil
      }
    else
      @bars[id].disable rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def set_enabled(value, id=0)
    return if @bars.size == 0
    if id.nil?
      if value.is_a?(Array)
        for i in 0...value.size
          @bars[i].set_enabled(value[i]==true) rescue next
        end
      else
        @bars.each{|bar|
          bar.set_enabled(value) rescue nil
        }
      end
    else
      @bars[id].set_enabled(value) rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def set_previous_enable(id=0)
    return if @bars.size == 0
    if id.nil?
      @bars.each{|bar|
        bar.set_previous_enable rescue nil
      }
    else
      @bars[id].set_previous_enable rescue nil
    end
  end
  #-----------------------------------------------------------------------------
  def update
    @bars.each{|bar|
      bar.update #rescue next
    }
  end
  #-----------------------------------------------------------------------------
  def dispose
    @bars.each{|bar|
      bar.dispose rescue next
    }
  end
  #-----------------------------------------------------------------------------
  def set_bars_data(id, hp_full_image="", hp_empty_image="", x=0, y=0)
    @bars[id.to_i].set_bars_data(hp_full_image, hp_empty_image, x, y)
  end
  #-----------------------------------------------------------------------------
  def set_font_data(id, font_data)
    @bars[id.to_i].set_font_data(font_data)
  end
  #-----------------------------------------------------------------------------
  def set_text_data(id, show=true, x=0, y=0, align=0,
    width=nil, height=nil, format="<a>/<b>")
    @bars[id.to_i].set_text_data(show, x, y, align, width, height, format)
  end
  #-----------------------------------------------------------------------------
  def set_face_data(id, show, x, y, width, height)
    @bars[id.to_i].set_face_data(show, x, y, width, height)
  end
  #-----------------------------------------------------------------------------
  def set_type(id, type)
    @bars[id.to_i].set_type(type)
  end
  #-----------------------------------------------------------------------------
  def enabled?
    result = []
    @bars.each{|bar| result << bar.enabled? }
    return result
  end
  #-----------------------------------------------------------------------------
 
 
 
  class Bar
    #---------------------------------------------------------------------------
    def initialize
     
      # ········································································
      # ················· COMIENZA CONFIGURACIÓN ·······························
      # ········································································
     
      # Toda esta configuración son los valores por defecto que tendrá
      # la barra recién creada
     
      # imagen vida llena
      @hp_full = "bar_hp_01" # imagen dentro de la carpeta Graphics/Pictures
      # imagen vida vacía
      @hp_empty = "bar_hp_02" # imagen dentro de la carpeta Graphics/Pictures
      # Fuente para el texto que muestra la vida
      @font = {
        # Nombre de la fuente
        :name        => "Verdana",
        # Tamaño de la fuente
        :size        => 20,
        # Color para el texto
        :color        => Color.new(255,255,255),
        # Negrita (true or false)
        :bold        => false,
        # Cursiva (true or false)
        :italic      => false,
        # Texto bordeado por una línea (true or false)
        :outline      => true,
        # Color de la línea de bordeado
        :out_color    => Color.new(0,0,0),
        # Mostrar el texto sombreado (true or false)
        :shadow      => false
      }
      # Posición De la barra de vida
      @hp_pos = {
        :x => 544 - 140,  # Posición X
        :y => 10          # Posición Y
      }
      # Opciones para mostrar el texto
      @text_pos = {
        # Mostrar u ocultar el texto (true or false)
        :show        => true,
        # Posición X
        :x            => 544 - 140,
        # Posición Y
        :y            => 10,
        # Alineación del texto (0:normal, 1:Centrado, 2:Alineado a la derecha)
        :align        => 1,
        # Ancho del texto (nil = autoajustar)
        :width        => 100,
        # Alto del texto (nil = autoajustar)
        :height      => nil,
        # Formato del texto (<a> = Valor actual, <b> = Valor Máximo)
        :format      => "<a> / <b>"
      }
      # Opciones para mostrar la cara del personaje
      @face_options = {
        # Mostrar la cara (true or false)
        :show        => true,
        # Posición X
        :x            => 544 - 180,
        # Posición Y
        :y            => 5,
        # Ancho para la imagen
        :width        => 32,
        # Alto para la imagen
        :height      => 32
      }
     
      # Tipo de dato a mostrar en la barra
      # 0 = HP
      # 1 = MP
      # 2 = Experience
      @type = 0
     
      # ········································································
      # ················· FIN CONFIGURACIÓN ····································
      # ········································································
     
      font = Font.new
      font.name = @font[:name].to_s
      font.size = @font[:size].to_i
      font.color = @font[:color]
      font.bold = @font[:bold]==true
      font.italic = @font[:italic]==true
      font.outline = @font[:outline]==true
      font.out_color = @font[:out_color]
      font.shadow = @font[:shadow]==true
      @font = font
      @enabled = false
      @last_enabled = false
      @data = [nil, nil]
      draw
      disable
    end
    #---------------------------------------------------------------------------
    def set_bars_data(hp_full_image, hp_empty_image, x, y)
      @hp_empty = hp_empty_image.to_s
      @hp_full = hp_full_image.to_s
      @hp_pos = {
        :x => x.to_i,
        :y => y.to_i
      }
      begin
        @bar.x = @hp_pos[:x]
        @bar.y = @hp_pos[:y]
      rescue
      end
    end
    #---------------------------------------------------------------------------
    def set_font_data(font_data)
      font = Font.new
      font.name = font_data[:name].to_s
      font.size = font_data[:size].to_i
      font.color = font_data[:color]
      font.bold = font_data[:bold]==true
      font.italic = font_data[:italic]==true
      font.outline = font_data[:outline]==true
      font.out_color = font_data[:out_color]
      font.shadow = font_data[:shadow]==true
      @font = font
    end
    #---------------------------------------------------------------------------
    def set_text_data(show=true, x=0, y=0, align=0, width=nil,
      height = nil, format="<a>/<b>")
      @text_pos = {
        :show        => show==true,
        :x            => x.to_i,
        :y            => y.to_i,
        :align        => align.to_i,
        :width        => width.nil? ? nil : width.to_i,
        :height      => height.nil? ? nil : height.to_i,
        :format      => format.to_s
      }
      begin
        @text.x = @text_pos[:x]
        @text.y = @text_pos[:y]
      rescue
      end
    end
    #---------------------------------------------------------------------------
    def set_face_data(show, x, y, width, height)
      @face_options = {
        :show        => show==true,
        :x            => x.to_i,
        :y            => y.to_i,
        :width        => [1, width.to_i].max,
        :height      => [1, height.to_i].max
      }
      begin
        @face.x = @face_options[:x]
        @face.y = @face_options[:y]
      rescue
      end
    end
    #---------------------------------------------------------------------------
    def set_type(type)
      @type = type.to_i
    end
    #---------------------------------------------------------------------------
    def draw
      @viewport = Viewport.new
      @viewport.z = 1000000
      @bar = Sprite.new(@viewport)
      b1 = Cache.picture(@hp_full)
      @bar.bitmap = Bitmap.new(b1.width, b1.height)
      @bar.z = 0
      @bar.x = @hp_pos[:x]
      @bar.y = @hp_pos[:y]
     
      @text = Sprite.new(@viewport)
      @text.z = 10
      @text.x = @text_pos[:x]
      @text.y = @text_pos[:y]
     
      @face = Sprite.new(@viewport)
      @face.bitmap = Bitmap.new(@face_options[:width],@face_options[:height])
      @face.z = 20
      @face.x = @face_options[:x]
      @face.y = @face_options[:y]
     
      refresh
    end
    #---------------------------------------------------------------------------
    def update
      return unless @enabled
      refresh
    end
    #---------------------------------------------------------------------------
    def refresh
      draw if @bar.disposed?
     
      value1, value2, value3 = get_values
 
      if value1 == @data[0] and value2 == @data[1]
        return
      end
      @data = [value1, value2]
     
      # Refresh Bar
      b1 = Cache.picture(@hp_full)
      b2 = Cache.picture(@hp_empty)
      @bar.bitmap.clear
      @bar.bitmap.stretch_blt(@bar.bitmap.rect, b2, b2.rect)
      w = (b1.width * (value1.to_f / value2.to_f)).to_i rescue 0
      if w > 0
        h = b1.height
        rect = Rect.new(0, 0, w, h)
        @bar.bitmap.stretch_blt(rect, b1, b1.rect)
      end
     
      # Refresh Text
      @text.bitmap.dispose rescue nil
      if @text_pos[:show] == true
        t = value3
        b = Bitmap.new(1,1)
        b.font = @font.dup
        size = b.text_size(t)
        b.dispose
        w = (@text_pos[:width].to_i < 1) ? size.width : @text_pos[:width].to_i
        h = (@text_pos[:height].to_i < 1) ? size.height : @text_pos[:height].to_i
        @text.bitmap = Bitmap.new(w, h)
        @text.bitmap.font = @font.dup
        @text.bitmap.draw_text(0, 0, w, h, t, @text_pos[:align])
      end
     
      # Refresh Face
      if @face_options[:show] == true
        begin
          @face.bitmap.clear
          face_name = $game_party.members[0].face_name
          face_index = $game_party.members[0].face_index
          bitmap = Cache.face(face_name)
          rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
          @face.bitmap.stretch_blt(@face.bitmap.rect, bitmap, rect)
          bitmap.dispose
        rescue
        end
      end
    end
    #---------------------------------------------------------------------------
    def get_values
      begin
        actor = $game_party.members[0]
      rescue
        return 0, 0, " "
      end
     
      case @type
      when 0 # HP
        value1 = actor.hp rescue 0
        value2 = actor.mhp rescue 0
      when 1 # MP
        value1 = actor.mp rescue 0
        value2 = actor.mmp rescue 0
      when 2 # Experience
        value1 = actor.max_level? ? "-------" : actor.exp
        value2 = actor.max_level? ? "-------" : actor.next_level_exp - actor.exp
      else
        value1 = 0
        value2 = 0
      end
     
      value3 = @text_pos[:format].to_s.dup
      value3.gsub!("<a>", value1.to_s)
      value3.gsub!("<b>", value2.to_s)
     
      return value1, value2, value3
    end
    #---------------------------------------------------------------------------
    def enable
      set_enabled(true)
      show_hud
    end
    #---------------------------------------------------------------------------
    def disable
      @last_enabled = @enabled
      @enabled = false
      show_hud
    end
    #---------------------------------------------------------------------------
    def set_enabled(value)
      @enabled = @last_enabled = value
    end
    #---------------------------------------------------------------------------
    def set_previous_enable
      @enabled = @last_enabled
      @data = [nil, nil]
      show_hud
    end
    #---------------------------------------------------------------------------
    def show_hud
      draw if @bar.disposed?
      @bar.visible = @text.visible = @face.visible = @enabled
    end
    #---------------------------------------------------------------------------
    def enabled?
      return @last_enabled
    end
    #---------------------------------------------------------------------------
    def dispose
      @bar.dispose
      @text.dispose
      @face.dispose
    end
    #---------------------------------------------------------------------------
  end
  #=============================================================================
end
#===============================================================================


#===============================================================================
class Scene_Title < Scene_Base
  #-----------------------------------------------------------------------------
  alias start_newold_hp_gui start
  def start
    $GUI.set_enabled(false)
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

#===============================================================================
class Scene_Map < Scene_Base
  #-----------------------------------------------------------------------------
  alias update_newold_hp_gui update
  def update
    update_newold_hp_gui
    $GUI.update
  end
  #-----------------------------------------------------------------------------
  alias start_newold_hp_gui start
  def start
    $GUI.set_previous_enable(nil)
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
  alias terminate_newold_hp_gui terminate
  def terminate
    $GUI.disable(nil)
    terminate_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


#===============================================================================
module DataManager
  #-----------------------------------------------------------------------------
  class << self
    # --------------------------------------------------------------------
    alias make_save_contents_newold_hp_gui make_save_contents
    def make_save_contents
      contents = make_save_contents_newold_hp_gui
      contents[:newold_hp_gui_enabled]        = $GUI.enabled?
      contents
    end
    # --------------------------------------------------------------------
    alias extract_save_contents_newold_hp_gui extract_save_contents
    def extract_save_contents(contents)
      extract_save_contents_newold_hp_gui(contents)
      $GUI.set_enabled(contents[:newold_hp_gui_enabled])
    end
    # --------------------------------------------------------------------
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

# Crea la primera barra configurada según los valores
# definidos por defecto
$GUI = Newold_Bars_GUI.new

=begin

  Para añadir más barras seguir el siguiente esquema (Puedes Copiar y pegar
  y después cambiar los valores):
 
  # ----------------------------------------------------------------------------
  # ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
 
  # ············································································
  # ⏺️ Crear una nueva barra ⏺️
  $GUI.add_bar
  # ············································································
 
  # Editar las características de una barra
 
  # ············································································
  id = 0 # ID de la barra a editar
  # ············································································
 
  # ············································································
  # ⏺️ Configuración de la Barra ⏺️
  # * imagen vida llena:
  hp_full_image = "bar_hp_01"  # imagen dentro de la carpeta Graphics/Pictures
  # * imagen vida vacía:
  hp_empty_image = "bar_hp_02"  # imagen dentro de la carpeta Graphics/Pictures
  # * Posición:
  x = 0                        # Posición X
  y = 0                        # Posición Y
  $GUI.set_bars_data(id, hp_full_image, hp_empty_image, x, y)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración de la fuente ⏺️
  font_data = {
    # Nombre de la fuente
    :name        => "Verdana",
    # Tamaño de la fuente
    :size        => 20,
    # Color para el texto
    :color        => Color.new(255,255,255),
    # Negrita (true or false)
    :bold        => false,
    # Cursiva (true or false)
    :italic      => false,
    # Texto bordeado por una línea (true or false)
    :outline      => true,
    # Color de la línea de bordeado
    :out_color    => Color.new(0,0,0),
    # Mostrar el texto sombreado (true or false)
    :shadow      => false
  }
  $GUI.set_font_data(id, font_data)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración del texto ⏺️
  show  = true        # Mostrar u ocultar el texto (true or false)
  x      = 0            # Posición X
  y      = 0            # Posición Y
  align  = 1            # Alineación del texto (0:normal, 1:Centrado, 2:derecha)
  width  = 100          # Ancho del texto (nil = autoajustar)
  height = nil          # Alto del texto (nil = autoajustar)
  format = "<a> / <b>"  # texto (<a> = Valor actual, <b> = Valor Máximo)
  $GUI.set_text_data(id, show, x, y, align, width, height, format)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración de la Cara ⏺️
  show    = true        # Mostrar la cara (true or false)
  x      = 0          # Posición X
  y      = 0          # Posición Y
  width  = 32          # Ancho para la imagen
  height  = 32          # Alto para la imagen
  $GUI.set_face_data(id, show, x, y, width, height)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración del tipo de dato a mostrar ⏺️
  # 0 = HP
  # 1 = MP
  # 2 = Experience
  type = 1
  $GUI.set_type(id, type)
  # ············································································
 
  # ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  # ----------------------------------------------------------------------------
 
  # -------------------------------------------------------------
 
=end


# ▼▼▼▼ Añade aquí debajo las Barras que necesites y/o configura las barras ▼▼▼▼

# Por ejemplo para añadir una barra de MP:


# ----------------------------------------------------------------------------
  # ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
 
  # ············································································
  # ⏺️ Crear una nueva barra ⏺️
  $GUI.add_bar
  # ············································································
 
  # Editar las características de una barra
 
  # ············································································
  id = 1 # ID de la barra a editar
  # ············································································
 
  # ············································································
  # ⏺️ Configuración de la Barra ⏺️
  # * imagen vida llena:
  hp_full_image = "bar_hp_01"  # imagen dentro de la carpeta Graphics/Pictures
  # * imagen vida vacía:
  hp_empty_image = "bar_hp_02"  # imagen dentro de la carpeta Graphics/Pictures
  # * Posición:
  x = 0                        # Posición X
  y = 0                        # Posición Y
  $GUI.set_bars_data(id, hp_full_image, hp_empty_image, x, y)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración de la fuente ⏺️
  font_data = {
    # Nombre de la fuente
    :name        => "Verdana",
    # Tamaño de la fuente
    :size        => 20,
    # Color para el texto
    :color        => Color.new(255,255,255),
    # Negrita (true or false)
    :bold        => false,
    # Cursiva (true or false)
    :italic      => false,
    # Texto bordeado por una línea (true or false)
    :outline      => true,
    # Color de la línea de bordeado
    :out_color    => Color.new(0,0,0),
    # Mostrar el texto sombreado (true or false)
    :shadow      => false
  }
  $GUI.set_font_data(id, font_data)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración del texto ⏺️
  show  = true        # Mostrar u ocultar el texto (true or false)
  x      = 0            # Posición X
  y      = 0            # Posición Y
  align  = 1            # Alineación del texto (0:normal, 1:Centrado, 2:derecha)
  width  = 100          # Ancho del texto (nil = autoajustar)
  height = nil          # Alto del texto (nil = autoajustar)
  format = "<a> / <b>"  # texto (<a> = Valor actual, <b> = Valor Máximo)
  $GUI.set_text_data(id, show, x, y, align, width, height, format)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración de la Cara ⏺️
  show    = true        # Mostrar la cara (true or false)
  x      = 0          # Posición X
  y      = 0          # Posición Y
  width  = 32          # Ancho para la imagen
  height  = 32          # Alto para la imagen
  $GUI.set_face_data(id, show, x, y, width, height)
  # ············································································
 
  # ············································································
  # ⏺️ Configuración del tipo de dato a mostrar ⏺️
  # 0 = HP
  # 1 = MP
  # 2 = Experience
  type = 1
  $GUI.set_type(id, type)
  # ············································································
 
  # ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  # ----------------------------------------------------------------------------

dejo el código también en pastebin por si éste foro estropeara el código (por los caracteres raros que uso en el mismo ⏺️ ▲ ▼)

https://pastebin.com/QwARSezv

Edit: Si que he encontrado un pequeño fallo en este segundo script, y era que no había modificado el apartado del mismo en el que se guarda la partida y se guardan los estados de todas las barras, ya está arreglado eso
avatar
newold
Principiante
Principiante

0/3

Créditos 1276

Gracias : 137

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-27, 22:03

Ahora sí ya quedaron bien las tres barras con diferente color cada una.
Y ya entrados en esto me pregunto si se podría modificar el script para que se muestre una imagen con el nombre del mapa actualizado; ya sé que se puede hacer con engine y yo puedo hacerlo, pero el problema es que al usar el comando Mostrar imagen las imágenes no aparecen en todas partes en donde esté el jugador por lo de la prioridad de las imágenes que modificamos para animar los fondos de las pantallas, y algunos tiles bloquean las imágenes que uso con engines pero no con script porque en ninguna parte se bloquean las barras que uso con este script que creaste newold.
Si se puede poner el nombre del mapa en una imagen justo como las barras de HP, MP y Exp. que se actualice usando la ID de cada mapa para que no haya problema al cambiar de mapa.
Yo quisiera que se pusiera el nombre del mapa justo al centro en la parte de arriba, pero eso yo lo puedo hacer moviendo las coordenadas más no sé como hacerlo en el script.
Y también si se puede mostrar la cantidad de dinero en otra barra en la parte inferior izquierda de la pantalla, y por último que se pueda mostrar un item(el que uno quiera) usando la ID de los items en la base de datos porque en mi juego hay varias esferas doradas ocultas que me gustaría que se vieran en la parte inferior derecha de la pantalla ya que esas esferas serán muy importantes.
Y te doy las gracias newold porque sin tu ayuda no podría haber hecho muchas cosas en mi juego que hoy funcionan gracias a tu invaluable ayuda.
Gracias de nuevo.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por newold el 2018-06-28, 09:46

aquí tienes, las instrucciones en el script

Código:
=begin

  ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
                              INSTRUCCIONES
  ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
  
  ⏺️ Pegar el script encima del main
  
  ⏺️ Ahora podrás usar los siguientes comandos con el
  comando llamar script de los eventos:
  
  
  
  *** Añadir una imagen a la pantalla:
  
················································································
$GUI_PICTURES.add_picture(id, url, x, y)
  
  id = Cualquier cosa que quieras (número o texto), solo se usa para
       identificar la imagen y poder ocultarla / borrarla / mostrarla
      (las ids se pueden repetir)
      
  url = Nombre de la imagen a mostrar entre " (Debe estar en la carpeta
        Graphics/Pictures de tu juego) Ejemplo: "miImagen"
        
  x = Posición X de la pantalla donde se mostrará la imagen
  
  y = Posición Y de la pantalla donde se mostrará la imagen
················································································
  



  *** Añadir un icono de objeto, arma, armadura o skill a la pantalla
  
················································································
$GUI_PICTURES.add_item(id, item_type, item_ID, x, y, font, show_name, show_icon)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
       identificar el icono y poder ocultarlo / borrarlo / mostrarlo
      (las ids se pueden repetir)
      
  item_type = El tipo de cosa a mostrar. Puede ser:
    0 => Mostrar Objeto
    1 => Mostrar arma
    2 => mostrar armadura
    3 => Mostrar skill
    
  item_ID = ID en la base de datos para el item a mostrar
  
  x = Posición X de la pantalla donde se mostrará el icono
  
  y = Posición Y de la pantalla donde se mostrará el icono
  
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
  
  show_name = Muestra el nombre del item (true = mostrar, false = no mostrar)
  
  show_icon = Muestra el icono del item (true = mostrar, false = no mostrar)
  
················································································




  *** Añadir el nombre del mapa actual a la pantalla

················································································
$GUI_PICTURES.add_map_name(id, x, y, delay, font)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
       identificar el nombre y poder ocultarlo / borrarlo / mostrarlo
      (las ids se pueden repetir)
      
  x = Posición X de la pantalla donde se mostrará el nombre del mapa
  
  y = Posición Y de la pantalla donde se mostrará el nombre del mapa
  
  delay = Frames que pasará hasta que el el nombre del mapa se oculte
          (Poner 0 si quieres que no se oculte nunca)
          
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
················································································




  *** Añadir el oro actual a la pantalla

················································································
$GUI_PICTURES.add_gold(id, x, y, font)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
       identificar el oro y poder ocultarlo / borrarlo / mostrarlo
      (las ids se pueden repetir)
      
  x = Posición X de la pantalla donde se mostrará el oro
  
  y = Posición Y de la pantalla donde se mostrará el oro
  
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
················································································




  *** Cómo activar las cosas añadidas
················································································
$GUI_PICTURES.enable(id)

  id = La id que usaste para crear el objeto. Si pones nil se activan
        todos los objetos, si no, se activará todo lo que tenga la id usada
················································································



  *** Cómo desactivar las cosas añadidas
················································································
$GUI_PICTURES.disable(id)

  id = La id que usaste para crear el objeto. Si pones nil se desactivan
        todos los objetos, si no, se desactivará todo lo que tenga la id usada
················································································


  *** Cómo borrar las cosas añadidas
················································································
$GUI_PICTURES.delete(id)

  id = La id que usaste para crear el objeto. Si pones nil se borrar
        todos los objetos, si no, se borrará todo lo que tenga la id usada
················································································



  *** Cómo crear fuentes:
  
················································································
  font = Font.new
  font.name = "Verdana"                   # Nombre de la fuente
  font.size = 20                          # Tamaño de la fuente
  font.color = Color.new(255,255,255)     # Color de la fuente
  font.bold = false                       # Negrita (true / false)
  font.italic = false                     # Cursiva (true / false)
  font.outline = true                     # Rodear con una línea (true / false)
  font.out_color = Color.new(0,0,0)       # Color para la línea
  font.shadow = false                     # Sombreado (true / false)
················································································

=end






#===============================================================================
class NilClass
  def dup
    return nil
  end
end
#===============================================================================

#===============================================================================
class Newold_Picture_GUI
  #-----------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #-----------------------------------------------------------------------------
  def add_picture(id, url, x, y)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.bitmap = Cache.picture(url)
    s.opacity = 0
    
    obj = {
      :ID             => id,
      :type           => 0,
      :sprite         => s,
      :show           => true,
      :state_show     => true,
      :url            => url,
      :x              => x,
      :y              => y
    }
    
    @data << obj
  end
  #-----------------------------------------------------------------------------
  def add_item(id, item_type, item_ID, x, y, font, show_name=true, show_icon=true)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
    
    font_bak = font.dup
    
    item = nil
    case item_type
    when 0, :item; item = $data_items[item_ID]
    when 1, :weapon; item = $data_weapons[item_ID]
    when 2, :armor; item = $data_armors[item_ID]
    when 3, :skill; item = $data_skills[item_ID]
    end

    unless item.nil?
      set_item(s, item, show_name, show_icon, font)
    else
      s.dispose
      return
    end
    
    obj = {
      :ID             => id,
      :type           => 1,
      :sprite         => s,
      :show           => true,
      :state_show     => true,
      :item_type      => item_type,
      :item_ID        => item_ID,
      :x              => x,
      :y              => y,
      :font_bak       => font_bak,
      :show_name      => show_name,
      :show_icon      => show_icon
      
    }
    
    @data << obj
  end
  #-----------------------------------------------------------------------------
  def add_map_name(id, x, y, delay, font=nil)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
    
    font_bak = font.dup
    
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end
    
    obj = {
      :ID             => id,
      :type           => 2,
      :sprite         => s,
      :font           => font,
      :show           => true,
      :state_show     => true,
      :delay          => delay.to_i,
      :delay_counter  => 0,
      :map_id         => -1,
      :x              => x,
      :y              => y,
      :font_bak       => font_bak
    }
    
    @data << obj
  end
  #-----------------------------------------------------------------------------
  def add_gold(id, x, y, font=nil)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
    
    font_bak = font.dup
    
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end
    
    obj = {
      :ID             => id,
      :type           => 3,
      :sprite         => s,
      :font           => font,
      :show           => true,
      :state_show     => true,
      :current_gold   => -1,
      :x              => x,
      :y              => y,
      :font_bak       => font_bak
    }
    
    @data << obj
    
  end
  #-----------------------------------------------------------------------------
  def refresh_gold(obj)
    gold = $game_party.gold
    if gold != obj[:current_gold]
      obj[:current_gold] = gold
      obj[:sprite].bitmap.dispose rescue nil
      text = gold.to_s + Vocab::currency_unit
      b = Bitmap.new(1,1)
      b.font = obj[:font]
      size = b.text_size(text)
      w = size.width
      h = size.height
      obj[:sprite].bitmap = Bitmap.new(w, h)
      obj[:sprite].bitmap.font = obj[:font]
      obj[:sprite].bitmap.draw_text(0,0,w,h,text)
      b.dispose
    end
  end
  #-----------------------------------------------------------------------------
  def draw_map_name(obj)
    map_name = $game_map.display_name
    b = Bitmap.new(1,1)
    b.font = obj[:font]
    size = b.text_size(map_name)
    obj[:sprite].bitmap.dispose rescue nil
    w = [size.width, 1].max
    h = [size.height, 1].max
    obj[:sprite].bitmap = Bitmap.new(w, h)
    obj[:sprite].bitmap.font = obj[:font]
    obj[:sprite].bitmap.draw_text(0,0,w,h,map_name)
    obj[:sprite].opacity = 0
    obj[:delay_counter] = 0
    obj[:map_id] = $game_map.map_id
    b.dispose
  end
  #-----------------------------------------------------------------------------
  def set_item(sprite, item, show_name, show_icon, font=nil)
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end

    icon = nil
    if show_icon == true
      bitmap = Cache.system("Iconset")
      rect = Rect.new(item.icon_index%16*24, item.icon_index/16*24, 24, 24)
      icon = Bitmap.new(24, 24)
      icon.blt(0, 0, bitmap, rect)
    end

    size = Rect.new(0,0,0,0)
    if show_name == true
      b = Bitmap.new(1, 1)
      b.font = font
      size = b.text_size(item.name)
      b.dispose
    end

    if show_icon==true and show_name==true
      w = icon.width + size.width
      h = [icon.height, size.height].max
      mod = icon.width
    elsif show_icon==true
      w = icon.width
      h = icon.height
      mod = 0
    elsif show_name==true
      w = size.width
      h = size.height
      mod = 0
    else
      w = h = mod = 0
    end
    
    if w > 0 and h > 0
      sprite.bitmap = Bitmap.new(w, h)
      if show_icon==true
        sprite.bitmap.blt(0, (h-icon.height)/2, icon, icon.rect)
      end
      if show_name==true
        sprite.bitmap.draw_text(mod, 0, size.width, h, item.name)
      end
    end

  end
  #-----------------------------------------------------------------------------
  def update
    @data.each{|obj|
      if obj[:type] == 2 and $game_map.map_id != obj[:map_id]
        draw_map_name(obj)
        if obj[:delay] > 0 and obj[:delay_counter] < obj[:delay]
          obj[:delay_counter] += 1
        end
      elsif obj[:type] == 2 and obj[:delay_counter] < obj[:delay]
        obj[:delay_counter] += 1
      end
      if obj[:type] == 3
        refresh_gold(obj)
      end
      if obj[:delay].to_i == 0 or obj[:delay_counter].to_i < obj[:delay].to_i
        obj[:sprite].opacity += [(255 - obj[:sprite].opacity) / 4, 1].max
      else
        obj[:sprite].opacity -= 12
      end
    }
  end
  #-----------------------------------------------------------------------------
  def enable(id=nil)
    if id.nil?
      @data.each{|obj| set_enable_to(obj, true) }
    else
      @data.each{|obj|
        set_enable_to(obj, true) if obj[:ID] == id
      }
    end
  end
  #-----------------------------------------------------------------------------
  def disable(id=nil)
    if id.nil?
      @data.each{|obj| set_enable_to(obj, false) }
    else
      @data.each{|obj|
        set_enable_to(obj, false) if obj[:ID] == id
      }
    end
  end
  #-----------------------------------------------------------------------------
  def delete(id=nil)
    @data.each{|obj|
      if id.nil? or id == obj[:ID]
        obj[:sprite].dispose rescue nil
        @data.delete(obj) rescue nil
      end
    }
  end
  #-----------------------------------------------------------------------------
  def set_previous_enable
    @data.each{|obj| set_enable_to(obj, obj[:state_show]) }
  end
  #-----------------------------------------------------------------------------
  def disable_all
    @data.each{|obj|
      obj[:show] = false
      obj[:sprite].opacity = 0
      unless obj[:delay_counter].nil?
        obj[:delay_counter] = 0
      end
    }
  end
  #-----------------------------------------------------------------------------
  def set_enable_to(obj, value)
    obj[:show]           = value
    obj[:state_show]     = value
    obj[:sprite].opacity = 0
    if obj[:type] == 2
      obj[:delay_counter] = 0
    end
  end
  #-----------------------------------------------------------------------------
  def get_data
    data = @data.dup
    data.each{|obj| obj[:sprite] = nil }
    return data
  end
  #-----------------------------------------------------------------------------
  def set_data(data)
    @data.clear
    data.each{|obj|
      if obj[:type] == 0
        add_picture(obj[:ID], obj[:url], obj[:x], obj[:y])
      elsif obj[:type] == 1
        add_item(obj[:ID], obj[:item_type], obj[:item_ID], obj[:x], obj[:y],
          obj[:font_bak], obj[:show_name], obj[:show_icon])
      elsif obj[:type] == 2
        add_map_name(obj[:ID], obj[:x], obj[:y], obj[:delay], obj[:font_bak])
      elsif obj[:type] == 3
        add_gold(obj[:ID], obj[:x], obj[:y], obj[:font_bak])
      end
    }
  end
  #-----------------------------------------------------------------------------
  def dispose
    @data.each{|obj|
       obj[:sprite].dispose rescue next
    }
    @data.clear
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================



#===============================================================================
class Scene_Title < Scene_Base
  #-----------------------------------------------------------------------------
  alias start_newold_pictures_gui start
  def start
    $GUI_PICTURES.dispose
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

#===============================================================================
class Scene_Map < Scene_Base
  #-----------------------------------------------------------------------------
  alias update_newold_pictures_gui update
  def update
    update_newold_pictures_gui
    $GUI_PICTURES.update
  end
  #-----------------------------------------------------------------------------
  alias start_newold_pictures_gui start
  def start
    $GUI_PICTURES.set_previous_enable
    start_newold_pictures_gui
  end
  #-----------------------------------------------------------------------------
  alias terminate_newold_pictures_gui terminate
  def terminate
    $GUI_PICTURES.disable_all
    terminate_newold_pictures_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


#===============================================================================
module DataManager
  #-----------------------------------------------------------------------------
  class << self
    # --------------------------------------------------------------------
    alias make_save_contents_newold_pictures_gui make_save_contents
    def make_save_contents
      contents = make_save_contents_newold_pictures_gui
      contents[:newold_pictures_gui_enabled] = $GUI_PICTURES.get_data
      contents
    end
    # --------------------------------------------------------------------
    alias extract_save_contents_newold_pictures_gui extract_save_contents
    def extract_save_contents(contents)
      extract_save_contents_newold_pictures_gui(contents)
      $GUI_PICTURES.set_data(contents[:newold_pictures_gui_enabled])
    end
    # --------------------------------------------------------------------
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


$GUI_PICTURES = Newold_Picture_GUI.new

Puedes hacer todo lo que pides con eso. Por ejemplo, mostrar el arma id= 10 abajo a la derecha (con su icono y nombre):

Código:
font = Font.new
  font.name = "Verdana"                   # Nombre de la fuente
  font.size = 20                          # Tamaño de la fuente
  font.color = Color.new(255,255,255)     # Color de la fuente
  font.bold = false                       # Negrita (true / false)
  font.italic = false                     # Cursiva (true / false)
  font.outline = true                     # Rodear con una línea (true / false)
  font.out_color = Color.new(0,0,0)       # Color para la línea
  font.shadow = false                     # Sombreado (true / false)

$GUI_PICTURES.add_item("Primer arma", 1, 10, 480, 380, font, true, true)


Puedes añadir tantas imágenes como necesites con este script pero recuerda, lo más nuevo que añadas se coloca encima de lo más viejo. (Por ejemplo, quieres mostrar el oro sobre una imagen, primero añades la imagen de fondo y después el oro, así éste sale encima de la imagen)

Una última cosa. Todo lo que añadas estará por defecto activado. Si luego quieres activar/desactivar/borrar algo usa los comandos para ello (ver instrucciones)
avatar
newold
Principiante
Principiante

0/3

Créditos 1276

Gracias : 137

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-28, 21:57

Te agradezco sinceramente por tu ayuda newold ya que te has tomado la molestia y el tiempo para ayudarme sin recibir nada a cambio -obvio que aparecerás en los créditos de mi juego que es lo menos que puedo hacer para agradecerte tu invaluable ayuda- lo cual no es muy común el día de hoy en este mundo tan egoísta.
Ya puse una imagen con el nombre de uno de los mapas del juego así que ahora lo laborioso será crear una imagen diferente para cada mapa para que no se vea repetitivo en todo el juego, y más tarde revisaré las otras opciones que incluiste en el script que tan amablemente hiciste para ayudarme y para ayudar a quienes lo necesiten porque estos dos scripts que has hecho son muy útiles para cualquier juego.
Te repito lo agradecido que estoy por toda tu ayuda, y como decía Kalimán: te lo agradezco de corazón, palabra y pensamiento.
Saludos, y a seguir trabajando.
Edito: Casi todo está bien con el script que creaste newold pero el problema que tengo es que no se muestra la cantidad de items que pongo en pantalla, en este caso del item 26 que es la Esfera Dorada, y necesito que se vayan sumando/descontando los que tengo para no tener que estar entrando al menú cada que quiera saber la cantidad que tenga.
Espero que me digas como hacer para que se sume/reste cualquier item que quiera que aparezca en pantalla, justo como se suman y restan los puntos de HP, MP, Exp. y dinero.
Gracias de antemano.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por newold el 2018-06-29, 08:34

Te lo amplío aquí, ahora puedes mostrar la cantidad de objetos, armas o armaduras y también mostrar valores de variables con texto personalizado. (las instrucciones están actualizadas para saber como hacerlo todo)

Código:
=begin

  ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
                              INSTRUCCIONES
  ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
 
  ⏺️ Pegar el script encima del main
 
  ⏺️ Ahora podrás usar los siguientes comandos con el
  comando llamar script de los eventos:
 
 
 
  *** Añadir una imagen a la pantalla:
 
················································································
$GUI_PICTURES.add_picture(id, url, x, y)
 
  id = Cualquier cosa que quieras (número o texto), solo se usa para
      identificar la imagen y poder ocultarla / borrarla / mostrarla
      (las ids se pueden repetir)
     
  url = Nombre de la imagen a mostrar entre " (Debe estar en la carpeta
        Graphics/Pictures de tu juego) Ejemplo: "miImagen"
       
  x = Posición X de la pantalla donde se mostrará la imagen
 
  y = Posición Y de la pantalla donde se mostrará la imagen
················································································
 



  *** Añadir un icono de objeto, arma, armadura o skill a la pantalla
 
················································································
$GUI_PICTURES.add_item(id, item_type, item_ID, x, y, font,
show_name, show_icon, show_quantity, format)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
      identificar el icono y poder ocultarlo / borrarlo / mostrarlo
      (las ids se pueden repetir)
     
  item_type = El tipo de cosa a mostrar. Puede ser:
    0 => Mostrar Objeto
    1 => Mostrar arma
    2 => mostrar armadura
    3 => Mostrar skill
   
  item_ID = ID en la base de datos para el item a mostrar
 
  x = Posición X de la pantalla donde se mostrará el icono
 
  y = Posición Y de la pantalla donde se mostrará el icono
 
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
 
  show_name = Muestra el nombre del item (true = mostrar, false = no mostrar)
 
  show_icon = Muestra el icono del item (true = mostrar, false = no mostrar)
 
  show_quantity = Mostrar la cantidad que se posee del item
                  (true = mostrar, false = no mostrar)
                  (Solo funciona para objetos, armas y armaduras)
                 
  format = Cómo mostrar el texto. Se puede usar los siguientes comodines:
            <a> Se cambia por la ID del item
            <b> Se cambia por el nombre del item
            <c> Se cambia por la cantidad del item
                (válido solo en objetos, armas y amrmaduras)
 
················································································




  *** Añadir el nombre del mapa actual a la pantalla

················································································
$GUI_PICTURES.add_map_name(id, x, y, delay, font)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
      identificar el nombre y poder ocultarlo / borrarlo / mostrarlo
      (las ids se pueden repetir)
     
  x = Posición X de la pantalla donde se mostrará el nombre del mapa
 
  y = Posición Y de la pantalla donde se mostrará el nombre del mapa
 
  delay = Frames que pasará hasta que el el nombre del mapa se oculte
          (Poner 0 si quieres que no se oculte nunca)
         
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
················································································




  *** Añadir el oro actual a la pantalla

················································································
$GUI_PICTURES.add_gold(id, x, y, font)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
      identificar el oro y poder ocultarlo / borrarlo / mostrarlo
      (las ids se pueden repetir)
     
  x = Posición X de la pantalla donde se mostrará el oro
 
  y = Posición Y de la pantalla donde se mostrará el oro
 
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
················································································




  *** Añadir el valor de una variable con texto descriptivo a la pantalla
 
················································································
$GUI_PICTURES.add_variable(id, variable_ID, x, y, format, font)

  id = Cualquier cosa que quieras (número o texto), solo se usa para
      identificar la variable y poder ocultarla / borrarla / mostrarla
      (las ids se pueden repetir)
     
  variable_ID = La ID de la variable que cuyo valor quieras mostrar
     
  x = Posición X de la pantalla donde se mostrará la variable
 
  y = Posición Y de la pantalla donde se mostrará la variable
 
  font = Una fuente para usar en el texto. Dejar en nil para que use la fuente
  por defecto (ver más abajo para crear una fuente)
 
  format = Cómo mostrar el valor de la variable:
            <a> Se cambia por el valor de la variable
            (Ejemplo: "Mi vaiable vale <a>")

················································································




  *** Cómo activar las cosas añadidas
················································································
$GUI_PICTURES.enable(id)

  id = La id que usaste para crear el objeto. Si pones nil se activan
        todos los objetos, si no, se activará todo lo que tenga la id usada
················································································



  *** Cómo desactivar las cosas añadidas
················································································
$GUI_PICTURES.disable(id)

  id = La id que usaste para crear el objeto. Si pones nil se desactivan
        todos los objetos, si no, se desactivará todo lo que tenga la id usada
················································································


  *** Cómo borrar las cosas añadidas
················································································
$GUI_PICTURES.delete(id)

  id = La id que usaste para crear el objeto. Si pones nil se borrar
        todos los objetos, si no, se borrará todo lo que tenga la id usada
················································································



  *** Cómo crear fuentes:
 
················································································
  font = Font.new
  font.name = "Verdana"                  # Nombre de la fuente
  font.size = 20                          # Tamaño de la fuente
  font.color = Color.new(255,255,255)    # Color de la fuente
  font.bold = false                      # Negrita (true / false)
  font.italic = false                    # Cursiva (true / false)
  font.outline = true                    # Rodear con una línea (true / false)
  font.out_color = Color.new(0,0,0)      # Color para la línea
  font.shadow = false                    # Sombreado (true / false)
················································································

=end






#===============================================================================
class NilClass
  def dup
    return nil
  end
end
#===============================================================================

#===============================================================================
class Newold_Picture_GUI
  #-----------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #-----------------------------------------------------------------------------
  def add_picture(id, url, x, y)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.bitmap = Cache.picture(url)
    s.opacity = 0
   
    obj = {
      :ID            => id,
      :type          => 0,
      :sprite        => s,
      :show          => true,
      :state_show    => true,
      :url            => url,
      :x              => x,
      :y              => y
    }
   
    @data << obj
  end
  #-----------------------------------------------------------------------------
  def add_item(id, item_type, item_ID, x, y, font,
    show_name=true, show_icon=true, show_quantity=true, format="<b> (<c>)")
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
   
    font_bak = font.dup
   
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end
   
    obj = {
      :ID            => id,
      :type          => 1,
      :sprite        => s,
      :show          => true,
      :state_show    => true,
      :item_type      => item_type,
      :item_ID        => item_ID,
      :x              => x,
      :y              => y,
      :font          => font,
      :font_bak      => font_bak,
      :show_name      => show_name,
      :show_icon      => show_icon,
      :show_quantity  => show_quantity,
      :format        => format.to_s,
      :quantity      => -1
    }
   
    set_item(obj)
   
    @data << obj
  end
  #-----------------------------------------------------------------------------
  def add_map_name(id, x, y, delay, font=nil)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
   
    font_bak = font.dup
   
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end
   
    obj = {
      :ID            => id,
      :type          => 2,
      :sprite        => s,
      :font          => font,
      :show          => true,
      :state_show    => true,
      :delay          => delay.to_i,
      :delay_counter  => 0,
      :map_id        => -1,
      :x              => x,
      :y              => y,
      :font_bak      => font_bak
    }
   
    @data << obj
  end
  #-----------------------------------------------------------------------------
  def add_gold(id, x, y, font=nil)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
   
    font_bak = font.dup
   
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end
   
    obj = {
      :ID            => id,
      :type          => 3,
      :sprite        => s,
      :font          => font,
      :show          => true,
      :state_show    => true,
      :current_gold  => -1,
      :x              => x,
      :y              => y,
      :font_bak      => font_bak
    }
   
    @data << obj
   
  end
  #-----------------------------------------------------------------------------
  def add_variable(id, variable_ID, x, y, format="", font=nil)
    s = Sprite.new
    s.z = 1000000
    s.x = x
    s.y = y
    s.opacity = 0
   
    font_bak = font.dup
   
    if !font.is_a?(Font)
      font = Font.new
      font.name = ["Verdana", "Arial"]
      font.size = 20
      font.color = Color.new(255,255,255)
      font.outline = true
      font.out_color = Color.new(0,0,0)
    end
   
    obj = {
      :ID            => id,
      :type          => 4,
      :sprite        => s,
      :font          => font,
      :show          => true,
      :state_show    => true,
      :variable_ID    => variable_ID,
      :current_value  => -1,
      :format        => format,
      :x              => x,
      :y              => y,
      :font_bak      => font_bak
    }
   
    @data << obj
   
  end
  #-----------------------------------------------------------------------------
  def refresh_gold(obj)
    gold = $game_party.gold
    if gold != obj[:current_gold]
      obj[:current_gold] = gold
      obj[:sprite].bitmap.dispose rescue nil
      text = gold.to_s + Vocab::currency_unit
      b = Bitmap.new(1,1)
      b.font = obj[:font]
      size = b.text_size(text)
      w = size.width
      h = size.height
      obj[:sprite].bitmap = Bitmap.new(w, h)
      obj[:sprite].bitmap.font = obj[:font]
      obj[:sprite].bitmap.draw_text(0,0,w,h,text)
      b.dispose
    end
  end
  #-----------------------------------------------------------------------------
  def refresh_variable(obj)
    value = $game_variables[obj[:variable_ID]]
    return if value.nil?
    if value != obj[:current_value]
      obj[:current_value] = value
      obj[:sprite].bitmap.dispose rescue nil
      text = obj[:format].dup
      text.gsub!("<a>", value.to_s)
      b = Bitmap.new(1,1)
      b.font = obj[:font]
      size = b.text_size(text)
      w = size.width
      h = size.height
      obj[:sprite].bitmap = Bitmap.new(w, h)
      obj[:sprite].bitmap.font = obj[:font]
      obj[:sprite].bitmap.draw_text(0,0,w,h,text)
      b.dispose
    end
  end
  #-----------------------------------------------------------------------------
  def draw_map_name(obj)
    map_name = $game_map.display_name
    b = Bitmap.new(1,1)
    b.font = obj[:font]
    size = b.text_size(map_name)
    obj[:sprite].bitmap.dispose rescue nil
    w = [size.width, 1].max
    h = [size.height, 1].max
    obj[:sprite].bitmap = Bitmap.new(w, h)
    obj[:sprite].bitmap.font = obj[:font]
    obj[:sprite].bitmap.draw_text(0,0,w,h,map_name)
    obj[:sprite].opacity = 0
    obj[:delay_counter] = 0
    obj[:map_id] = $game_map.map_id
    b.dispose
  end
  #-----------------------------------------------------------------------------
  def set_item(obj)
   
    return if obj.nil? or obj[:sprite].nil? or obj[:sprite].disposed?
   
    item = nil
    case obj[:item_type]
    when 0, :item; item = $data_items[obj[:item_ID]]
    when 1, :weapon; item = $data_weapons[obj[:item_ID]]
    when 2, :armor; item = $data_armors[obj[:item_ID]]
    when 3, :skill; item = $data_skills[obj[:item_ID]]
    end

    if item.nil?
      obj[:sprite].dispose rescue nil
      return
    end

    icon = nil
    if obj[:show_icon] == true
      bitmap = Cache.system("Iconset")
      rect = Rect.new(item.icon_index%16*24, item.icon_index/16*24, 24, 24)
      icon = Bitmap.new(24, 24)
      icon.blt(0, 0, bitmap, rect)
    end

    text = obj[:format].dup
   
    if obj[:show_name]
      text.gsub!("<a>", item.id.to_s)
      text.gsub!("<b>", item.name)
    else
      text.gsub!("<a>", "")
      text.gsub!("<b>", "")
    end
    if obj[:item_type] < 3 and obj[:show_quantity]
      q = sprintf("%2d", $game_party.item_number(item))
      text.gsub!("<c>", q)
    else
      text.gsub!("<c>", "")
    end

    size = Rect.new(0,0,0,0)
    b = Bitmap.new(1, 1)
    b.font = obj[:font].dup
    size = b.text_size(text)
    b.dispose
   
    if icon.nil?
      w = size.width
      h = size.height
      mod = 0
    else
      w = icon.width + size.width
      h = [icon.height, size.height].max
      mod = icon.width
    end
   
    obj[:sprite].bitmap.dispose rescue nil
    if w > 0 and h > 0
      obj[:sprite].bitmap = Bitmap.new(w, h)
      unless icon.nil?
        obj[:sprite].bitmap.blt(0, (h-icon.height)/2, icon, icon.rect)
      end
      obj[:sprite].bitmap.draw_text(mod, 0, size.width, h, text)
    end

  end
  #-----------------------------------------------------------------------------
  def update
    p Time.now
    @data.each{|obj|
      # ············
      if obj[:type] == 1 and obj[:item_type] < 3 and obj[:show_quantity]
        item = nil
        case obj[:item_type]
        when 0, :item; item = $data_items[obj[:item_ID]]
        when 1, :weapon; item = $data_weapons[obj[:item_ID]]
        when 2, :armor; item = $data_armors[obj[:item_ID]]
        when 3, :skill; item = $data_skills[obj[:item_ID]]
        end
        unless item.nil?
          if obj[:show_quantity] != $game_party.item_number(item)
            set_item(obj)
          end
        end
      end
      # ············ 
      if obj[:type] == 2 and $game_map.map_id != obj[:map_id]
        draw_map_name(obj)
        if obj[:delay] > 0 and obj[:delay_counter] < obj[:delay]
          obj[:delay_counter] += 1
        end
      elsif obj[:type] == 2 and obj[:delay_counter] < obj[:delay]
        obj[:delay_counter] += 1
      end
      # ············
      if obj[:type] == 3
        refresh_gold(obj)
      end
      # ············
      if obj[:delay].to_i == 0 or obj[:delay_counter].to_i < obj[:delay].to_i
        obj[:sprite].opacity += [(255 - obj[:sprite].opacity) / 4, 1].max
      else
        obj[:sprite].opacity -= 12
      end
      # ············
      if obj[:type] == 4
        refresh_variable(obj)
      end
      # ············
    }
  end
  #-----------------------------------------------------------------------------
  def enable(id=nil)
    if id.nil?
      @data.each{|obj| set_enable_to(obj, true) }
    else
      @data.each{|obj|
        set_enable_to(obj, true) if obj[:ID] == id
      }
    end
  end
  #-----------------------------------------------------------------------------
  def disable(id=nil)
    if id.nil?
      @data.each{|obj| set_enable_to(obj, false) }
    else
      @data.each{|obj|
        set_enable_to(obj, false) if obj[:ID] == id
      }
    end
  end
  #-----------------------------------------------------------------------------
  def delete(id=nil)
    @data.each{|obj|
      if id.nil? or id == obj[:ID]
        obj[:sprite].dispose rescue nil
        @data.delete(obj) rescue nil
      end
    }
  end
  #-----------------------------------------------------------------------------
  def set_previous_enable
    @data.each{|obj| set_enable_to(obj, obj[:state_show]) }
  end
  #-----------------------------------------------------------------------------
  def disable_all
    @data.each{|obj|
      obj[:show] = false
      obj[:sprite].opacity = 0
      unless obj[:delay_counter].nil?
        obj[:delay_counter] = 0
      end
    }
  end
  #-----------------------------------------------------------------------------
  def set_enable_to(obj, value)
    return if obj.nil? or obj[:sprite].nil? or obj[:sprite].disposed?
   
    obj[:show]          = value
    obj[:state_show]    = value
    obj[:sprite].opacity = 0
    if obj[:type] == 2
      obj[:delay_counter] = 0
    end
  end
  #-----------------------------------------------------------------------------
  def get_data
    data = []
    @data.each{|obj| data << obj.dup}
    data.each{|obj| obj[:sprite] = nil }
    return data
  end
  #-----------------------------------------------------------------------------
  def set_data(data)
    @data.clear
    data.each{|obj|
      if obj[:type] == 0
        add_picture(obj[:ID], obj[:url], obj[:x], obj[:y])
      elsif obj[:type] == 1
        add_item(obj[:ID], obj[:item_type], obj[:item_ID], obj[:x], obj[:y],
          obj[:font_bak], obj[:show_name], obj[:show_icon],
          obj[:show_quantity], obj[:format])
      elsif obj[:type] == 2
        add_map_name(obj[:ID], obj[:x], obj[:y], obj[:delay], obj[:font_bak])
      elsif obj[:type] == 3
        add_gold(obj[:ID], obj[:x], obj[:y], obj[:font_bak])
      elsif obj[:type] == 4
        add_variable(obj[:ID], obj[:variable_ID], obj[:x], obj[:y],
        obj[:format], obj[:font_bak])
      end
    }
  end
  #-----------------------------------------------------------------------------
  def dispose
    @data.each{|obj|
      obj[:sprite].dispose rescue nil
      @data.delete(obj) rescue next
    }
    @data.clear
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================



#===============================================================================
class Scene_Title < Scene_Base
  #-----------------------------------------------------------------------------
  alias start_newold_pictures_gui start
  def start
    $GUI_PICTURES.dispose
    start_newold_hp_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

#===============================================================================
class Scene_Map < Scene_Base
  #-----------------------------------------------------------------------------
  alias update_newold_pictures_gui update
  def update
    update_newold_pictures_gui
    $GUI_PICTURES.update
  end
  #-----------------------------------------------------------------------------
  alias start_newold_pictures_gui start
  def start
    $GUI_PICTURES.set_previous_enable
    start_newold_pictures_gui
  end
  #-----------------------------------------------------------------------------
  alias terminate_newold_pictures_gui terminate
  def terminate
    $GUI_PICTURES.disable_all
    terminate_newold_pictures_gui
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================


#===============================================================================
module DataManager
  #-----------------------------------------------------------------------------
  class << self
    # --------------------------------------------------------------------
    alias make_save_contents_newold_pictures_gui make_save_contents
    def make_save_contents
      contents = make_save_contents_newold_pictures_gui
      contents[:newold_pictures_gui_enabled] = $GUI_PICTURES.get_data
      contents
    end
    # --------------------------------------------------------------------
    alias extract_save_contents_newold_pictures_gui extract_save_contents
    def extract_save_contents(contents)
      extract_save_contents_newold_pictures_gui(contents)
      $GUI_PICTURES.set_data(contents[:newold_pictures_gui_enabled])
    end
    # --------------------------------------------------------------------
  end
  #-----------------------------------------------------------------------------
end
#===============================================================================

$GUI_PICTURES = Newold_Picture_GUI.new


Última edición por newold el 2018-07-01, 08:41, editado 1 vez
avatar
newold
Principiante
Principiante

0/3

Créditos 1276

Gracias : 137

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-29, 21:05

Muchas gracias por tu nueva ayuda newold y ya pude poner la cantidad de items en pantalla aunque salen entre paréntesis, aunque eso no estorba.
Muchas gracias de nuevo y seguiré trabajando en los nombres de los mapas con su respectivo letrero.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por newold el 2018-06-29, 21:55

lo de los paréntesis lo cambias en format

$GUI_PICTURES.add_item(id, item_type, item_ID, x, y, font,
show_name, show_icon, show_quantity, format)



Código:
           format = Cómo mostrar el texto. Se puede usar los siguientes comodines:
           <a> Se cambia por la ID del item
           <b> Se cambia por el nombre del item
           <c> Se cambia por la cantidad del item
               (válido solo en objetos, armas y amrmaduras)

Código:
Por ejemplo si quieres que se muestre "Nombre Item - Cantidad"

format lo pondrías así: "<b> - <c>"

Otro Ejemplo: si quieres que se muestre "Nombre Item tienes Cantidad"

format lo pondrías así: "<b> tienes <c>"


En las instrucciones, en los comandos que usen el format te viene en la descripción como se pone para que muestre lo que quieras
avatar
newold
Principiante
Principiante

0/3

Créditos 1276

Gracias : 137

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Dariel Lopez el 2018-06-30, 02:12

No había entendido lo de los comodines pero con esta explicación ya le entendí y ya pude quitar los paréntesis.
Muchas gracias de nuevo newold.
Edito: Disculpa que te moleste de nuevo newold pero cuando trato de guardar el juego me aparece este error provocado por el último script que creaste:

Ignoro a qué se deba puesto que no sé nada de scripts así que espero tu ayuda.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 731

Gracias : 44

Volver arriba Ir abajo

Re: Mostrar HP del jugador en las pantallas/mapas(Vx Ace)

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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