Project1

标题: 脚本出错了 来请教怎么改 [打印本页]

作者: 亡灵之雨    时间: 2010-7-27 14:40
标题: 脚本出错了 来请教怎么改


我用的代码是

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# 重新定义的内容,可以显示敌人的HP\MP百分比
# 作者:carol3_柳柳
#==============================================================================

class Window_Help < Window_Base
   def set_enemy(actor)
     self.contents.clear
     draw_actor_name(actor, 4, 0)
     draw_actor_state(actor, 140, 0)
     carol3_draw_hp_bar(actor, 284, 0)
     carol3_draw_sp_bar(actor, 460, 0)
     @text = nil
     self.visible = true
   end
   def carol3_draw_hp_bar(actor, x, y, width = 128) #宽度可调
     self.contents.font.color = system_color
     self.contents.fill_rect(x-1, y+17, width+2,6, Color.new(0, 0, 0, 255))
     w = width * actor.hp / [actor.maxhp,1].max
     self.contents.fill_rect(x, y+18, w,1, Color.new(255, 96, 96, 255))
     self.contents.fill_rect(x, y+19, w,1, Color.new(255, 0, 0, 255))
     self.contents.fill_rect(x, y+20, w,1, Color.new(128, 0, 0, 255))
     self.contents.fill_rect(x, y+21, w,1, Color.new(0, 0, 0, 255))
     self.contents.draw_text(x,y,128,32,$data_system.words.hp,1)
     self.contents.font.color = normal_color
   end
   def carol3_draw_sp_bar(actor, x, y, width = 128)
     self.contents.font.color = system_color
     self.contents.fill_rect(x-1, y+17, width+2,6, Color.new(0, 0, 0, 255))
     w = width * actor.sp / [actor.maxsp,1].max
     self.contents.fill_rect(x, y+18, w,1, Color.new(128, 255, 255, 255))
     self.contents.fill_rect(x, y+19, w,1, Color.new(0, 255, 255, 255))
     self.contents.fill_rect(x, y+20, w,1, Color.new(0, 192, 192, 255))
     self.contents.fill_rect(x, y+21, w,1, Color.new(0, 128, 128, 255))
     self.contents.draw_text(x,y,128,32,$data_system.words.sp,1)
     self.contents.font.color = normal_color
   end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


提示出错的是下面的super那一行


#--------------------------------------------------------------------------
   # ● 刷新画面
   #--------------------------------------------------------------------------
   def update
     super
     # 战斗者为 nil 的情况下
     if @battler == nil
       self.bitmap = nil
       loop_animation(nil)
       return
     end
     # 文件名和色相与当前情况有差异的情况下
     if @battler.battler_name != @battler_name or
        @battler.battler_hue != @battler_hue
       # 获取、设置位图
       @battler_name = @battler.battler_name
       @battler_hue = @battler.battler_hue
       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
       @width = bitmap.width
       @height = bitmap.height
       self.ox = @width / 2
       self.oy = @height
       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
       if @battler.dead? or @battler.hidden
         self.opacity = 0
       end
     end
     # 动画 ID 与当前的情况有差异的情况下
     if @battler.damage == nil and
        @battler.state_animation_id != @state_animation_id
       @state_animation_id = @battler.state_animation_id
       loop_animation($data_animations[@state_animation_id])
     end
     # 应该被显示的角色的情况下
     if @battler.is_a?(Game_Actor) and @battler_visible
       # 不是主状态的时候稍稍降低点透明度
       if $game_temp.battle_main_phase
         self.opacity += 3 if self.opacity < 255
       else
         self.opacity -= 3 if self.opacity > 207
       end
     end
     # 明灭
     if @battler.blink
       blink_on
     else
       blink_off
     end
     # 不可见的情况下
     unless @battler_visible
       # 出现
       if not @battler.hidden and not @battler.dead? and
          (@battler.damage == nil or @battler.damage_pop)
         appear
         @battler_visible = true
       end
     end
     # 可见的情况下
     if @battler_visible
       # 逃跑
       if @battler.hidden
         $game_system.se_play($data_system.escape_se)
         escape
         @battler_visible = false
       end
       # 白色闪烁
       if @battler.white_flash
         whiten
         @battler.white_flash = false
       end
       # 动画
       if @battler.animation_id != 0
         animation = $data_animations[@battler.animation_id]
         animation(animation, @battler.animation_hit)
         @battler.animation_id = 0
       end
       # 伤害
       if @battler.damage_pop
         damage(@battler.damage, @battler.critical)
         @battler.damage = nil
         @battler.critical = false
         @battler.damage_pop = false
       end
       # korapusu
       if @battler.damage == nil and @battler.dead?
         if @battler.is_a?(Game_Enemy)
           $game_system.se_play($data_system.enemy_collapse_se)
         else
           $game_system.se_play($data_system.actor_collapse_se)
         end
         collapse
         @battler_visible = false
       end
     end
     # 设置活动块的坐标
     self.x = @battler.screen_x
     self.y = @battler.screen_y
     self.z = @battler.screen_z
   end
end

这个原本是系统默认的sprite_battler脚本

求解如何修正这个错误
(PS:不懂论坛图片怎么添加 只好添加成附件了)
  

作者: 逸豫    时间: 2010-7-28 13:26
我表示这两个脚本一点关系都没有……
从错误上来看是因为Sprite_Battler 已经被释放(dispose)了,但是仍然调用了他的update方法,所以产生错误……
还是提供工程吧
作者: 亡灵之雨    时间: 2010-7-28 16:01
昨天研究了半天 终于发现了不是脚本错误 是前面一个动态光标的脚本冲突了
已经好了 谢谢啊
作者: 亡灵之雨    时间: 2010-7-28 16:03
……话说这个怎么把帖子改成已经解决……
作者: 逸豫    时间: 2010-7-28 19:39
1、请勿连帖
2、帖子左下角第四个编辑功能可以修改帖子内容和分类




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1