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

Project1

 找回密码
 注册会员
搜索
查看: 22646|回复: 22

[RMVX发布] 显示敌人血条

 关闭 [复制链接]

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

发表于 2009-10-1 21:33:37 | 显示全部楼层 |阅读模式

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

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

x
一个比较能自由设定的敌人血条,可以给个别敌人单独定血条长度,可选择是否显示具体生命值和显示敌人名称啥的...
------------------------------------------------------------------------------
功能描述:
     ① 战斗时让敌人显示血条,宽度可定制
     ② 可选功能: 显示具体生命值 显示敌人名称
使用说明:
     ① 脚本插入到Main之前
     ② 脚本第19行设定血条的默认宽度
        为个别敌人指定血条宽度是"数据库-敌角色-备注栏"填写"hp_width=数值"
     ③ 脚本第20行选择是否显示具体生命值
     ④ 脚本第21行选择是否显示敌人名称
     ⑤ 其它参数设定详见脚本
     ⑥ 此脚本需要基础脚本[读取rmvx备注栏指定字段]
  1. #==============================================================================
  2. # ■ 显示敌人血条 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能描述:
  5. #     ① 战斗时让敌人显示血条,宽度可定制
  6. #     ② 可选功能: 显示具体生命值 显示敌人名称
  7. # 使用说明:
  8. #     ① 脚本插入到Main之前
  9. #     ② 脚本第19行设定血条的默认宽度
  10. #        为个别敌人指定血条宽度是"数据库-敌角色-备注栏"填写"hp_width=数值"
  11. #     ③ 脚本第20行选择是否显示具体生命值
  12. #     ④ 脚本第21行选择是否显示敌人名称
  13. #     ⑤ 其它参数设定详见脚本
  14. #     ⑥ 此脚本需要基础脚本[读取rmvx备注栏指定字段]
  15. #==============================================================================
  16. # ■ 参数设定
  17. #==============================================================================
  18. module Enemy_HP
  19.   HP_WIDTH    = 64                    # 血条的默认宽度
  20.   SHOW_VALUE = false                  # 是否显示敌人生命值
  21.   SHOW_NAME = true                    # 是否显示敌人名称
  22.   NAME_SIZE = 16                      # 敌人名称字体大小
  23.   NAME_COLOR = 0                      # 敌人名称字体颜色
  24. end
  25. #==============================================================================
  26. # ■ RPG
  27. #==============================================================================
  28. module RPG
  29.   class Enemy
  30.     def hp_width
  31.       return self.read_note('hp_width')
  32.     end
  33.   end
  34. end
  35. #==============================================================================
  36. # ■ Game_Enemy
  37. #==============================================================================
  38. class Game_Enemy < Game_Battler
  39.   #--------------------------------------------------------------------------
  40.   # ○ 血条宽度
  41.   #--------------------------------------------------------------------------
  42.   def hp_width
  43.     return $data_enemies[@enemy_id].hp_width
  44.   end
  45. end
  46. #==============================================================================
  47. # ■ Sprite_Battler
  48. #==============================================================================
  49. class Sprite_Battler < Sprite_Base
  50.   #--------------------------------------------------------------------------
  51.   # ◎ 初始化对象
  52.   #     viewport : 视区
  53.   #     battler  : 战斗者 (Game_Battler)
  54.   #--------------------------------------------------------------------------
  55.   def initialize(viewport, battler = nil)
  56.     super(viewport)
  57.     @battler = battler
  58.     @battler_visible = false
  59.     @effect_type = 0            # 效果种类
  60.     @effect_duration = 0        # 效果剩余时间
  61.     if @battler.is_a?(Game_Enemy)
  62.       width = hp_width + 32
  63.       height = 24 + 32
  64.       x = @battler.screen_x - width/2
  65.       y = @battler.screen_y - height/2
  66.       # 调节名称位置
  67.       if Enemy_HP::SHOW_NAME
  68.         height += Enemy_HP::NAME_SIZE + 2
  69.         y -= Enemy_HP::NAME_SIZE + 2
  70.       end
  71.       # 生成血条窗体
  72.       @enemy_hp_window = Window_Base.new(x, y, width, height)
  73.       @enemy_hp_window.opacity = 0
  74.       @enemy_hp_window.contents_opacity = 0
  75.       @enemy_hp_window.contents = Bitmap.new(width - 32, height - 32)
  76.       @enemy_hp_window.draw_enemy_info(@battler, 0, 0, width - 32)
  77.       # 保存旧血量(控制刷新)
  78.       @old_hp = -1
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ◎ 释放
  83.   #--------------------------------------------------------------------------
  84.   def dispose
  85.     if self.bitmap != nil
  86.       self.bitmap.dispose
  87.       @enemy_hp_window.dispose
  88.     end
  89.     super
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ◎ 释放敌人活动块
  93.   #--------------------------------------------------------------------------
  94.   def dispose_enemies
  95.     for sprite in @enemy_sprites
  96.       sprite.dispose
  97.       @enemy_hp_window.dispose
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ◎ 更新画面
  102.   #--------------------------------------------------------------------------
  103.   def update
  104.     super
  105.     if @battler == nil
  106.       self.bitmap = nil
  107.     else
  108.       @use_sprite = @battler.use_sprite?
  109.       if @use_sprite
  110.         self.x = @battler.screen_x
  111.         self.y = @battler.screen_y
  112.         self.z = @battler.screen_z
  113.         update_battler_bitmap
  114.       end
  115.       setup_new_effect
  116.       update_effect
  117.       # 更新血条窗体
  118.       if @enemy_hp_window != nil and @old_hp != @battler.hp
  119.         @enemy_hp_window.contents.clear
  120.         @enemy_hp_window.draw_enemy_info(@battler, 0, 0, hp_width)
  121.         @old_hp = @battler.hp
  122.       end
  123.     end
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ◎ 更新出现效果
  127.   #--------------------------------------------------------------------------
  128.   def update_appear
  129.     self.blend_type = 0
  130.     self.color.set(0, 0, 0, 0)
  131.     self.opacity = (16 - @effect_duration) * 16
  132.     # 对象非敌人时返回
  133.     return unless @battler.is_a?(Game_Enemy)
  134.     @enemy_hp_window.contents_opacity = self.opacity
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ◎ 更新消失效果
  138.   #--------------------------------------------------------------------------
  139.   def update_disappear
  140.     self.blend_type = 0
  141.     self.color.set(0, 0, 0, 0)
  142.     self.opacity = 256 - (32 - @effect_duration) * 10
  143.     # 对象非敌人时返回
  144.     return unless @battler.is_a?(Game_Enemy)
  145.     @enemy_hp_window.contents_opacity = self.opacity
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ◎ 更新崩溃效果
  149.   #--------------------------------------------------------------------------
  150.   def update_collapse
  151.     self.blend_type = 1
  152.     self.color.set(255, 128, 128, 128)
  153.     self.opacity = 256 - (48 - @effect_duration) * 6
  154.     # 对象非敌人时返回
  155.     return unless @battler.is_a?(Game_Enemy)
  156.     @enemy_hp_window.contents_opacity = self.opacity
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ○ 血条宽度
  160.   #--------------------------------------------------------------------------
  161.   def hp_width
  162.     result = Enemy_HP::HP_WIDTH
  163.     if @battler.is_a?(Game_Enemy)
  164.       if @battler.hp_width.to_i == 0
  165.         result = Enemy_HP::HP_WIDTH
  166.       else
  167.         result = @battler.hp_width.to_i
  168.       end
  169.     end
  170.     return result
  171.   end
  172. end
  173. #==============================================================================
  174. # ■ Window_Base
  175. #==============================================================================
  176. class Window_Base < Window
  177.   #--------------------------------------------------------------------------
  178.   # ○ 描绘敌人信息
  179.   #     enemy : 角色
  180.   #     x     : 描绘目标 X 坐标
  181.   #     y     : 描绘目标 Y 坐标
  182.   #     width : 宽
  183.   #--------------------------------------------------------------------------
  184.   def draw_enemy_info(enemy, x, y, width = 64)
  185.     # 为字体阴影内缩1像素
  186.     width -= 1
  187.     # 显示名称
  188.     if Enemy_HP::SHOW_NAME
  189.       self.contents.font.color = text_color(Enemy_HP::NAME_COLOR)
  190.       self.contents.font.size = Enemy_HP::NAME_SIZE
  191.       self.contents.draw_text(x, y, width, WLH, enemy.name, 1)
  192.       self.contents.font.size = Font.default_size
  193.       y += Enemy_HP::NAME_SIZE + 2
  194.     end
  195.     # 描绘血槽
  196.     draw_actor_hp_gauge(enemy, x, y, width)
  197.     # 描绘生命符号
  198.     self.contents.font.color = system_color
  199.     self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
  200.     # 描绘具体生命值
  201.     return unless Enemy_HP::SHOW_VALUE
  202.     self.contents.font.color = hp_color(enemy)
  203.     xr = x + width
  204.     self.contents.draw_text(xr - 40, y, 40, WLH, enemy.hp, 2)
  205.   end
  206. end
复制代码
截图:

显示敌人名称
1.JPG

显示名称和生命值
2.JPG

只显示血条
3.JPG

不同的敌人有不同血条长度
4.JPG

范例工程: 显示敌人血条.rar (238.19 KB, 下载次数: 12319)

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-3-14
帖子
177
发表于 2009-10-1 21:48:23 | 显示全部楼层
好!
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
85
在线时间
424 小时
注册时间
2009-8-3
帖子
984
发表于 2009-10-1 22:52:20 | 显示全部楼层
不知道纵向显示会怎么样....
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2007-5-28
帖子
364
发表于 2009-10-2 17:47:55 | 显示全部楼层
终于发到66RPG了 = =
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
发表于 2009-10-3 15:18:00 | 显示全部楼层
不同的敌人血条长度不同,效果很好.
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2009-8-22
帖子
105
发表于 2009-10-3 23:15:42 | 显示全部楼层
恩,可是敌人死掉血条还在貌似
做人不能太嚣张,菜鸟不能太狂妄!
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2008-9-25
帖子
294
发表于 2009-10-4 08:13:28 | 显示全部楼层
可以用到Sideview里吗
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

 楼主| 发表于 2009-10-5 21:53:00 | 显示全部楼层
回楼上上:敌人死掉血条就消失了貌似
回楼上:未知

阿桑奇不是一个偶像;阿桑奇是一种思想

回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-19
帖子
22
发表于 2009-10-6 10:57:09 | 显示全部楼层
8# 沉影不器

沉影大大,我用了横板战斗脚本 好像和显血 不兼容。你可以帮我看下这么修改吗?

Project2.rar

413.08 KB, 下载次数: 821

回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

 楼主| 发表于 2009-10-11 13:30:53 | 显示全部楼层
Sprite_Battler这部分,把我的内容搬到sideview脚本Sprite_Battler同名方法里...

阿桑奇不是一个偶像;阿桑奇是一种思想

回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2019-3-27 11:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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