Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[Pedido] Diferentes HUD in Blizz-ABS

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [Pedido] Diferentes HUD in Blizz-ABS

Mensaje por Lect el 2018-07-19, 01:20

Saludos a todos.

Estoy usando el Blizz_ABS y otros dos scripts complementarios para mostrar barras de salud de los personajes y de Bosses:

Z-HUD for Blizz-ABS:
https://forum.chaos-project.com/index.php?topic=4284.0

Blizz ABS Enemy HP Meter:
https://pastebin.com/WKAmEC8b

Ambos scripts usan imagenes para mostrar dichas barras de salud, pero siempre muestran la misma imagen para todos los personajes, asi como para todos los enemigos respectivamente...
... entonces, mi consulta es ¿Como puedo modificar los scripts para que muestren una imagen diferente para la barra de salud, dependiendo del ID de los personajes o de los Bosses?

Gracias por su atención. Sweat
avatar
Lect
Iniciado
Iniciado

0/3

Créditos 224

Gracias : 6

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Diferentes HUD in Blizz-ABS

Mensaje por Wecoc el 2018-07-19, 19:08

¿Tienes alguna demo con esos scripts en la que se puedan hacer pruebas?
Mirando los scripts no veo donde hacerlo, pero como Blizz-ABS es tan inmenso...
Además quizá sería mejor hacer un script a parte que actue como parche para añadir esa función, en vez de editar ambos scripts directamente. Dependerá del caso.
avatar
Wecoc
Administrador
Administrador



Créditos 12278

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Diferentes HUD in Blizz-ABS

Mensaje por Lect el 2018-07-20, 14:24

Saludos.  Very Happy

Ambos scripts funcionan utilizando dos imagenes (una es la barra vacia, y la otra el relleno)

Mi idea originalmente era que fuera la imagen de la barra vacia la que cambiara dependiendo del ID del boss, o del personaje respectivamente.

Gracias por su atención.


Última edición por Lect el 2018-07-21, 00:35, editado 1 vez
avatar
Lect
Iniciado
Iniciado

0/3

Créditos 224

Gracias : 6

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Diferentes HUD in Blizz-ABS

Mensaje por Wecoc el 2018-07-20, 19:47

Según entiendo esa barra es solo para el boss, así que aunque haya otros enemigos en el mapa, siempre se indicará la vida solo del boss. Según quieras, quizá sería más útil que saliera la barra del último enemigo atacado tal como ocurre en juegos como Diablo. En ese caso cambiar la barra de tipo según el tipo de enemigo se haría en el mismo momento en el que se cambia el objetivo en sí, pero para ello habría que definir el tipo del enemigo a mano ya sea con un proceso paralelo o algo así, y crear el script a parte.

Si solo quieres una barra de boss y que sea distinta según el boss actual es más fácil.
Cambia el script ENEMY HP METER por este:

Código:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blizz ABS ENEMY HP METER                                                  
# Version: 1.02
# Author : LiTTleDRAgo
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Explanation :
# This part of the HUD only appears when you hit an enemy.                    
# It shows how much HP (or Health Points) an enemy has remaining.        
#==============================================================================
# You can turn this feature on and off using SWITCH 48 (Default).          
#==============================================================================
# To change the appearance of the meter in preparation for a boss fight  
# you must first pull up a SCRIPT command window and complete the following:  
#                                                                        
# Name of Boss:                                                          
# $game_temp.enemy_name = "Name"                                          
#                                                                        
# Amount of HP:                                                          
# $game_temp.enemy_maxhp = X                                              
# $game_temp.enemy_hp = X                                                
#                                                                        
# Position of the HUD:                                                    
# $blizzabs_enemy_boss_wind_x = X                                              
# $blizzabs_enemy_boss_wind_y = X    
#==============================================================================
# Once you've done that simply turn on the Boss Mode Meter                
# using SWITCH 49 (Default).                                              
#==============================================================================
#                                                                        
# Graphics required:                                                      
#                                                                        
# E_HP                                                                    
# E_HP_BOSS                                                              
# E_HP_Number                                                            
# E_Layout                                                                
# E_Layout_BOSS                                                          
#                                                                        
# All images must be in the picture folder.  
#
# Special Thanks:
# Moghunter
#                                                                        
#==============================================================================
 
module LiTTleDRAgo
  
# Switch ID to disable the Enemy HP meter
  INFO_DISABLE_SWITCH_ID = 48  
# Time info is displayed on-screen
  ENEMY_INFO_FADE_TIME = 2 #(second)
# Position of the Enemy HP HUD
  E_HUD_X = 0     + 250
  E_HUD_Y = 0     + 10
# Position of the Enemy HP layout
  E_LAYOUT_X = 0  + 250
  E_LAYOUT_Y = 0  + 10
# Position of the Enemy HP number
  E_NUMBER_X = 30 + 250
  E_NUMBER_Y = 15 + 10
# Position of the Enemy HP meter
  E_METER_X = 28  + 250
  E_METER_Y = 16  + 10
# Position of the Enemy's name
  E_NAME_X = 60   + 250
  E_NAME_Y = -10  + 10
 
#==============================================================================
#.................................[BOSS MODE]..................................
#==============================================================================
 
# Switch ID to enable the Boss Mode.....................................[SWITCH]
  BOSS_INFO_SWITCH_ID = 49    
# Position of the Boss HP layout
  E_LAYOUT_BOSS_X = 0
  E_LAYOUT_BOSS_Y = 0
# Position of the Boss HP number
  E_NUMBER_BOSS_X = 210
  E_NUMBER_BOSS_Y = 22
# Position of the Boss HP meter
  E_METER_BOSS_X  = 2
  E_METER_BOSS_Y  = 18
# Position of the Boss' name
  E_NAME_BOSS_X   = 70
  E_NAME_BOSS_Y   = -10
# Enemy Meter Shake
  E_METER_SHAKE   = true
#--------------------------------------------------------------------------
# CONFIG END
#--------------------------------------------------------------------------
end
 
class Map_Battler < Game_Character
  if BlizzABS::VERSION >= 2.7
  #--------------------------------------------------------------------------
  # Action Effect
  #--------------------------------------------------------------------------
   alias action_enemyhp_earlier action_effect
   def action_effect(action)
      action_enemyhp_earlier(action)
      enemyhp_displayer(action)
   end
  #--------------------------------------------------------------------------
  # Enemy HP Displayer
  #--------------------------------------------------------------------------
    def enemyhp_displayer(value = 0)
      if self.damage_done?
        if !@battler.is_a?(Game_Actor)
          $game_temp.enemy_name  = @battler.name
          $game_temp.enemy_hp    = @battler.hp
          $game_temp.enemy_maxhp = @battler.maxhp
        end
      end
    end
  end
end
 
 
#==============================================================================
# Enemy_HP_Sprite
#==============================================================================
class Enemy_HP_Sprite < Sprite  
  include LiTTleDRAgo
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
  def initialize
    @viewport = Viewport.new(0, 0, 640, 480)
    @viewport.z = 6000    
    super(@viewport)
    @name = $game_temp.enemy_name
    @hp = $game_temp.enemy_hp
    @maxhp = $game_temp.enemy_maxhp
    @hp_ref = @hp
    @boss_mode = $game_switches[LiTTleDRAgo::BOSS_INFO_SWITCH_ID]
    # Layout -------------------------------------------------------------------
    if @boss_mode == true
      @layout_image = RPG::Cache.picture($game_temp.enemy_layout_boss)
      @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
      @layout_sprite = Sprite.new
      @layout_sprite.bitmap = @layout_bitmap
      @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
      @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
      @layout_sprite.z = 5007
      @layout_sprite.x = E_LAYOUT_BOSS_X + $blizzabs_enemy_boss_wind_x
      @layout_sprite.y = E_LAYOUT_BOSS_Y + $blizzabs_enemy_boss_wind_y      
      @layout_sprite.opacity = $game_temp.enemy_hud_opa          
    else
      @layout_image = RPG::Cache.picture($game_temp.enemy_layout)
      @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
      @layout_sprite = Sprite.new
      @layout_sprite.bitmap = @layout_bitmap
      @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
      @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
      @layout_sprite.z = 5007
      @layout_sprite.x = E_HUD_X + E_LAYOUT_X + $game_temp.enemy_hud_x
      @layout_sprite.y = E_HUD_Y + E_LAYOUT_Y + $game_temp.enemy_hud_y      
      @layout_sprite.opacity = $game_temp.enemy_hud_opa
    end
    # HP ---------------------------------------------------------------------
    @hp_number_image = RPG::Cache.picture($game_temp.enemy_hp_number)
    @hp_number_bitmap = Bitmap.new(@hp_number_image.width,@hp_number_image.height)
    @hp_number_sprite = Sprite.new
    @hp_number_sprite.bitmap = @hp_number_bitmap
    @hp_number_sprite.z = 5009
    @hp_number_sprite.x = E_HUD_X + E_NUMBER_X + $game_temp.enemy_hud_x
    @hp_number_sprite.y = E_HUD_Y + E_NUMBER_Y + $game_temp.enemy_hud_y
    @hp_number_sprite.opacity = $game_temp.enemy_hud_opa
    @im_cw = @hp_number_image.width / 10
    @im_ch = @hp_number_image.height
    @hp_src_rect = Rect.new(@im_cw,0, @im_cw, @im_ch)
    @hp_number_text = @hp.abs.to_s.split(//)
    for r in 0..@hp_number_text.size - 1        
         @hp_number_abs = @hp_number_text[r].to_i
         @hp_src_rect = Rect.new(@im_cw * @hp_number_abs, 0, @im_cw, @im_ch)
         @hp_number_bitmap.blt(((@im_cw - 7) *  r), 0, @hp_number_image, @hp_src_rect)        
    end
      @hp_flow = 0
      @hp_damage_flow = 0    
   if @boss_mode == true  
      @hp_image = RPG::Cache.picture($game_temp.enemy_hp_boss_hud)
      @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
      @hp_range = @hp_image.width / 3
      @hp_width = @hp_range  * @hp / @maxhp
      @hp_height = @hp_image.height / 2
      @hp_width_old = @hp_width
      @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
      @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
      @hp_sprite = Sprite.new
      @hp_sprite.bitmap = @hp_bitmap
      @hp_sprite.z = 5008
      @hp_sprite.x = E_METER_BOSS_X + $blizzabs_enemy_boss_wind_x
      @hp_sprite.x = E_METER_BOSS_Y + $blizzabs_enemy_boss_wind_y
      @hp_sprite.opacity = $game_temp.enemy_hud_opa      
    else  
      @hp_image = RPG::Cache.picture($game_temp.enemy_hp_hud)
      @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
      @hp_range = @hp_image.width / 3
      @hp_width = @hp_range  * @hp / @maxhp
      @hp_height = @hp_image.height / 2
      @hp_width_old = @hp_width
      @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
      @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
      @hp_sprite = Sprite.new
      @hp_sprite.bitmap = @hp_bitmap
      @hp_sprite.z = 5008
      @hp_sprite.x = E_HUD_X + E_METER_X + $game_temp.enemy_hud_x
      @hp_sprite.y = E_HUD_Y + E_METER_Y + $game_temp.enemy_hud_y
      @hp_sprite.opacity = $game_temp.enemy_hud_opa
    end    
    hp_flow_update
    #Enemy_Name --------------------------------------
    @ename = Sprite.new
    @ename.bitmap = Bitmap.new(160,100)
    @ename.x = E_HUD_X + E_NAME_X + $game_temp.enemy_hud_x
    @ename.y = E_HUD_Y + E_NAME_Y + $game_temp.enemy_hud_y
    @ename.opacity = $game_temp.enemy_hud_opa
    @ename.z = 5009
    @ename.bitmap.font.size = 14
    @ename.bitmap.font.bold = true
    @ename.bitmap.font.italic = true
    @ename.bitmap.draw_hemming_text(0, 0, 100, 32, @name,0)
    e_hud_pos
    e_hud_visible
  end
 
#--------------------------------------------------------------------------
# Dispose
#--------------------------------------------------------------------------
  def dispose
    #Hp Number Dispose
    [@hp_number_sprite.bitmap, @hp_number_sprite, @hp_number_bitmap].each {|s| s.dispose if s != nil}
    [@hp_number_sprite.bitmap, @hp_number_sprite, @hp_number_bitmap].each {|s| s = nil if s != nil}
    #HP Meter Dispose
    [@hp_sprite.bitmap, @hp_sprite, @hp_bitmap].each {|s| s.dispose if s != nil}
    [@hp_sprite.bitmap, @hp_sprite, @hp_bitmap].each {|s| s = nil if s != nil}
    #Ename Dispose
    [@ename.bitmap, @ename].each {|s| s.dispose if s != nil}
    [@ename.bitmap, @ename].each {|s| s = nil if s != nil}
    #Layout Dispose
    [@layout_sprite.bitmap, @layout_sprite, @layout_bitmap].each {|s| s.dispose if s != nil}
    [@layout_sprite.bitmap, @layout_sprite, @layout_bitmap].each {|s| s = nil if s != nil}    
  end
 
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
  def update
     e_hud_visible
     name_refresh      if @name != $game_temp.enemy_name
     hp_number_refresh if @hp != $game_temp.enemy_hp or @maxhp != $game_temp.enemy_maxhp
     hp_flow_update
     e_hud_pos
     e_hud_slide      
     e_boss_mode_check if @boss_mode != $game_switches[LiTTleDRAgo::BOSS_INFO_SWITCH_ID]
  end
  
#--------------------------------------------------------------------------
# E Boss Mode Check
#--------------------------------------------------------------------------
  def e_boss_mode_check
    @boss_mode = $game_switches[LiTTleDRAgo::BOSS_INFO_SWITCH_ID]
    #HP Meter Dispose
    [@hp_sprite.bitmap, @hp_sprite, @hp_bitmap].each {|s| s.dispose if s != nil}
    [@hp_sprite.bitmap, @hp_sprite, @hp_bitmap].each {|s| s = nil if s != nil}
    #Layout Dispose
    [@layout_sprite.bitmap, @layout_sprite, @layout_bitmap].each {|s| s.dispose if s != nil}
    [@layout_sprite.bitmap, @layout_sprite, @layout_bitmap].each {|s| s = nil if s != nil}    
     if @boss_mode
        #Boss
        @layout_image = RPG::Cache.picture($game_temp.enemy_layout_boss)
        @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
        @layout_sprite = Sprite.new
        @layout_sprite.bitmap = @layout_bitmap
        @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
        @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
        @layout_sprite.z = 5007
        @layout_sprite.x = E_LAYOUT_BOSS_X + $blizzabs_enemy_boss_wind_x
        @layout_sprite.y = E_LAYOUT_BOSS_Y + $blizzabs_enemy_boss_wind_y      
        @layout_sprite.opacity = $game_temp.enemy_hud_opa        
        @hp_image = RPG::Cache.picture($game_temp.enemy_hp_boss_hud)
        @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
        @hp_range = @hp_image.width / 3
        @hp_width = @hp_range  * @hp / @maxhp
        @hp_height = @hp_image.height / 2
        @hp_width_old = @hp_width
        @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
        @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
        @hp_sprite = Sprite.new
        @hp_sprite.bitmap = @hp_bitmap
        @hp_sprite.z = 5008
        @hp_sprite.x = E_METER_BOSS_X + $blizzabs_enemy_boss_wind_x
        @hp_sprite.x = E_METER_BOSS_Y + $blizzabs_enemy_boss_wind_y
        @hp_sprite.opacity = $game_temp.enemy_hud_opa
        e_hud_pos
     else
        #Normal
        @layout_image = RPG::Cache.picture($game_temp.enemy_layout)
        @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
        @layout_sprite = Sprite.new
        @layout_sprite.bitmap = @layout_bitmap
        @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
        @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
        @layout_sprite.z = 5007
        @layout_sprite.x = E_HUD_X + E_LAYOUT_X + $game_temp.enemy_hud_x
        @layout_sprite.y = E_HUD_Y + E_LAYOUT_Y + $game_temp.enemy_hud_y      
        @layout_sprite.opacity = $game_temp.enemy_hud_opa        
        @hp_image = RPG::Cache.picture($game_temp.enemy_hp_hud)
        @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
        @hp_range = @hp_image.width / 3
        @hp_width = @hp_range  * @hp / @maxhp
        @hp_height = @hp_image.height / 2
        @hp_width_old = @hp_width
        @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
        @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
        @hp_sprite = Sprite.new
        @hp_sprite.bitmap = @hp_bitmap
        @hp_sprite.z = 5008
        @hp_sprite.x = E_HUD_X + E_METER_X + $game_temp.enemy_hud_x
        @hp_sprite.y = E_HUD_Y + E_METER_Y + $game_temp.enemy_hud_y
        @hp_sprite.opacity = $game_temp.enemy_hud_opa      
        [$game_temp.enemy_hud_opa, $game_temp.enemy_info_ref,
        $game_temp.enemy_hud_x].each {|s| s = 0}
        e_hud_pos
     end
  end
 
#--------------------------------------------------------------------------
# E Hud Visible
#--------------------------------------------------------------------------
  def e_hud_visible
    [@ename, @hp_sprite, @hp_number_sprite, @layout_sprite].each {|s|
      s.visible = false} if $game_switches[LiTTleDRAgo::INFO_DISABLE_SWITCH_ID]
    [@ename, @hp_sprite, @hp_number_sprite, @layout_sprite].each {|s|
      s.visible = true} if !$game_switches[LiTTleDRAgo::INFO_DISABLE_SWITCH_ID]
  end
 
#--------------------------------------------------------------------------
# E Hud Slide
#--------------------------------------------------------------------------
  def e_hud_slide
    $game_temp.enemy_info_ref -= 1  if $game_temp.enemy_info_ref > 0
    $game_temp.enemy_hud_shake -= 1 if $game_temp.enemy_hud_shake > 0
    if $game_temp.enemy_info_ref == 0 &&
       $game_temp.enemy_hud_opa > 0 &&
       !$game_switches[LiTTleDRAgo::BOSS_INFO_SWITCH_ID]
       $game_temp.enemy_hud_x += 1
       $game_temp.enemy_hud_opa -= 10
     elsif $game_temp.enemy_info_ref > 0 ||
       $game_switches[LiTTleDRAgo::BOSS_INFO_SWITCH_ID]
       $game_temp.enemy_hud_opa += 10 if $game_temp.enemy_hud_opa < 255
       $game_temp.enemy_hud_x += 1    if $game_temp.enemy_hud_x < 0
    end
  end
 
#--------------------------------------------------------------------------
# E Hud Pos
#--------------------------------------------------------------------------
  def e_hud_pos
    if $game_switches[LiTTleDRAgo::BOSS_INFO_SWITCH_ID]      
      if $game_temp.enemy_hud_shake > 0 && LiTTleDRAgo::E_METER_SHAKE
        @layout_sprite.x = E_LAYOUT_BOSS_X + $blizzabs_enemy_boss_wind_x
        @layout_sprite.y = E_LAYOUT_BOSS_Y + $blizzabs_enemy_boss_wind_y + rand(4)
        @hp_sprite.x = E_METER_BOSS_X + $blizzabs_enemy_boss_wind_x
        @hp_sprite.y = E_METER_BOSS_Y + $blizzabs_enemy_boss_wind_y + rand(4)
      else
        @layout_sprite.x = E_LAYOUT_BOSS_X + $blizzabs_enemy_boss_wind_x
        @layout_sprite.y = E_LAYOUT_BOSS_Y + $blizzabs_enemy_boss_wind_y
        @hp_sprite.x = E_METER_BOSS_X + $blizzabs_enemy_boss_wind_x
        @hp_sprite.y = E_METER_BOSS_Y + $blizzabs_enemy_boss_wind_y
      end
      @hp_number_sprite.x = E_NUMBER_BOSS_X + $blizzabs_enemy_boss_wind_x
      @hp_number_sprite.y = E_NUMBER_BOSS_Y + $blizzabs_enemy_boss_wind_y
      @ename.x = E_NAME_BOSS_X + $blizzabs_enemy_boss_wind_x
      @ename.y = E_NAME_BOSS_Y + $blizzabs_enemy_boss_wind_y
    else
      @layout_sprite.x = E_HUD_X + E_LAYOUT_X + $game_temp.enemy_hud_x
      @layout_sprite.y = E_HUD_Y + E_LAYOUT_Y + $game_temp.enemy_hud_y
      @hp_number_sprite.x = E_HUD_X + E_NUMBER_X + $game_temp.enemy_hud_x
      @hp_number_sprite.y = E_HUD_Y + E_NUMBER_Y + $game_temp.enemy_hud_y
      @hp_sprite.x = E_HUD_X + E_METER_X + $game_temp.enemy_hud_x
      @hp_sprite.y = E_HUD_Y + E_METER_Y + $game_temp.enemy_hud_y
      @ename.x = E_HUD_X + E_NAME_X + $game_temp.enemy_hud_x
      @ename.y = E_HUD_Y + E_NAME_Y + $game_temp.enemy_hud_y
    end
    [@hp_number_sprite, @layout_sprite, @hp_sprite,
    @ename].each {|s| s.opacity = $game_temp.enemy_hud_opa}
  end  
 
#--------------------------------------------------------------------------
# Name Refresh
#--------------------------------------------------------------------------
  def name_refresh
    @ename.bitmap.clear
    @name = $game_temp.enemy_name
    @ename.bitmap.draw_hemming_text(0, 0, 100, 32, @name)
  end
 
#--------------------------------------------------------------------------
# HP Number Refresh
#--------------------------------------------------------------------------
  def hp_number_refresh
    
      $game_temp.enemy_hud_x = -20    if $game_temp.enemy_hud_opa < 100
      $game_temp.enemy_hud_x = 0      if $game_temp.enemy_hud_opa >= 100
      $game_temp.enemy_info_ref = 40 * ENEMY_INFO_FADE_TIME
      @hp_number_sprite.bitmap.clear
      $game_temp.enemy_hud_shake = 30 if @hp > $game_temp.enemy_hp
      @hp = $game_temp.enemy_hp
      @maxhp = $game_temp.enemy_maxhp      
      @hp_number_text = @hp.abs.to_s.split(//)
      for r in 0..@hp_number_text.size - 1        
         @hp_number_abs = @hp_number_text[r].to_i
         @hp_src_rect = Rect.new(@im_cw * @hp_number_abs, 0, @im_cw, @im_ch)
         @hp_number_bitmap.blt(((@im_cw - 7) *  r) , 0, @hp_number_image, @hp_src_rect)        
       end  
     end  
 
#--------------------------------------------------------------------------
# HP Old
#--------------------------------------------------------------------------
  def hp_old
    @hp_width_old = @hp_range  * $game_temp.enemy_oldhp / $game_temp.enemy_maxhp
    $game_temp.enemy_refresh_old = false
  end
 
#--------------------------------------------------------------------------
# HP Flow Update
#--------------------------------------------------------------------------
  def hp_flow_update
      @hp_sprite.bitmap.clear
      @hp_width = @hp_range  * $game_temp.enemy_hp / $game_temp.enemy_maxhp
      hp_old if $game_temp.enemy_refresh_old
      #HP Damage---------------------------------
        if @hp_width_old != @hp_width
          valor = (@hp_width_old - @hp_width) * 3 / 100
          valor = 0.5               if valor < 1
          @hp_width_old -= valor    if @hp_width_old > @hp_width  
          @hp_width_old = @hp_width if @hp_width_old < @hp_width    
          @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
          @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
        end        
      #HP Real------------------------------------
      @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
      @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          
      @hp_flow += 5  
      @hp_flow = 0  if @hp_flow >= @hp_image.width - @hp_range
  end  
end  
#==============================================================================
# Scene_Map
#==============================================================================
class Scene_Map
 
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------
  alias drago_enhp_main main
  def main
    @enhp = Enemy_HP_Sprite.new
    drago_enhp_main  
    [@enhp].each {|s| s.dispose if s != nil}
    [@enhp].each {|s| s = nil if s != nil}
  end  
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
  alias drago_enhp_update update
  def update
    drago_enhp_update
    [@enhp].each {|s| s.update if s != nil}
  end  
end
#==============================================================================
# Bitmap
#==============================================================================
class Bitmap
  def draw_hemming_text(x, y, w, h, t, a = 0)
    original_color = self.font.color.dup;  self.font.color = Color.new(0,0,0,255)
    self.draw_text(x , y , w, h, t, a);    self.draw_text(x , y+2, w, h, t, a)    
    self.draw_text(x+2, y+2, w, h, t, a);  self.draw_text(x+2, y , w, h, t, a)  
    self.font.color = original_color;      self.draw_text(x+1, y+1, w, h, t, a)
  end
end
#==============================================================================
# Game_Temp
#==============================================================================
class Game_Temp
  attr_accessor :enemy_hp
  attr_accessor :enemy_maxhp
  attr_accessor :enemy_oldhp
  attr_accessor :enemy_name
  attr_accessor :enemy_hud_x
  attr_accessor :enemy_hud_y
  attr_accessor :enemy_hud_opa
  attr_accessor :enemy_hud_shake
  attr_accessor :enemy_info_ref
  attr_accessor :enemy_refresh_old
  attr_accessor :enemy_number_refresh
  attr_accessor :enemy_hp_hud, :enemy_hp_boss_hud
  attr_accessor :enemy_layout, :enemy_layout_boss
  attr_accessor :enemy_hp_number
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
  alias enemy_hud_initialize initialize
  def initialize
    enemy_hud_initialize  
     @enemy_hp, @enemy_oldhp, @enemy_hud_x, @enemy_hud_y, @enemy_hud_opa,
     @enemy_hud_shake, @enemy_info_ref = 0,0,0,0,0,0,0
     @enemy_refresh_old = @enemy_number_refresh = false
     @enemy_maxhp = 1
     @enemy_name = ""
     @enemy_hp_hud = "E_HP"
     @enemy_hp_boss_hud = "E_HP_BOSS"
     @enemy_layout = "E_Layout"
     @enemy_layout_boss = "E_Layout_BOSS"
     @enemy_hp_number = "E_HP_Number"
     $blizzabs_enemy_boss_wind_x = 190
     $blizzabs_enemy_boss_wind_y = 30    
  end
end
 
$drago_blizzabs_enemy_hp = true
$BlizzABS = BlizzABS::Processor.new

En el evento en el que defines con $game_temp el nombre del enemigo y demás puedes definir también el gráfico a usar.

Te pongo los que hay definidos por defecto y creo que con eso entenderás como cambiarlos, mira la carpeta Pictures para más detalles.

[line]$game_temp.enemy_hp_hud = "E_HP"
$game_temp.enemy_hp_boss_hud = "E_HP_BOSS"
$game_temp.enemy_layout = "E_Layout"
$game_temp.enemy_layout_boss = "E_Layout_BOSS"
$game_temp.enemy_hp_number = "E_HP_Number"[/line]
avatar
Wecoc
Administrador
Administrador



Créditos 12278

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Diferentes HUD in Blizz-ABS

Mensaje por Lect el 2018-07-21, 00:33

Acabó de probarlo y es exactamente a lo que estaba apuntando. Smile
Ahora solo debo ajustar un poco la posición de las imagenes, y arreglar un pequeño detalle que encontré recien, pero lo que más queria ya esta...

Realmente,  muchas gracias. notworthy
avatar
Lect
Iniciado
Iniciado

0/3

Créditos 224

Gracias : 6

Volver arriba Ir abajo

RPG Maker XP Re: [Pedido] Diferentes HUD in Blizz-ABS

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.