exp=方法的定义就在level=上面。很清楚的看出,在修改exp的时候,会逐步修改@level变量,并且添加相应的技能。 
像你所做的,提前修改了@level,就会导致这个添加技能的步骤被跳过。 
#--------------------------------------------------------------------------   # ● 更改 EXP   #     exp : 新的 EXP   #--------------------------------------------------------------------------   def exp=(exp)     @exp = [[exp, 9999999].min, 0].max     # 升级     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0       @level += 1       # 学会特技       for j in $data_classes[@class_id].learnings         if j.level == @level           learn_skill(j.skill_id)         end       end     end     # 降级     while @exp < @exp_list[@level]       @level -= 1     end     # 修正当前的 HP 与 SP 超过最大值     @hp = [@hp, self.maxhp].min     @sp = [@sp, self.maxsp].min   end   #--------------------------------------------------------------------------   # ● 更改等级   #     level : 新的等级   #--------------------------------------------------------------------------   def level=(level)     # 检查上下限     level = [[level, $data_actors[@actor_id].final_level].min, 1].max     # 更改 EXP     self.exp = @exp_list[level]   end 
 
 #--------------------------------------------------------------------------  
  # ● 更改 EXP  
  #     exp : 新的 EXP  
  #--------------------------------------------------------------------------  
  def exp=(exp)  
    @exp = [[exp, 9999999].min, 0].max  
    # 升级  
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0  
      @level += 1  
      # 学会特技  
      for j in $data_classes[@class_id].learnings  
        if j.level == @level  
          learn_skill(j.skill_id)  
        end  
      end  
    end  
    # 降级  
    while @exp < @exp_list[@level]  
      @level -= 1  
    end  
    # 修正当前的 HP 与 SP 超过最大值  
    @hp = [@hp, self.maxhp].min  
    @sp = [@sp, self.maxsp].min  
  end  
  #--------------------------------------------------------------------------  
  # ● 更改等级  
  #     level : 新的等级  
  #--------------------------------------------------------------------------  
  def level=(level)  
    # 检查上下限  
    level = [[level, $data_actors[@actor_id].final_level].min, 1].max  
    # 更改 EXP  
    self.exp = @exp_list[level]  
  end  
 
  |