- #============================================================================== 
- # ■ 显示敌人血条 by 沉影不器 
- #------------------------------------------------------------------------------ 
- # 功能描述: 
- #     ① 战斗时让敌人显示血条,宽度可定制 
- #     ② 可选功能: 显示具体生命值 显示敌人名称 
- # 使用说明: 
- #     ① 脚本插入到Main之前 
- #     ② 脚本第19行设定血条的默认宽度 
- #        为个别敌人指定血条宽度是"数据库-敌角色-备注栏"填写"hp_width=数值" 
- #     ③ 脚本第20行选择是否显示具体生命值 
- #     ④ 脚本第21行选择是否显示敌人名称 
- #     ⑤ 其它参数设定详见脚本 
- #     ⑥ 此脚本需要基础脚本[读取rmvx备注栏指定字段] 
- #============================================================================== 
- # ■ 参数设定 
- #============================================================================== 
- module Enemy_HP 
-   HP_WIDTH    = 32                    # 血条的默认宽度 
-   SHOW_VALUE = true                  # 是否显示敌人生命值 
-   SHOW_NAME = true                    # 是否显示敌人名称 
-   NAME_SIZE = 16                      # 敌人名称字体大小 
-   NAME_COLOR = 0                      # 敌人名称字体颜色 
- end 
- #============================================================================== 
- # ■ RPG 
- #============================================================================== 
- module RPG 
-   class Enemy 
-     def hp_width 
-       return self.read_note('hp_width') 
-     end 
-   end 
- end 
- #============================================================================== 
- # ■ Game_Enemy 
- #============================================================================== 
- class Game_Enemy < Game_Battler 
-   #-------------------------------------------------------------------------- 
-   # ○ 血条宽度 
-   #-------------------------------------------------------------------------- 
-   def hp_width 
-     return $data_enemies[@enemy_id].hp_width 
-   end 
- end 
- #============================================================================== 
- # ■ Sprite_Battler 
- #============================================================================== 
- class Sprite_Battler < Sprite_Base 
-   #-------------------------------------------------------------------------- 
-   # ◎ 初始化对象 
-   #     viewport : 视区 
-   #     battler  : 战斗者 (Game_Battler) 
-   #-------------------------------------------------------------------------- 
-   def initialize(viewport, battler = nil) 
-     super(viewport) 
-     [url=home.php?mod=space&uid=133701]@battler[/url] = battler 
-     @battler_visible = false 
-     @effect_type = 0            # 效果种类 
-     @effect_duration = 0        # 效果剩余时间 
-     if @battler.is_a?(Game_Enemy) 
-       width = hp_width + 32 
-       height = 24 + 32 
-       x = @battler.screen_x - width/2 
-       y = @battler.screen_y - height/2 
-       # 调节名称位置 
-       if Enemy_HP::SHOW_NAME 
-         height += Enemy_HP::NAME_SIZE + 2 
-         y -= Enemy_HP::NAME_SIZE + 2 
-       end 
-       # 生成血条窗体 
-       @enemy_hp_window = Window_Base.new(x, y, width, height) 
-       @enemy_hp_window.opacity = 0 
-       @enemy_hp_window.contents_opacity = 0 
-       @enemy_hp_window.contents = Bitmap.new(width - 32, height - 32) 
-       @enemy_hp_window.draw_enemy_info(@battler, 0, 0, width - 32) 
-       # 保存旧血量(控制刷新) 
-       @old_hp = -1 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ◎ 释放 
-   #-------------------------------------------------------------------------- 
-   def dispose 
-     if self.bitmap != nil 
-       self.bitmap.dispose 
-       @enemy_hp_window.dispose 
-     end 
-     super 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ◎ 释放敌人活动块 
-   #-------------------------------------------------------------------------- 
-   def dispose_enemies 
-     for sprite in @enemy_sprites 
-       sprite.dispose 
-       @enemy_hp_window.dispose 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ◎ 更新画面 
-   #-------------------------------------------------------------------------- 
-   def update 
-     super 
-     if @battler == nil 
-       self.bitmap = nil 
-     else 
-       @use_sprite = @battler.use_sprite? 
-       if @use_sprite 
-         self.x = @battler.screen_x 
-         self.y = @battler.screen_y 
-         self.z = @battler.screen_z 
-         update_battler_bitmap 
-       end 
-       setup_new_effect 
-       update_effect 
-       # 更新血条窗体 
-       if @enemy_hp_window != nil and @old_hp != @battler.hp 
-         @enemy_hp_window.contents.clear 
-         @enemy_hp_window.draw_enemy_info(@battler, 0, 0, hp_width) 
-         @old_hp = @battler.hp 
-       end 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ◎ 更新出现效果 
-   #-------------------------------------------------------------------------- 
-   def update_appear 
-     self.blend_type = 0 
-     self.color.set(0, 0, 0, 0) 
-     self.opacity = (16 - @effect_duration) * 16 
-     # 对象非敌人时返回 
-     return unless @battler.is_a?(Game_Enemy)  
-     @enemy_hp_window.contents_opacity = self.opacity 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ◎ 更新消失效果 
-   #-------------------------------------------------------------------------- 
-   def update_disappear 
-     self.blend_type = 0 
-     self.color.set(0, 0, 0, 0) 
-     self.opacity = 256 - (32 - @effect_duration) * 10 
-     # 对象非敌人时返回 
-     return unless @battler.is_a?(Game_Enemy)  
-     @enemy_hp_window.contents_opacity = self.opacity 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ◎ 更新崩溃效果 
-   #-------------------------------------------------------------------------- 
-   def update_collapse 
-     self.blend_type = 1 
-     self.color.set(255, 128, 128, 128) 
-     self.opacity = 256 - (48 - @effect_duration) * 6 
-     # 对象非敌人时返回 
-     return unless @battler.is_a?(Game_Enemy)  
-     @enemy_hp_window.contents_opacity = self.opacity 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 血条宽度 
-   #-------------------------------------------------------------------------- 
-   def hp_width 
-     result = Enemy_HP::HP_WIDTH 
-     if @battler.is_a?(Game_Enemy) 
-       if @battler.hp_width.to_i == 0 
-         result = Enemy_HP::HP_WIDTH 
-       else 
-         result = @battler.hp_width.to_i 
-       end 
-     end 
-     return result 
-   end 
- end 
- #============================================================================== 
- # ■ Window_Base 
- #============================================================================== 
- class Window_Base < Window 
-   #-------------------------------------------------------------------------- 
-   # ○ 描绘敌人信息 
-   #     enemy : 角色 
-   #     x     : 描绘目标 X 坐标 
-   #     y     : 描绘目标 Y 坐标 
-   #     width : 宽 
-   #-------------------------------------------------------------------------- 
-   def draw_enemy_info(enemy, x, y, width = 64) 
-     # 为字体阴影内缩1像素 
-     width -= 1 
-     # 显示名称 
-     if Enemy_HP::SHOW_NAME 
-       self.contents.font.color = text_color(Enemy_HP::NAME_COLOR) 
-       self.contents.font.size = Enemy_HP::NAME_SIZE 
-       self.contents.draw_text(x, y, width, WLH, enemy.name, 1) 
-       self.contents.font.size = Font.default_size 
-       y += Enemy_HP::NAME_SIZE + 2 
-     end 
-     # 描绘血槽 
-     draw_actor_hp_gauge(enemy, x, y, width) 
-     # 描绘生命符号 
-     self.contents.font.color = system_color 
-     self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a) 
-     # 描绘具体生命值 
-     return unless Enemy_HP::SHOW_VALUE 
-     self.contents.font.color = hp_color(enemy) 
-     xr = x + width 
-     self.contents.draw_text(xr - 40, y, 40, WLH, enemy.hp, 2) 
-   end 
- end