Dados Do Inimigo Na Batalha

22 de janeiro de 2013

Este é um script para o RPG Maker XP que, ao ser instalado no jogo/projeto, mostra dados dos inimigos durante as batalhas.

Os dados ficam constantemente acima de cada monstro na batalha, sendo seu HP, SP e nome.

O script é de fácil instalação, e é personalizável. Porém, como não tem-se os comentários, não pude identificar nem como personalizar nem o autor.

Para instalar, basta inserir o código abaixo acima do Main:

#==============================================================================
# ?????www.66RPG.com,???????????
#==============================================================================
# ¦ ????HP&SP(ver 0.98)

# ? ??????????
#==============================================================================
module PLAN_HPSP_DRAW
 FONT_NAME         = ["Arial"]    # ????
 FONT_SIZE         =  18                            # ???????
 FONT_BOLD         = true                              # ??
 FONT_ITALIC       = true                              # ??

 DRAW_NAME         = true                              # ?????
 DRAW_HP           = true                              # HP ???
 DRAW_SP           = true                              # SP ???

 DRAW_WIDTH        =  80                               # ???
 DRAW_HEIGHT       = 3 * 32                            # ????
 DRAW_SPACE        =   0                               # ??
 DRAW_Y            =  24                               # Y ?????
end


#==============================================================================
# ¦ Sprite_Battler
#==============================================================================

class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 # ? ?????????
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_initialize initialize
 def initialize(viewport, battler = nil)
   # ?????????
   plan_enemy_hpsp_draw_initialize(viewport, battler)
   # ???????
   if @battler.is_a?(Game_Enemy)
     width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32
     height = PLAN_HPSP_DRAW::DRAW_HEIGHT + 32
     x = @battler.screen_x - width / 2
     y = @battler.screen_y - height + 32 + PLAN_HPSP_DRAW::DRAW_Y
     @enemy_hpsp_window = Window_Base.new(x, y, width, height)
     @enemy_hpsp_window.contents = Bitmap.new(width - 32, height - 32)
     @enemy_hpsp_window.contents.font.name = PLAN_HPSP_DRAW::FONT_NAME
     @enemy_hpsp_window.contents.font.size = PLAN_HPSP_DRAW::FONT_SIZE
     @enemy_hpsp_window.contents.font.bold = PLAN_HPSP_DRAW::FONT_BOLD
     @enemy_hpsp_window.contents.font.italic = PLAN_HPSP_DRAW::FONT_ITALIC
     y = 0
     @old_enemy_hpsp = []
     one_line = ((PLAN_HPSP_DRAW::FONT_SIZE * 100 / 28) * 32) / 100
     if PLAN_HPSP_DRAW::DRAW_NAME
       @enemy_hpsp_window.draw_actor_name(@battler, 0, y, width - 32)
       y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
       @old_enemy_hpsp.push(@battler.name)
     end
     if PLAN_HPSP_DRAW::DRAW_HP
       @enemy_hpsp_window.draw_actor_hp(@battler, 0, y, width - 32)
       y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
       @old_enemy_hpsp.push(@battler.hp)
     end
     if PLAN_HPSP_DRAW::DRAW_SP
       @enemy_hpsp_window.draw_actor_sp(@battler, 0, y, width - 32)
       @old_enemy_hpsp.push(@battler.sp)
     end
     @enemy_hpsp_window.opacity = 0
     @enemy_hpsp_window.contents_opacity = 0
     @enemy_hpsp_window.z = -2
   end
 end
 #--------------------------------------------------------------------------
 # ? ??
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_dispose dispose
 def dispose
   # ???????
   if @battler.is_a?(Game_Enemy)
     @enemy_hpsp_window.dispose
   end
   # ?????????
   plan_enemy_hpsp_draw_dispose
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_update update
 def update
   # ?????????
   plan_enemy_hpsp_draw_update
   # ???????
   if @battler.is_a?(Game_Enemy)
     @enemy_hpsp_window.visible = @battler_visible
   # ???????????
     width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32
     @enemy_hpsp_window.x = self.x - width / 2
     @now_enemy_hpsp = []
     if PLAN_HPSP_DRAW::DRAW_NAME
       @now_enemy_hpsp.push(@battler.name)
     end
     if PLAN_HPSP_DRAW::DRAW_HP
       @now_enemy_hpsp.push(@battler.hp)
     end
     if PLAN_HPSP_DRAW::DRAW_SP
       @now_enemy_hpsp.push(@battler.sp)
     end
     if @old_enemy_hpsp != @now_enemy_hpsp and $game_temp.enemy_hpsp_refresh
       @old_enemy_hpsp = @now_enemy_hpsp
       @enemy_hpsp_window.contents.clear
       y = 0
       width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32
       one_line = ((PLAN_HPSP_DRAW::FONT_SIZE * 100 / 28) * 32) / 100
       if PLAN_HPSP_DRAW::DRAW_NAME
         @enemy_hpsp_window.draw_actor_name(@battler, 0, y, width - 32)
         y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
       end
       if PLAN_HPSP_DRAW::DRAW_HP
         @enemy_hpsp_window.draw_actor_hp(@battler, 0, y, width - 32)
         y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
       end
       if PLAN_HPSP_DRAW::DRAW_SP
         @enemy_hpsp_window.draw_actor_sp(@battler, 0, y, width - 32)
       end
       Graphics.frame_reset
     end
   end
 end
 #--------------------------------------------------------------------------
 # ? visible ???
 #--------------------------------------------------------------------------
 if !method_defined?("plan_enemy_hpsp_draw_visible=")
   alias plan_enemy_hpsp_draw_visible= visible=
 end
 def visible=(bool)
   # ???????
   if @battler.is_a?(Game_Enemy)
     @enemy_hpsp_window.visible = bool
   end
   # ?????????
   self.plan_enemy_hpsp_draw_visible=(bool)
 end
 #--------------------------------------------------------------------------
 # ? ???????
 #--------------------------------------------------------------------------
 if !method_defined?("plan_enemy_hpsp_draw_opacity=")
   alias plan_enemy_hpsp_draw_opacity= opacity=
 end
 def opacity=(n)
   # ?????????
   self.plan_enemy_hpsp_draw_opacity=(n)
   # ???????
   if @battler.is_a?(Game_Enemy)
     @enemy_hpsp_window.contents_opacity = n
   end
 end
 #--------------------------------------------------------------------------
 # ? ????
 #--------------------------------------------------------------------------
 def damage(value, critical)
   super(value, critical)
   bitmap = @_damage_sprite.bitmap
   @_damage_sprite.dispose
   @_damage_sprite = ::Sprite.new(Viewport.new(0, 0, 640, 480))
   @_damage_sprite.bitmap = bitmap
   @_damage_sprite.ox = 80
   @_damage_sprite.oy = 20
   @_damage_sprite.x = self.x
   @_damage_sprite.y = self.y - self.oy / 2
   @_damage_sprite.viewport.z = self.viewport.z + 1
   @_damage_sprite.z = 3000
   @_damage_duration = 40
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 def dispose_damage
   if @_damage_sprite != nil
     @_damage_sprite.viewport.dispose
   end
   super
 end
end

 

 

#==============================================================================
# ¦ Game_Temp
#==============================================================================

class Game_Temp
 #--------------------------------------------------------------------------
 # ? ??????????
 #--------------------------------------------------------------------------
 attr_accessor :enemy_hpsp_refresh
 #--------------------------------------------------------------------------
 # ? ?????????
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_initialize initialize
 def initialize
   # ?????????
   plan_enemy_hpsp_draw_initialize
   @enemy_hpsp_refresh = false
 end
end

#==============================================================================
# ¦ Scene_Battle
#==============================================================================

class Scene_Battle
 #--------------------------------------------------------------------------
 # ? ??????????? (?????+????????)
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_start_phase1 start_phase1
 def start_phase1
   $game_temp.enemy_hpsp_refresh = true
   # ?????????
   plan_enemy_hpsp_draw_start_phase1
 end
 #--------------------------------------------------------------------------
 # ? ?????????????? (?????+????????)
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_start_phase2 start_phase2
 def start_phase2
   $game_temp.enemy_hpsp_refresh = false
   # ?????????
   plan_enemy_hpsp_draw_start_phase2
 end
 #--------------------------------------------------------------------------
 # ? ?????? (??????? ???? 5 : ??????)
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_update_phase4_step5 update_phase4_step5
 def update_phase4_step5
   # ?????????
   plan_enemy_hpsp_draw_update_phase4_step5
   $game_temp.enemy_hpsp_refresh = true
 end
 #--------------------------------------------------------------------------
 # ? ?????? (??????? ???? 6 : ??????)
 #--------------------------------------------------------------------------
 alias plan_enemy_hpsp_draw_update_phase4_step6 update_phase4_step6
 def update_phase4_step6
   # ?????????
   plan_enemy_hpsp_draw_update_phase4_step6
   $game_temp.enemy_hpsp_refresh = false
 end
end


#==============================================================================
# ¦ Window_Base
#==============================================================================

class Window_Base < Window
 #--------------------------------------------------------------------------
 # ? ?????
 #--------------------------------------------------------------------------
 def draw_actor_name(actor, x, y, width = 220, align = 0)
   if $scene.is_a?(Scene_Battle)
     flag = actor.name.sub!(/\*f/, '').nil? ? false : true
     self.contents.font.color = Color.new(0, 0, 0, 192)
   self.contents.draw_text(x+1, y, width, 32, actor.name, align)
   self.contents.draw_text(x, y+1, width, 32, actor.name, align)
 end
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, width, 32, actor.name, align)
 end
 
 alias draw_actor_hp_original draw_actor_hp
 def draw_actor_hp(actor, x, y, width = 144)
    # Calculate if there is draw space for MaxHP
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    # Draw Shadow Effects for Battles
    if $scene.is_a?(Scene_Battle)
      self.contents.font.color = Color.new(0, 0, 0, 192)
      self.contents.draw_text(x, y+1, 32, 32, $data_system.words.hp)
      self.contents.draw_text(x+1, y, 32, 32, $data_system.words.hp)
      self.contents.draw_text(hp_x, y+1, 48, 32, actor.hp.to_s, 2)
      self.contents.draw_text(hp_x+1, y, 48, 32, actor.hp.to_s, 2)
    if flag
      self.contents.draw_text(hp_x + 49, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 48, y+1, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y+1, 48, 32, actor.maxhp.to_s)
      self.contents.draw_text(hp_x + 61, y, 48, 32, actor.maxhp.to_s)
    end
    end
    # Draw "HP" text string
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    # Draw HP
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
    # Draw MaxHP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end
  
  alias draw_actor_sp_original draw_actor_sp
  def draw_actor_sp(actor, x, y, width = 144)
    # Calculate if there is draw space for MaxHP
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    # Draw Shadow Effects for Battles
    if $scene.is_a?(Scene_Battle)
      self.contents.font.color = Color.new(0, 0, 0, 192)
      self.contents.draw_text(x, y+1, 32, 32, $data_system.words.sp)
      self.contents.draw_text(x+1, y, 32, 32, $data_system.words.sp)
      self.contents.draw_text(sp_x, y+1, 48, 32, actor.sp.to_s, 2)
      self.contents.draw_text(sp_x+1, y, 48, 32, actor.sp.to_s, 2)
    if flag
      self.contents.draw_text(hp_x + 49, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 48, y+1, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y+1, 48, 32, actor.maxsp.to_s)
      self.contents.draw_text(hp_x + 61, y, 48, 32, actor.maxsp.to_s)
    end
    end
    # Draw "SP" text string
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    # Draw SP
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    # Draw MaxSP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
 
 #--------------------------------------------------------------------------
 # ? ???????
 #--------------------------------------------------------------------------
 def draw_actor_state(actor, x, y, width = 120)
   # ?????????
   text = make_battler_state_text(actor, width, true)
   self.contents.draw_text(x, y, width, 32, text, 1)
 end
end

Dados Do Inimigo Na Batalha

Informações adicionais

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!