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

Project1

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

[已经解决] 下了个血条脚本,为什么会出现这样的情况?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-5-3
帖子
18
跳转到指定楼层
1
发表于 2014-5-7 23:12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

脚本是新手教学中的:
#==============================================================================
# ■ 显示敌人血条 by 沉影不器
#------------------------------------------------------------------------------
# 功能描述:
#     ① 战斗时让敌人显示血条,宽度可定制
#     ② 可选功能: 显示具体生命值 显示敌人名称
# 使用说明:
#     ① 脚本插入到Main之前
#     ② 脚本第19行设定血条的默认宽度
#        为个别敌人指定血条宽度是"数据库-敌角色-备注栏"填写"hp_width=数值"
#     ③ 脚本第20行选择是否显示具体生命值
#     ④ 脚本第21行选择是否显示敌人名称
#     ⑤ 其它参数设定详见脚本
#     ⑥ 此脚本需要基础脚本[读取rmvx备注栏指定字段]
#==============================================================================
# ■ 参数设定
#==============================================================================
module Enemy_HP
  HP_WIDTH    = 64                    # 血条的默认宽度
  SHOW_VALUE = false                  # 是否显示敌人生命值
  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)
    @battler = 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
我在备注里的截图如下: ,不管怎么怎么写"hp_width=1",还是显示上图所写的错误。
请问我在哪里设置错了

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2014-5-1
帖子
220
2
发表于 2014-5-8 09:44:18 | 只看该作者
如果问题解决了,请到这里申请认可答案
看见功能描述⑥了吗?需要以下脚本
RUBY 代码复制
  1. #==============================================================================
  2. # ■ [VX] 读取rmvx备注栏
  3. #    [VX] ReadNote
  4. #----------------------------------------------------------------------------
  5. # 使用说明:
  6. # 【例】在vx数据库比如1号物品的备注栏里写: 耐久度 = 10
  7. #       读取时使用: p $data_items[1].read_note('耐久度')
  8. # 几点注意:
  9. #       ① 支持汉字,英文忽略大小写
  10. #       ② 等号右边遵循ruby语法格式,例如:
  11. #              test1 = 1              #=> 1
  12. #              test2 = "a"            #=> "a"
  13. #              test3 = true           #=> true
  14. #              test4 = [1,2,3]        #=> [1,2,3]
  15. #              test5 = {"orz"=>1}     #=> {"orz"=>1}
  16. #       ③ 等号忽略空格,以下均正确:
  17. #              test = nil; test= nil; test =nil; test=nil
  18. #----------------------------------------------------------------------------
  19. #    更新作者: 沉影不器
  20. #    许可协议: FSL
  21. #    项目版本: 2.02.1001
  22. #    引用网址: [url]http://rpg.blue/thread-99474-1-1.html[/url]
  23. #----------------------------------------------------------------------------
  24. #    - *2.02.1001* (2010-10-01) By 沉影不器
  25. #      *修复引用方法带Binding的错误
  26. #
  27. #    - *2.01.0806* (2010-08-06) By 沉影不器
  28. #      *完全用eval执行文本,进一步简化代码
  29. #
  30. #    - *2.00.0729* (2010-07-29) By 沉影不器
  31. #      *改用eval执行赋值内容,支持浮点.数组.哈希等
  32. #      *强制忽略大小写
  33. #      *简化脚本
  34. #
  35. #    - *1.11.0824* (2008-08-24) By 沉影不器
  36. #      *修正rmvx英文帮助带来的类名错误
  37. #
  38. #    - *1.10.0821* (2008-08-21) By 沉影不器
  39. #      *扩展到支持rmvx数据库内所有带备注栏的选项
  40. #      *改了一下算法,使备注栏的注释也同ruby语法一样忽略空格
  41. #
  42. #    - *1.02.0819* (2008-08-19) By 沉影不器
  43. #      *直接成为RPG::BaseItem内一个函数,简化使用方法
  44. #
  45. #    - *1.00.0818* (2008-08-18) By 沉影不器
  46. #      *初版
  47. #==============================================================================
  48. $fscript = {} if $fscript == nil
  49. $fscript["ReadNote"] = "2.02.1001"
  50. #==============================================================================
  51. # ■ RPG
  52. #==============================================================================
  53. module RPG
  54.   #=============================================================================
  55.   # □ ReadNote
  56.   #=============================================================================
  57.   module ReadNote
  58.     def self.read(str, section, mismatch = nil)
  59.       str.each_line do |line|
  60.         ## 不希望忽略大小写,则删掉下一行最后一个i
  61.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  62.       end
  63.       return mismatch
  64.     end
  65.   end
  66.   #=============================================================================
  67.   # ■ BaseItem
  68.   #=============================================================================
  69.   class BaseItem
  70.     #-------------------------------------------------------------------------
  71.     # ○ 读取rmvx备注栏指定字段
  72.     #     section  : 字段名
  73.     #     mismatch : 未匹配时的返回值
  74.     #-------------------------------------------------------------------------
  75.     def read_note(section, mismatch = nil)
  76.       ReadNote.read(self.note, section, mismatch)
  77.     end
  78.   end
  79.   #=============================================================================
  80.   # ■ Enemy
  81.   #=============================================================================
  82.   class Enemy
  83.     def read_note(section, mismatch = nil)
  84.       ReadNote.read(self.note, section, mismatch)
  85.     end
  86.   end
  87.   #=============================================================================
  88.   # ■ State
  89.   #=============================================================================
  90.   class State
  91.     def read_note(section, mismatch = nil)
  92.       ReadNote.read(self.note, section, mismatch)
  93.     end
  94.   end
  95. end

评分

参与人数 1星屑 +50 梦石 +1 收起 理由
Luciffer + 50 + 1 认可答案

查看全部评分

本侦探的言语充满了狂妄自负自命不凡的语气,大有妄自尊大鹤立鸡群的态势,希望大家谅解。因为奇奇这个角色在《快乐星球》里面就是这样的说话风格。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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