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

Project1

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

[已经过期] 这个显血脚本的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2013-7-19
帖子
31
跳转到指定楼层
1
发表于 2013-7-25 20:40:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 The_Abyss 于 2013-7-25 23:07 编辑

问题1

问题2 如何修改血条颜色?
RUBY 代码复制
  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    = 32                    # 血条的默认宽度
  20.   SHOW_VALUE = true                  # 是否显示敌人生命值
  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.     [url=home.php?mod=space&uid=133701]@battler[/url] = 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
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-18 06:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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