设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2167|回复: 8
打印 上一主题 下一主题

[已经解决] 求啊,VA战斗场景怪物血量显示脚本或者其他方法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2009-12-2
帖子
172
跳转到指定楼层
1
发表于 2016-4-8 14:31:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
求啊,VA战斗场景怪物血量显示脚本或者其他方法
用VX的血量脚步会出错,所以拜托大家帮我一下。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2009-12-2
帖子
172
2
 楼主| 发表于 2016-4-10 13:27:41 | 只看该作者
  请问有人帮助我吗,谢谢大家
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
3
发表于 2016-4-10 14:12:14 | 只看该作者
效果图:




脚本:

RUBY 代码复制
  1. #==============================================================================
  2.     # 功能:战斗中显示敌人血和蓝于敌人脚下
  3.     # 适用:RMVX Ace
  4.     # 作者:殇殃 2012.3.10
  5.     # 使用方法:复制整个脚本插入到Main之前
  6.     # 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
  7.     #       可以自行更改坐标修改显示位置、血条的颜色等。
  8.     #==============================================================================
  9.     # ■ Window_Base
  10.     #------------------------------------------------------------------------------
  11.     #  游戏中全部窗口的超级类。
  12.     #==============================================================================
  13.  
  14.     class Window_Base < Window
  15.       #--------------------------------------------------------------------------
  16.       # ● 描绘敌人HP
  17.       #--------------------------------------------------------------------------
  18.       def draw_enemy_hp(enemy, x, y, width = 80)
  19.         draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
  20.         self.contents.font.color = system_color
  21.         self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
  22.         self.contents.font.color = hp_color(enemy)
  23.         self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
  24.         #一个数字占16像素
  25.       end
  26.       #--------------------------------------------------------------------------
  27.       # ● 绘制敌人MP
  28.       #--------------------------------------------------------------------------
  29.       def draw_enemy_mp(enemy, x, y, width = 80)
  30.         draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)
  31.         self.contents.font.color = system_color
  32.         self.contents.draw_text(x, y, 30, line_height, Vocab::mp_a)
  33.         self.contents.font.color = mp_color(enemy)
  34.         self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2)
  35.       end
  36.     end
  37.     #==============================================================================
  38.     # ■ Sprite_Battler
  39.     #------------------------------------------------------------------------------
  40.     #  战斗显示用活动块。Game_Battler 类的实例监视、
  41.     # 活动块的状态的监视、活动块状态自动变化。
  42.     #==============================================================================
  43.  
  44.     class Sprite_Battler < Sprite_Base
  45.       #--------------------------------------------------------------------------
  46.       # ● 初始化对象
  47.       #     viewport : 视区
  48.       #     battler  : 战斗者 (Game_Battler)
  49.       #--------------------------------------------------------------------------
  50.       def initialize(viewport, battler = nil)
  51.         super(viewport)
  52.         @battler = battler
  53.         @battler_visible = false
  54.         @effect_type = nil      
  55.         @effect_duration = 0   
  56.         if @battler.is_a?(Game_Enemy)
  57.           width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
  58.           height = 24 + 24*2 #边距12*2+line_height*2
  59.           x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
  60.           y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
  61.           @enemy_hpmp_window = Window_Base.new(x, y, width, height)
  62.           @enemy_hpmp_window.opacity = 0
  63.           @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
  64.           @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  65.           @old_hp = -1
  66.           @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
  67.           @old_mp = -1
  68.         end
  69.       end
  70.       #--------------------------------------------------------------------------
  71.       # ● 释放
  72.       #--------------------------------------------------------------------------
  73.       def dispose
  74.         if self.bitmap != nil
  75.           self.bitmap.dispose
  76.           @enemy_hpmp_window.dispose
  77.         end
  78.         super
  79.       end
  80.       #--------------------------------------------------------------------------
  81.       # ● 更新画面
  82.       #--------------------------------------------------------------------------
  83.       def update
  84.         super
  85.         if @battler == nil
  86.           self.bitmap = nil
  87.         else
  88.           @use_sprite = @battler.use_sprite?
  89.           if @use_sprite
  90.             update_bitmap
  91.             update_origin
  92.             update_position
  93.           end
  94.           setup_new_effect
  95.           setup_new_animation
  96.           update_effect
  97.           if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
  98.             if @battler.hp == 0
  99.               @enemy_hpmp_window.hide
  100.             else
  101.               @enemy_hpmp_window.contents.clear
  102.               @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  103.               @old_hp = @battler.hp
  104.               @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
  105.               @old_mp = @battler.mp
  106.               @enemy_hpmp_window.show #怪物死后再被复活
  107.             end #if battler.hp == 0
  108.           end
  109.         end #if @battler == nil
  110.       end
  111.  
  112.     end

点评

不知道行不行,先谢过!  发表于 2016-4-10 14:56
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2009-12-2
帖子
172
4
 楼主| 发表于 2016-4-11 10:07:55 | 只看该作者
黑崎一护 发表于 2016-4-10 14:12
效果图:

请问怎么只显示HP,不显示MP呢,另外数字也不要,只要红色的血条,如何修改,请指教。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
5
发表于 2016-4-11 11:13:32 | 只看该作者
若得若失 发表于 2016-4-11 10:07
请问怎么只显示HP,不显示MP呢,另外数字也不要,只要红色的血条,如何修改,请指教。 ...

那就......换成这两个脚本

先贴这个,这个是前置脚本。。
RUBY 代码复制
  1. #==============================================================================
  2. # F00 - 基础设定 - By芙蕾娅
  3. #------------------------------------------------------------------------------
  4. #  脚本合集的基础设置
  5. #   若不想变更某些设定则设为 nil
  6. #==============================================================================
  7. module Freya
  8.   module Font
  9.     # 设置字体
  10.     Name = ["黑体"]
  11.     # 字体大小
  12.     Size = 20
  13.     # 字体是否加粗
  14.     # 默认为false
  15.     # true  : 是
  16.     # false : 否
  17.     Bold = false
  18.     # 字体是否斜体
  19.     # 默认为false
  20.     # true  : 是
  21.     # false : 否
  22.     Italic = false
  23.     # 字体是否有阴影
  24.     # 默认为false
  25.     # true  : 是
  26.     # false : 否
  27.     Shadow = true
  28.     # 字体是否描边
  29.     # 默认为true
  30.     # true  : 是
  31.     # false : 否
  32.     Outline = true
  33.   end
  34.   module Graphics
  35.     # 画面分辨率宽度
  36.     # 默认为544,最大为640
  37.     Width = 544
  38.     # 画面分辨率高度
  39.     # 默认为416,最大为480
  40.     Height = 416
  41.   end
  42. end
  43. #------------------------------------------------------------------------------
  44. # 初始化字体设置
  45. #------------------------------------------------------------------------------
  46. Font.default_name = Freya::Font::Name unless Freya::Font::Name.nil?
  47. Font.default_size = Freya::Font::Size unless Freya::Font::Size.nil?
  48. Font.default_bold = Freya::Font::Bold unless Freya::Font::Bold.nil?
  49. Font.default_italic = Freya::Font::Italic unless Freya::Font::Italic.nil?
  50. Font.default_shadow = Freya::Font::Shadow unless Freya::Font::Shadow.nil?
  51. Font.default_outline = Freya::Font::Outline unless Freya::Font::Outline.nil?
  52. #------------------------------------------------------------------------------
  53. #初始化画面设置
  54. #------------------------------------------------------------------------------
  55. Graphics.resize_screen(Freya::Graphics::Width, Freya::Graphics::Height)



注意:下面的这个脚本才是显示血条的脚本,请一定放在上面这个脚本的下面
RUBY 代码复制
  1. #==============================================================================
  2. # F08 - 战斗敌人显示血条 - By芙蕾娅
  3. #------------------------------------------------------------------------------
  4. #  ★ - 新增  ☆ - 修改  ■ - 删除 ● - 无变更
  5. #==============================================================================
  6. module Freya
  7.   # 隐藏HP的文本
  8.   HideGaugeText = "Hide_Gauge"
  9.   # 血条颜色
  10.   EnemyHPGaugeColor1 = Color.new(64,128,96)
  11.   EnemyHPGaugeColor2 = Color.new(96,192,160)
  12. end
  13. #==============================================================================
  14. # ■ Sprite_Battler_HP
  15. #------------------------------------------------------------------------------
  16. #  显示战斗者的生命在战斗者的精灵下面。
  17. #==============================================================================
  18. class Sprite_Battler_HP < Sprite
  19.   #--------------------------------------------------------------------------
  20.   # ● 初始化对象
  21.   #--------------------------------------------------------------------------
  22.   def initialize(viewport,battler)
  23.     super(viewport)
  24.     @battler = battler
  25.     @last_hp = 0
  26.     create_bitmap
  27.     update
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 释放
  31.   #--------------------------------------------------------------------------
  32.   def dispose
  33.     self.bitmap.dispose
  34.     super
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 生成位图
  38.   #--------------------------------------------------------------------------
  39.   def create_bitmap
  40.     @last_hp = @battler.hp
  41.     bw = 96
  42.     bh = 6
  43.     self.bitmap = Bitmap.new(bw, bh)
  44.     self.bitmap.fill_rect(0, 0, bw, bh, Color.new(32,32,64))
  45.     if Freya::Gauge_Type.nil? or Freya::Gauge_Type == 0
  46.       hp = ((bw) * @battler.hp_rate).to_i
  47.       self.bitmap.gradient_fill_rect(0, 0, hp, bh, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
  48.     elsif Freya::Gauge_Type == 1
  49.       hp = ((width - 2) * @battler.hp_rate).to_i
  50.       self.bitmap.gradient_fill_rect(1, 1, hp, bh - 2, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
  51.     elsif Freya::Gauge_Type == 2
  52.       hp = ((width) * @battler.hp_rate).to_i
  53.       self.bitmap.gradient_fill_rect(0, 0, hp / 2, bh, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
  54.       self.bitmap.gradient_fill_rect(hp / 2, 0, hp / 2, bh, Freya::EnemyHPGaugeColor2, Freya::EnemyHPGaugeColor1)
  55.     elsif Freya::Gauge_Type == 3
  56.       hp = ((width - 2) * @battler.hp_rate).to_i
  57.       self.bitmap.gradient_fill_rect(1, 1, hp / 2, bh - 2, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
  58.       self.bitmap.gradient_fill_rect((hp / 2) + 1, 1, hp / 2, bh - 2, Freya::EnemyHPGaugeColor2, Freya::EnemyHPGaugeColor1)
  59.     end
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 更新画面
  63.   #--------------------------------------------------------------------------
  64.   def update
  65.     super
  66.     unless self.bitmap.nil?
  67.       self.x = @battler.screen_x - self.width / 2
  68.       self.y = @battler.screen_y
  69.       create_bitmap if @last_hp != @battler.hp
  70.       hide = $data_enemies[@battler.enemy_id].note.include?(Freya::HideGaugeText)
  71.       if @battler.hp == 0 or hide
  72.         self.opacity = 0
  73.       elsif @battler.hp > 0 && !hide
  74.         self.opacity = 255
  75.       end
  76.     end
  77.   end
  78. end
  79.  
  80. #==============================================================================
  81. # ■ Sprite_Battler
  82. #------------------------------------------------------------------------------
  83. #  显示战斗者的精灵。根据 Game_Battler 类的实例自动变化。
  84. #==============================================================================
  85. class Sprite_Battler < Sprite_Base
  86.   #--------------------------------------------------------------------------
  87.   # ☆ 初始化对象
  88.   #--------------------------------------------------------------------------
  89.   alias initialize_freya_enemy_hp initialize
  90.   def initialize(viewport, battler = nil)
  91.     initialize_freya_enemy_hp(viewport, battler)
  92.     if @battler.is_a?(Game_Enemy)
  93.       @hp_gauge = Sprite_Battler_HP.new(viewport, battler)
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ☆ 释放
  98.   #--------------------------------------------------------------------------
  99.   alias dispose_freya_enemy_hp dispose
  100.   def dispose
  101.     dispose_freya_enemy_hp
  102.     unless @hp_gauge.nil?
  103.       @hp_gauge.dispose
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ☆ 更新画面
  108.   #--------------------------------------------------------------------------
  109.   alias update_freya_enemy_hp update
  110.   def update
  111.     update_freya_enemy_hp
  112.     @hp_gauge.update unless @hp_gauge.nil?
  113.   end
  114. end

点评

试了一下,显示第二个脚本45行出错,不知道什么问题。  发表于 2016-4-12 10:47
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2009-12-2
帖子
172
6
 楼主| 发表于 2016-4-11 13:47:19 | 只看该作者
黑崎一护 发表于 2016-4-11 11:13
那就......换成这两个脚本

先贴这个,这个是前置脚本。。

感谢制作游戏的道路上能有你{:2_260:}3Q3Q
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
7
发表于 2016-4-12 11:00:35 | 只看该作者
那就,手动改一下3楼的脚本
  1. class Window_Base < Window
  2.   #--------------------------------------------------------------------------
  3.   # ● 描绘敌人HP
  4.   #--------------------------------------------------------------------------
  5.   def draw_enemy_hp(enemy, x, y, width = 80)
  6.     draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
  7.   end
  8. end
  9. #==============================================================================
  10. # ■ Sprite_Battler
  11. #------------------------------------------------------------------------------
  12. #  战斗显示用活动块。Game_Battler 类的实例监视、
  13. # 活动块的状态的监视、活动块状态自动变化。
  14. #==============================================================================

  15. class Sprite_Battler < Sprite_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化对象
  18.   #     viewport : 视区
  19.   #     battler  : 战斗者 (Game_Battler)
  20.   #--------------------------------------------------------------------------
  21.   def initialize(viewport, battler = nil)
  22.     super(viewport)
  23.     @battler = battler
  24.     @battler_visible = false
  25.     @effect_type = nil      
  26.     @effect_duration = 0   
  27.     if @battler.is_a?(Game_Enemy)
  28.       width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
  29.       height = 24 + 24*2 #边距12*2+line_height*2
  30.       x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
  31.       y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
  32.       @enemy_hpmp_window = Window_Base.new(x, y, width, height)
  33.       @enemy_hpmp_window.opacity = 0
  34.       @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
  35.       @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  36.       @old_hp = -1
  37.     end
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 释放
  41.   #--------------------------------------------------------------------------
  42.   def dispose
  43.     if self.bitmap != nil
  44.       self.bitmap.dispose
  45.       @enemy_hpmp_window.dispose
  46.     end
  47.     super
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 更新画面
  51.   #--------------------------------------------------------------------------
  52.   def update
  53.     super
  54.     if @battler == nil
  55.       self.bitmap = nil
  56.     else
  57.       @use_sprite = @battler.use_sprite?
  58.       if @use_sprite
  59.         update_bitmap
  60.         update_origin
  61.         update_position
  62.       end
  63.       setup_new_effect
  64.       setup_new_animation
  65.       update_effect
  66.       if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
  67.         if @battler.hp == 0
  68.           @enemy_hpmp_window.hide
  69.         else
  70.           @enemy_hpmp_window.contents.clear
  71.           @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  72.           @old_hp = @battler.hp
  73.           @enemy_hpmp_window.show #怪物死后再被复活
  74.         end #if battler.hp == 0
  75.       end
  76.     end #if @battler == nil
  77.   end

  78. end
复制代码

点评

谢谢你的耐心,但这个脚本不行,啥子都没显示,就跟没添加脚本一样。  发表于 2016-4-14 11:48
兄台竟是如此乐于助人之人,加个好友可好?  发表于 2016-4-12 14:34
多谢,感谢你的耐心帮助  发表于 2016-4-12 11:51
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
8
发表于 2016-4-14 13:17:59 | 只看该作者
本帖最后由 黑崎一护 于 2016-4-14 13:20 编辑

那就......用这个MOG的脚本吧,MOG被墙了。

范例素材:(放在\Graphics\System文件里)

不清楚MOG使用规约,最好自己修改一下。



这个脚本的血条实在敌人受到攻击时才显示的。

效果图:



下面是脚本:
RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Enemy HP Meter  (v1.1) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]http://www.atelier-rgss.com/[/url]
  6. #==============================================================================
  7. # Apresenta um medidor animado com o HP do inimigo.
  8. #==============================================================================
  9. # Para ocultar o HP do inimigo use a TAG abaixo na caixa de notas.
  10. #
  11. # <Hide HP>
  12. #
  13. #==============================================================================
  14. # Serão necessários as imagens.
  15. #
  16. # Battle_Enemy_HP_Layout.png
  17. # Battle_Enemy_HP_Meter.png
  18. #
  19. #
  20. #==============================================================================
  21.  
  22. #==============================================================================
  23. # ● Histórico (Version History)
  24. #==============================================================================
  25. # v 1.1 - Corrigido o erro de crash randômico. (relativo a dispose de imagem.)
  26. #==============================================================================
  27.  
  28. module MOG_ENEMY_HP
  29.    #Posição geral do medidor em relação ao battler.
  30.    POSITION_CORRECTION = [0,0]
  31.    #Posição do medidor de HP.
  32.    HP_METER_POSITION = [2,4]
  33.    #Prioridade do medidor na tela.
  34.    PRIORITY_Z = 101   
  35. end
  36.  
  37. #==============================================================================
  38. # ■ Game Enemy
  39. #==============================================================================
  40. class Game_Enemy < Game_Battler
  41.  
  42.   attr_accessor :hp_meter_active               
  43.  
  44.   #--------------------------------------------------------------------------
  45.   # ● Initialize
  46.   #--------------------------------------------------------------------------
  47.   alias mog_enemy_hp_initialize initialize
  48.   def initialize(index, enemy_id)
  49.       mog_enemy_hp_initialize(index, enemy_id)
  50.       hide = enemy.note =~ /<Hide HP>/i ? true : false
  51.       @hp_meter_active = [false,hide]
  52.   end  
  53.  
  54. end
  55.  
  56. #==============================================================================
  57. # ■ Game_Battler
  58. #==============================================================================
  59. class Game_Battler < Game_BattlerBase
  60.  
  61.   #--------------------------------------------------------------------------
  62.   # ● Item Apply
  63.   #--------------------------------------------------------------------------  
  64.    alias mog_enemy_hp_item_apply item_apply
  65.    def item_apply(user, item)
  66.        mog_enemy_hp_item_apply(user, item)
  67.        if self.is_a?(Game_Enemy)
  68.           self.hp_meter_active[0] = true if @result.hp_damage != 0
  69.        end
  70.    end
  71.  
  72.   #--------------------------------------------------------------------------
  73.   # ● Regenerate HP
  74.   #--------------------------------------------------------------------------
  75.   alias mog_enemy_hp_regenerate_hp regenerate_hp
  76.   def regenerate_hp
  77.       mog_enemy_hp_regenerate_hp
  78.       if self.is_a?(Game_Enemy)
  79.          self.hp_meter_active[0] = true if @result.hp_damage != 0      
  80.       end         
  81.   end
  82.  
  83. end
  84.  
  85.  
  86. #==============================================================================
  87. # ■ Battle_Hud
  88. #==============================================================================
  89. class Enemy_HP
  90.   include MOG_ENEMY_HP
  91.  
  92.   #--------------------------------------------------------------------------
  93.   # ● Initialize
  94.   #--------------------------------------------------------------------------   
  95.   def initialize(viewport = nil,enemy)
  96.       dispose
  97.       @enemy = enemy
  98.       @fade_time = -1
  99.       create_layout   
  100.       create_hp_meter      
  101.       b_pos = [enemy.screen_x - (@layout.width / 2) + POSITION_CORRECTION[0], enemy.screen_y + POSITION_CORRECTION[1] - (@layout.height / 2)]
  102.       @layout.opacity = 0
  103.       @org_pos1 = [b_pos[0],b_pos[1]]
  104.       @layout.x = @org_pos1[0]
  105.       @layout.y = @org_pos1[1]
  106.       @layout.visible = false
  107.       @hp_meter.opacity = 0
  108.       @hp_meter.visible = false
  109.       @org_pos2 = [b_pos[0] + HP_METER_POSITION[0], b_pos[1] + HP_METER_POSITION[1]]
  110.       @hp_meter.x = @org_pos2[0]
  111.       @hp_meter.y = @org_pos2[1]
  112.       @hp_meter.viewport = viewport
  113.       @hp_meter.z = PRIORITY_Z
  114.       @layout.viewport = viewport
  115.       @layout.z = PRIORITY_Z
  116.       @enemy.hp_meter_active[0] = false
  117.       @hide = @enemy.hp_meter_active[1]
  118.   end
  119.  
  120.   #--------------------------------------------------------------------------
  121.   # ● Create HP Meter
  122.   #--------------------------------------------------------------------------        
  123.   def create_layout
  124.       @layout = Sprite.new
  125.       @layout.bitmap = Cache.system("Battle_Enemy_HP_Layout")
  126.   end
  127.  
  128.   #--------------------------------------------------------------------------
  129.   # ● Create HP Meter
  130.   #--------------------------------------------------------------------------      
  131.   def create_hp_meter
  132.       @meter_image = Cache.system("Battle_Enemy_HP_Meter")
  133.       @meter_cw = @meter_image.width
  134.       @meter_ch = @meter_image.height / 2      
  135.       @hp_meter = Sprite.new
  136.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  137.       @hp_width_old = @meter_cw * @enemy.hp / @enemy.mhp
  138.     end  
  139.  
  140.   #--------------------------------------------------------------------------
  141.   # ● Hp Flow Update
  142.   #--------------------------------------------------------------------------
  143.   def update_hp_flow
  144.       return if !@layout.visible     
  145.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  146.       @hp_meter.bitmap.clear      
  147.       execute_damage_flow(hp_width)
  148.       hp_src_rect = Rect.new(0, 0,hp_width, @meter_ch)
  149.       @hp_meter.bitmap.blt(0,0, @meter_image, hp_src_rect)
  150.   end
  151.  
  152.   #--------------------------------------------------------------------------
  153.   # ● Execute Damage Flow
  154.   #--------------------------------------------------------------------------
  155.   def execute_damage_flow(hp_width)
  156.       n = (@hp_width_old - hp_width).abs * 3 / 100
  157.       damage_flow = [[n, 2].min,0.5].max
  158.       @hp_width_old -= damage_flow
  159.       if @hp_width_old <= hp_width
  160.          @hp_width_old = hp_width
  161.       end   
  162.       src_rect_old = Rect.new(0,@meter_ch,@hp_width_old, @meter_ch)
  163.       @hp_meter.bitmap.blt(0,0, @meter_image, src_rect_old)      
  164.   end   
  165.  
  166.   #--------------------------------------------------------------------------
  167.   # ● Dispose
  168.   #--------------------------------------------------------------------------      
  169.   def dispose
  170.       return if @meter_image == nil
  171.       @layout.bitmap.dispose
  172.       @layout.dispose
  173.       @hp_meter.bitmap.dispose
  174.       @hp_meter.dispose
  175.       @meter_image.dispose
  176.       @meter_image = nil
  177.   end
  178.  
  179.   #--------------------------------------------------------------------------
  180.   # ● Update
  181.   #--------------------------------------------------------------------------      
  182.   def update
  183.       return if @meter_image == nil
  184.       return if @hide
  185.       update_fade   
  186.       update_visible
  187.       update_hp_flow
  188.       refresh if @enemy.hp_meter_active[0]
  189.   end  
  190.  
  191.   #--------------------------------------------------------------------------
  192.   # ● Update Fade
  193.   #--------------------------------------------------------------------------        
  194.   def update_fade
  195.       @fade_time -= 1 if @fade_time > 0
  196.       return if @fade_time != 0
  197.       @layout.opacity -= 10
  198.       @hp_meter.opacity -= 10
  199.       @layout.x += 1
  200.       @hp_meter.x += 1
  201.       @fade_time = -1 if @layout.opacity == 0
  202.   end  
  203.  
  204.   #--------------------------------------------------------------------------
  205.   # ● Update Visible
  206.   #--------------------------------------------------------------------------        
  207.   def update_visible
  208.       return if !@layout.visible
  209.       vis = can_visible?
  210.       @layout.visible = vis
  211.       @hp_meter.visible = vis
  212.   end
  213.  
  214.   #--------------------------------------------------------------------------
  215.   # ● Refresh
  216.   #--------------------------------------------------------------------------         
  217.   def refresh     
  218.       @enemy.hp_meter_active[0] = false
  219.       @layout.opacity = 255
  220.       @hp_meter.opacity = 255   
  221.       @layout.visible = true
  222.       @hp_meter.visible = true
  223.       @fade_time = 60
  224.       @layout.x = @org_pos1[0]
  225.       @layout.y = @org_pos1[1]
  226.       @hp_meter.x = @org_pos2[0]
  227.       @hp_meter.y = @org_pos2[1]      
  228.       hp_width = @meter_cw * @enemy.hp / @enemy.mhp
  229.       @hp_width_old = hp_width if @hp_width_old < hp_width
  230.       update_hp_flow
  231.   end
  232.  
  233.   #--------------------------------------------------------------------------
  234.   # ● Can Visible?
  235.   #--------------------------------------------------------------------------         
  236.   def can_visible?
  237.       return false if @layout.opacity == 0      
  238.       return true
  239.   end
  240.  
  241. end
  242.  
  243. #==============================================================================
  244. # ■ Spriteset Battle
  245. #==============================================================================
  246. class Spriteset_Battle
  247.  
  248.   #--------------------------------------------------------------------------
  249.   # ● Initialize
  250.   #--------------------------------------------------------------------------  
  251.   alias mog_enemy_hp_initialize initialize
  252.   def initialize
  253.       mog_enemy_hp_initialize
  254.       create_enemy_hp      
  255.   end
  256.  
  257.   #--------------------------------------------------------------------------
  258.   # ● Create Battle Hud
  259.   #--------------------------------------------------------------------------   
  260.   def create_enemy_hp
  261.       dispose_enemy_hp
  262.       @enemy_hp = []      
  263.       for i in $game_troop.members
  264.           @enemy_hp.push(Enemy_HP.new(@viewport1,i))
  265.       end
  266.   end
  267.  
  268.   #--------------------------------------------------------------------------
  269.   # ● Dispose
  270.   #--------------------------------------------------------------------------      
  271.   alias mog_enemy_hp_dispose dispose
  272.   def dispose
  273.       mog_enemy_hp_dispose
  274.       dispose_enemy_hp
  275.   end  
  276.  
  277.   #--------------------------------------------------------------------------
  278.   # ● Dispose Enemy HP
  279.   #--------------------------------------------------------------------------        
  280.   def dispose_enemy_hp
  281.       return if @enemy_hp == nil
  282.       @enemy_hp.each {|sprite| sprite.dispose }
  283.       @enemy_hp.clear
  284.       @enemy_hp = nil
  285.   end
  286.  
  287.   #--------------------------------------------------------------------------
  288.   # ● Update
  289.   #--------------------------------------------------------------------------        
  290.   alias mog_enemy_hp_update update
  291.   def update
  292.       mog_enemy_hp_update
  293.       update_enemy_hp
  294.   end
  295.  
  296.   #--------------------------------------------------------------------------
  297.   # ● Update Enemy HP
  298.   #--------------------------------------------------------------------------         
  299.   def update_enemy_hp
  300.       return if @enemy_hp == nil
  301.       @enemy_hp.each {|sprite| sprite.update }
  302.   end  
  303. end
  304.  
  305. $mog_rgss3_enemy_hp_meter = true
  

点评

哎呀,都不好意思回复你了,真的!谢谢  发表于 2016-4-15 13:36

评分

参与人数 1梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答&lt;span id=&quot;transmark&quot;&gt;

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1457
在线时间
892 小时
注册时间
2011-3-4
帖子
839
9
发表于 2016-4-15 10:24:19 | 只看该作者
全民制作人们,大家好,我是练习时长两年半的黄油制作人绿坝,喜欢唱、跳、rap、篮球,music!欢迎加群:107335249
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 09:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表