Project1

标题: 请教脚本Sprite_battler错误 [打印本页]

作者: yuwenhua    时间: 2011-9-1 15:13
标题: 请教脚本Sprite_battler错误
本帖最后由 亿万星辰 于 2011-9-1 15:21 编辑

进入战斗时弹出:脚本'Sprite_Battler' 的347 行 发生了 NoMethodError   undefined method -' for nil:NiClass

其中347行是:          @sprite_contens.x = @battler.screen_x - 20

整个Sprite_Battler是:
  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #==============================================================================

  7. class Sprite_Battler < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :battler                  # 战斗者
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #    添加跳跃记录
  15.   #--------------------------------------------------------------------------
  16.   def initialize(viewport, battler = nil)
  17.     super(viewport)
  18.     @battler = battler
  19.     @battler_visible = false
  20.     @flash_shake_switch = true
  21.     #........................................................................
  22.     @once = 0
  23.     @frame_index = -1
  24.     @last_frame = 0
  25.     #........................................................................
  26.     @sprite_contens = Sprite.new#(viewport)
  27.     @sprite_contens.x = 0
  28.     @sprite_contens.y = 0
  29.     @sprite_contens.bitmap = Bitmap.new(72,48)
  30.     @battler_hp = 0
  31.     @battler_sp = 0
  32.     @name = ""
  33.    
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 释放
  37.   #--------------------------------------------------------------------------
  38.   def dispose
  39.     if self.bitmap != nil
  40.       self.bitmap.dispose
  41.     end
  42.     #血条法条图形精灵
  43.     if @sprite_contens != nil
  44.       @sprite_contens.bitmap.dispose
  45.       @sprite_contens.dispose
  46.       @sprite_contens = nil
  47.     end
  48.     super
  49.   end
  50.   #..........................................................................
  51.   #--------------------------------------------------------------------------
  52.   # ● 胜利图
  53.   #--------------------------------------------------------------------------
  54.   def win
  55.     if @battler_name != nil and not @battler.hidden and not @battler.dead?
  56.       @battler.setup_battler_ani(@battler_name.split(/★/)[6], 1)
  57.     end
  58.   end
  59.   #..........................................................................
  60.   # 战斗中血条系列★★★★★★★★★★★★★★★★★★★★★★★★★★★
  61.   #--------------------------------------------------------------------------
  62.   # ● 战斗血条描绘
  63.   #--------------------------------------------------------------------------
  64.   def draw_battle_hp(actor, x, y)
  65.     # 底图描绘
  66.     battle_hp_bitmap = RPG::Cache.picture("战斗条框")
  67.     src_rect = Rect.new(0, 0, battle_hp_bitmap.width, battle_hp_bitmap.height)
  68.     @sprite_contens.bitmap.blt(x, y, battle_hp_bitmap, src_rect)
  69.     # 血条显示
  70.     battle_hp_bitmap = RPG::Cache.picture("战斗血条")
  71.     hp_width = battle_hp_bitmap.width * actor.hp / actor.maxhp
  72.     src_rect = Rect.new(0, 0, hp_width, battle_hp_bitmap.height)
  73.     @sprite_contens.bitmap.blt(x, y, battle_hp_bitmap, src_rect)
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 战斗法条描绘
  77.   #--------------------------------------------------------------------------
  78.   def draw_battle_sp(actor, x, y)
  79.     # 底图描绘
  80.     battle_sp_bitmap = RPG::Cache.picture("战斗条框")
  81.     src_rect = Rect.new(0, 0, battle_sp_bitmap.width, battle_sp_bitmap.height)
  82.     @sprite_contens.bitmap.blt(x, y, battle_sp_bitmap, src_rect)
  83.     # 法条显示
  84.     battle_sp_bitmap = RPG::Cache.picture("战斗法条")
  85.     sp_width = battle_sp_bitmap.width * actor.sp / actor.maxsp
  86.     src_rect = Rect.new(0, 0, sp_width, battle_sp_bitmap.height)
  87.     @sprite_contens.bitmap.blt(x, y, battle_sp_bitmap, src_rect)
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 战斗中名字的描绘
  91.   #--------------------------------------------------------------------------
  92.   def draw_actor_name(actor, x, y)
  93.     @sprite_contens.bitmap.font.color = Color.new(0, 230, 50, 255)
  94.     @sprite_contens.bitmap.font.size = 16
  95.     @sprite_contens.bitmap.draw_text(x, y, 60, 32, actor.name,1)
  96.   end
  97.   # ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  98.   #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  99.   #检测在击中的瞬间
  100.   def check_baby_skill
  101.     if @battler.who_attack_me != nil
  102.       #技能毒检测
  103.       if @battler.who_attack_me.skill_learn?(88)
  104.         if rand(100) < 15
  105.           @battler.add_state(24,false)
  106.         end
  107.       end
  108.       #技能反震检测
  109.       if @battler.skill_learn?(95)#高级反震
  110.         if @battler.who_attack_me.skill_learn?(56) or @battler.who_attack_me.skill_learn?(56)
  111.          
  112.         else
  113.           if rand(100) < 50
  114.             @battler.who_attack_me.damage = @battler.damage / 2
  115.             @battler.who_attack_me.hp -= @battler.who_attack_me.damage
  116.             @battler.who_attack_me.show_damage(@battler.who_attack_me.damage)
  117.             @battler.who_attack_me.damage = nil
  118.           end
  119.         end
  120.       elsif @battler.skill_learn?(94)#反震
  121.         if @battler.who_attack_me.skill_learn?(56) or @battler.who_attack_me.skill_learn?(56)
  122.          
  123.         else
  124.           if rand(100) < 30
  125.             @battler.who_attack_me.damage = @battler.damage / 4
  126.             @battler.who_attack_me.hp -= @battler.who_attack_me.damage
  127.             @battler.who_attack_me.show_damage(@battler.who_attack_me.damage)
  128.             @battler.who_attack_me.damage = nil
  129.           end
  130.         end
  131.       end
  132.       #技能吸血检测
  133.       if @battler.who_attack_me.skill_learn?(50)
  134.         if @battler.who_attack_me.hp < @battler.who_attack_me.maxhp
  135.           @battler.who_attack_me.damage = [email][email protected][/email] / 2
  136.           @battler.who_attack_me.hp -= @battler.who_attack_me.damage
  137.           @battler.who_attack_me.show_damage_animation = false
  138.           @battler.who_attack_me.show_damage(@battler.who_attack_me.damage)
  139.           @battler.who_attack_me.damage = nil
  140.         end
  141.       elsif @battler.who_attack_me.skill_learn?(49)
  142.         if @battler.who_attack_me.hp < @battler.who_attack_me.maxhp
  143.           @battler.who_attack_me.damage = [email][email protected][/email] / 4
  144.           @battler.who_attack_me.hp -= @battler.who_attack_me.damage
  145.           @battler.who_attack_me.show_damage_animation = false
  146.           @battler.who_attack_me.show_damage(@battler.who_attack_me.damage)
  147.           @battler.who_attack_me.damage = nil
  148.         end
  149.       end
  150.       #清空谁打了我.
  151.       @battler.who_attack_me = nil
  152.     end
  153.   end
  154.   #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  155.   #--------------------------------------------------------------------------
  156.   # ● 处理角色动作
  157.   #--------------------------------------------------------------------------
  158.   def update_actor_animation
  159.     if @battler.is_a?(Game_Actor)
  160.       #角色也受伤害的情况下显示受击(反震,横扫...)
  161.       if @battler.show_damage_value != nil
  162.         self.damage(@battler.show_damage_value, false)
  163.         @battler.show_damage(nil)
  164.         @last_hits = 0
  165.         @hits = 0
  166.         #当6号开关为true时,不显示挨打动画
  167.         if $game_switches.[](6) or @battler.show_damage_animation == false
  168.           $game_switches.[]=(6,false)
  169.           @battler.show_damage_animation = true
  170.         else
  171.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  172.           @battler.setup_battler_hurt_ani(1)
  173.         end
  174.       end
  175.       if @battler.current_action.kind == 0 and @battler.current_action.basic == 1
  176.         #修正防御时加血后会多显示一次受击动画的BUG
  177.         if @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage <= 0
  178.           @battler.setup_battler_hurt_ani(1)
  179.           @last_hits = 0
  180.         #最后一击并且角色未死亡的情况下
  181.         elsif @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0
  182.           check_baby_skill
  183.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[2], 1)
  184.           @battler.setup_battler_hurt_ani(1)
  185.           @last_hits = 0
  186.         #连击数!=上一次连击记录数,不是只有一次攻击,伤害值为数字,伤害值为正,当前帧!=最后一次闪光帧数
  187.         elsif @hits != @temp_hits and @last_hits != 1 and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and @frame_index < @last_frame
  188.           check_baby_skill
  189.           @temp_hits+=1
  190.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[2], 1)
  191.           @battler.setup_battler_hurt_ani(1)
  192.         end
  193.       else
  194.        #修正非正常状态伤害后的显示多次受击动画的BUG
  195.        if @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage <= 0 and $fangyu != 1
  196.          @last_hits = 0
  197.          #@battler.setup_battler_hurt_ani(1)
  198.        # 单回合只有一次攻击
  199.        elsif @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and $fangyu != 1
  200.           check_baby_skill
  201.           ############ #小改动
  202.           @last_hits = 0
  203.           ############
  204.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  205.           @battler.setup_battler_hurt_ani(1)
  206.           #################################################################
  207.         # 单回合多次攻击
  208.        elsif @hits > @temp_hits and @frame_index != @last_frame and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and $fangyu != 1
  209.           check_baby_skill
  210.           ############ #小改动
  211.           @temp_hits+=1
  212.           ############
  213.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  214.           @battler.setup_battler_hurt_ani(1)
  215.         ########################################################################
  216.         # 死亡之前攻击
  217.        elsif @hits > @temp_hits and @frame_index != @last_frame and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and $fangyu != 1 and @battler.dead? and @battler.battler_dead_ani != 1
  218.          check_baby_skill
  219.          ############ #小改动
  220.           @temp_hits+=1
  221.           ############
  222.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  223.           @battler.setup_battler_hurt_ani(1)
  224.           #################################################################
  225.         # 闪避的回合
  226.        elsif !@battler_damage.is_a?(Numeric) and @last_hits == 1 and @frame_index == @last_frame
  227.           @last_hits = 0
  228.           #################################################################
  229.         # 无伤害的攻击
  230.         elsif @battler_damage.is_a?(Numeric) and @battler.damage == 0 and @last_hits == 1 and @frame_index == @last_frame
  231.           @last_hits = 0
  232.           #################################################################
  233.         # 死亡判定(修正了异常死亡时不显示死亡动画的BUG)
  234.         elsif @battler.dead?
  235.           if @last_hits == 1 and @frame_index == @last_frame and @battler.dead? #and @battler.battler_dead_ani != 1
  236.             @last_hits = 0
  237.             @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  238.             @battler.setup_battler_dead_ani(1)
  239.             @battler_visible = false
  240.           elsif @battler.errorDead and @battler.dead?
  241.             @battler.errorDead = false
  242.             @last_hits = 0
  243.             @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  244.             @battler.setup_battler_dead_ani(1)
  245.             @battler_visible = false
  246.           end
  247.           #################################################################
  248.         # 胜利判定
  249.        elsif $scene.phase == 5 and @once == 0 and @battler_name != nil and not @battler.hidden and not @battler.dead? and $game_temp.battle_proc == nil
  250.              @once = 1
  251.              @battler.setup_battler_ani(@battler_name.split(/★/)[6], 1)
  252.         end
  253.       end
  254.     end
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ● 处理敌人动作
  258.   #--------------------------------------------------------------------------
  259.   def update_enemy_animation
  260.     if @battler.is_a?(Game_Enemy)
  261.       if @battler.show_damage_value != nil
  262.         self.damage(@battler.show_damage_value, false)
  263.         @battler.show_damage(nil)
  264.         @last_hits = 0
  265.         @hits = 0
  266.         #当6号开关为true时,不显示挨打动画
  267.         if $game_switches.[](6) or @battler.show_damage_animation == false
  268.           $game_switches.[]=(6,false)
  269.           @battler.show_damage_animation = true
  270.         else
  271.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  272.           @battler.setup_battler_hurt_ani(1)
  273.         end
  274.       end
  275.       if @battler.current_action.kind == 0 and @battler.current_action.basic == 1
  276.       else
  277.         #修正加血后BUG
  278.        if @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage <= 0 and $fangyu != 1
  279.          @last_hits = 0
  280.          @battler.setup_battler_hurt_ani(1)
  281.         # 单回合只有一次攻击
  282.         elsif @last_hits == 1 and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0
  283.           check_baby_skill
  284.           ############ #小改动
  285.           @last_hits = 0
  286.           ############
  287.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  288.           @battler.setup_battler_hurt_ani(1)
  289.           #################################################################
  290.         # 单回合多次攻击
  291.        elsif @hits > @temp_hits and @frame_index != @last_frame and not @battler.dead? and @battler.damage.is_a?(Numeric) and @battler.damage > 0
  292.          check_baby_skill
  293.          ############ #小改动
  294.           @temp_hits+=1
  295.           ############
  296.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  297.           @battler.setup_battler_hurt_ani(1)
  298.           #################################################################
  299.         # 死亡之前攻击
  300.        elsif @hits > @temp_hits and @frame_index != @last_frame and @battler.damage.is_a?(Numeric) and @battler.damage > 0 and @battler.dead? and @battler.battler_dead_ani != 1
  301.          check_baby_skill
  302.          ############ #小改动
  303.           @temp_hits+=1
  304.           ############
  305.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[3], 1)
  306.           @battler.setup_battler_hurt_ani(1)
  307.           #################################################################
  308.         # 无伤害的攻击
  309.         elsif !@battler_damage.is_a?(Numeric) and @last_hits == 1 and @frame_index == @last_frame
  310.           @last_hits = 0
  311.           #################################################################
  312.         # 闪避的回合
  313.         elsif @battler_damage.is_a?(Numeric) and @battler.damage == 0 and @last_hits == 1 and @frame_index == @last_frame
  314.           @last_hits = 0
  315.           #################################################################
  316.         # 死亡判定
  317.         elsif @last_hits == 1 and @frame_index == @last_frame and @battler.dead? and @battler.battler_dead_ani != 1
  318.           @last_hits = 0
  319.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  320.           @battler.setup_battler_dead_ani(1)
  321.           @battler_visible = false
  322.           collapse
  323.         end
  324.       end
  325.     end
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 刷新画面
  329.   #    增添跳跃功能
  330.   #--------------------------------------------------------------------------
  331.   def update
  332.     super
  333.     # 战斗者为 nil 的情况下
  334.     if @battler == nil
  335.       @battler_name = ""
  336.       self.bitmap = nil
  337.       loop_animation(nil)
  338.       loop_animation1(nil)
  339.       return
  340.     end
  341.     #刷新战斗血条
  342.     if @battler.is_a?(Game_Actor)
  343.       if not @sprite_contens.disposed?
  344.         if @battler_hp == 0 and not @battler.dead?
  345.           @sprite_contens.bitmap.clear
  346.           @sprite_contens.x = @battler.screen_x - 20
  347.           @sprite_contens.y = @battler.screen_y - 30
  348.           draw_actor_name(@battler, 0, 0)
  349.           draw_battle_sp(@battler, 0, 27)
  350.           draw_battle_hp(@battler, 0, 35)
  351.           @battler_hp = @battler.hp
  352.         elsif @battler_hp != @battler.hp and $scene.phase4_step == 6
  353.           @sprite_contens.bitmap.clear
  354.           @sprite_contens.x = @battler.screen_x - 30
  355.           @sprite_contens.y = @battler.screen_y - 20
  356.           draw_actor_name(@battler, 0, 0)
  357.           draw_battle_sp(@battler, 0, 27)
  358.           draw_battle_hp(@battler, 0, 35)
  359.           @battler_hp = @battler.hp
  360.         elsif @battler_sp != @battler.sp and $scene.phase4_step == 6
  361.           @sprite_contens.bitmap.clear
  362.           @sprite_contens.x = @battler.screen_x - 30
  363.           @sprite_contens.y = @battler.screen_y - 20
  364.           draw_actor_name(@battler, 0, 0)
  365.           draw_battle_sp(@battler, 0, 27)
  366.           draw_battle_hp(@battler, 0, 35)
  367.           @battler_sp = @battler.sp
  368.         end
  369.         if @wait_count.to_i != 0
  370.           @sprite_contens.visible = false
  371.         else
  372.           @sprite_contens.visible = true
  373.         end
  374.       end
  375.     elsif @battler.is_a?(Game_Enemy)
  376.       unless @sprite_contens.disposed?
  377.         if @battler.hp0?
  378.           @sprite_contens.bitmap.clear
  379.         end
  380.       if @wait_count.to_i != 0
  381.         @sprite_contens.visible = false
  382.       else
  383.         @sprite_contens.visible = true
  384.       end
  385.       end
  386.     end
  387.     #如果战斗结束则释放图形
  388.     if $scene.phase == 5
  389.        @sprite_contens.bitmap.dispose
  390.        @sprite_contens.dispose
  391.     end
  392.     # 文件名和色相与当前情况有差异的情况下
  393.     if @battler.battler_name != @battler_name or
  394.       @battler.battler_hue != @battler_hue or @battler.name != @name
  395.       @name = @battler.name
  396.       # 获取、设置位图
  397.       @battler_name = @battler.battler_name
  398.       @battler_hue = @battler.battler_hue
  399.       #self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  400.       @flash_shake_switch = true
  401.       #.......................................................................
  402.       if not @battler.hidden and not @battler.dead?
  403.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  404.       end
  405.       #.......................................................................
  406.       #@width = bitmap.width
  407.       #@height = bitmap.height
  408.       #self.ox = @width / 2
  409.       #self.oy = @height
  410.       self.ox = 0
  411.       self.oy = 50
  412.     end
  413.     #.......................................................................
  414.     update_actor_animation
  415.     update_enemy_animation
  416.     #.......................................................................
  417.     # 动画 ID 与当前的情况有差异的情况下
  418.     #.........................................................................
  419.     if @battler.is_a?(Game_Enemy)
  420.       if @once == 1 and @loop_animation_once == 1 and
  421.          @battler.battler_dead_ani == 1
  422.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[5])
  423.       elsif @once == 1 and @loop_animation_once == 1 and $scene.phase != 5
  424.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  425.       end
  426.     end
  427.     if @battler.is_a?(Game_Actor)
  428.       ####################################################################
  429.       if @once == 1 and @loop_animation_once == 1 and $scene.phase != 5 and
  430.          @battler.battler_dead_ani == 1 and @battler.dead?
  431.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[5])
  432.       #######################################################################
  433.       elsif @once == 1 and @loop_animation_once == 1 and $scene.phase != 5
  434.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  435.         #################################################################
  436.         $fangyu = 0
  437.         @battler.setup_battler_dead_ani(0)
  438.         ########################################################
  439.       elsif @once == 1 and @loop_animation_once == 1 and $scene.phase == 5 and
  440.             not @battler.dead?
  441.         @battler.setup_battler_ani(@battler.battler_name.split(/★/)[7])
  442.         ######################################################
  443.         $fangyu = 0
  444.         @battler.setup_battler_dead_ani(0)
  445.         ######################################################
  446.       end
  447.     end
  448.    
  449.     #加入了判断状态动画出现时机判断
  450.     if @state_animation_id != @battler.state_animation_id and ($scene.phase4_step == 6 or
  451.       @battler.state_animation_id == nil or (@state_animation_id != nil and
  452.       @battler.state_animation_id != nil and @battler.state_animation_id.size < @state_animation_id.size))
  453.       @state_animation_id = @battler.state_animation_id
  454.       @state_animation_array = nil
  455.       if @state_animation_id == nil
  456.         
  457.       else
  458.         @state_animation_array = []
  459.         for animation_id in @state_animation_id
  460.           @state_animation_array.push($data_animations[animation_id])
  461.         end
  462.       end
  463.       loop_animation1(@state_animation_array)   
  464.     end

  465.    
  466.     if @battler.battler_ani != @battler_ani
  467.       @battler_ani = @battler.battler_ani
  468.       @once = @battler.battler_ani_once
  469.       loop_animation($data_animations[@battler_ani.to_i])
  470.     end
  471.     #.........................................................................
  472.     # 明灭
  473.     if @battler.blink
  474.       blink_on
  475.     else
  476.       blink_off
  477.     end
  478.     # 不可见的情况下
  479.     unless @battler_visible
  480.       # 出现
  481.       if not @battler.hidden and not @battler.dead? #and
  482.          #(@battler.damage == nil or @battler.damage_pop)
  483.         #.......................................................................
  484.         if @battler.is_a?(Game_Enemy)
  485.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  486.           #appear
  487.         else
  488.           @battler.setup_battler_ani(@battler.battler_name.split(/★/)[1])
  489.         end
  490.         #.......................................................................
  491.         @battler_visible = true
  492.       end
  493.     end
  494.     # 可见的情况下
  495.     if @battler_visible
  496.       # 逃跑
  497.       if @battler.hidden
  498.         $game_system.se_play($data_system.escape_se)
  499.         escape
  500.         @battler_visible = false
  501.       end
  502.       # 白色闪烁
  503.       if @battler.white_flash
  504.         whiten
  505.         @battler.white_flash = false
  506.       end
  507.       # 动画
  508.       if @battler.animation_id != 0
  509.         animation = $data_animations[@battler.animation_id]
  510.         animation(animation, @battler.animation_hit,@battler.damage, @battler.critical)
  511.         # animation(animation, @battler.animation_hit)
  512.         @battler.animation_id = 0
  513.       end
  514.       # 伤害
  515.       if @battler.damage_pop
  516.         @battler.damage = nil
  517.         @battler.critical = false
  518.         @battler.damage_pop = false
  519.       end
  520.       # korapusu
  521.       if @battler.damage == nil and @battler.dead?
  522.         if @battler.is_a?(Game_Enemy)
  523.           if @battler.battler_dead_ani != 1
  524.             #p "Battler Death Error"
  525.             $game_system.se_play($data_system.enemy_collapse_se)
  526.             @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  527.             @battler.setup_battler_dead_ani(1)
  528.           end
  529.           #.....................................................................
  530.           collapse
  531.           #.....................................................................
  532.         else
  533.           #.....................................................................
  534.           if @battler.battler_dead_ani != 1
  535.             if @battler.id == 6
  536.             end
  537.             @last_hits = 0
  538.             @battler.setup_battler_ani(@battler.battler_name.split(/★/)[4], 1)
  539.             @battler.setup_battler_dead_ani(1)
  540.           end
  541.           #.....................................................................
  542.         end
  543.         @battler_visible = false
  544.       end
  545.     end
  546.     # 设置活动块的坐标
  547.     if @flash_shake_switch == true
  548.       self.x = @battler.screen_x
  549.       self.y = @battler.screen_y
  550.       self.z = @battler.screen_z
  551.       @flash_shake_switch = false
  552.       if @battler.is_a?(Game_Actor)
  553.         @sprite_contens.bitmap.clear
  554.         @sprite_contens.x = @battler.screen_x - 30
  555.         @sprite_contens.y = @battler.screen_y - 20
  556.         draw_actor_name(@battler, 0, 0)
  557.         draw_battle_sp(@battler, 0, 27)
  558.         draw_battle_hp(@battler, 0, 35)
  559.       elsif @battler.is_a?(Game_Enemy)
  560.         @sprite_contens.bitmap.clear
  561.         @sprite_contens.x = @battler.screen_x - 30
  562.         @sprite_contens.y = @battler.screen_y - 20
  563.         draw_actor_name(@battler, 0, 0)
  564.       end
  565.     end
  566.     if @flash_shake != 0 and @battler.damage != nil and RPG::BATTLER_JUMP
  567.       if @battler.is_a?(Game_Enemy)
  568.         case @flash_shake
  569.         when 9..10
  570.           self.x -=4
  571.           self.y -=4
  572.           self.z = @battler.screen_z
  573.         when 6..8
  574.           self.x -=2
  575.           self.y -=2
  576.           self.z = @battler.screen_z
  577.         when 3..5
  578.           self.x +=2
  579.           self.y +=2
  580.           self.z = @battler.screen_z
  581.         when 1..2
  582.           self.x +=4
  583.           self.y +=4
  584.           self.z = @battler.screen_z
  585.         end
  586.       end
  587.       if @battler.is_a?(Game_Actor)
  588.         case @flash_shake
  589.         when 9..10
  590.           self.x +=4
  591.           self.y +=4
  592.           self.z = @battler.screen_z
  593.         when 6..8
  594.           self.x +=2
  595.           self.y +=2
  596.           self.z = @battler.screen_z
  597.         when 3..5
  598.           self.x -=2
  599.           self.y -=2
  600.           self.z = @battler.screen_z
  601.         when 1..2
  602.           self.x -=4
  603.           self.y -=4
  604.           self.z = @battler.screen_z
  605.         end
  606.       end
  607.      @flash_shake -= 1
  608.     end
  609.   end
  610. end
复制代码
有办法解吗  因为我的游戏已经改动过了,如果再用工程模式 游戏里的改动会不会变?dsu_plus_rewardpost_czw
作者: 亿万星辰    时间: 2011-9-2 12:39
按你说的错误提示,那么是说明 @battler.screen_x 这个值为 nil 了
建议你在这行前加一个 p @battler 看看结果
作者: shoed    时间: 2011-9-2 14:58
@sprite_contens.x = @battler.screen_x
这里面@sprite_contens可能为nil,或@battler为nil,只能发工程来看,这样看不出什么问题




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