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

Project1

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

[已经解决] 请问此脚本错误怎么解决?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
跳转到指定楼层
1
发表于 2010-8-31 13:54:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 p7l8k90 于 2010-8-31 17:01 编辑

就这个,应该怎么解决?
汗……这就是默认脚本啊,game_battler2啊,随便新建一个工程都有的,我以为不用发……好吧,我发脚本……
#==============================================================================
# ■ Game_Battler (分割定义 2)
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 检查状态
  #     state_id : 状态 ID
  #--------------------------------------------------------------------------
  def state?(state_id)
    # 如果符合被附加的状态的条件就返回 ture
    return @states.include?(state_id)
  end
  #--------------------------------------------------------------------------
  # ● 判断状态是否为 full
  #     state_id : 状态 ID
  #--------------------------------------------------------------------------
  def state_full?(state_id)
    # 如果符合被附加的状态的条件就返回 false
    unless self.state?(state_id)
      return false
    end
    # 秩序回合数 -1 (自动状态) 然后返回 true
    if @states_turn[state_id] == -1
      return true
    end
    # 当持续回合数等于自然解除的最低回合数时返回 ture
    return @states_turn[state_id] == $data_states[state_id].hold_turn
  end
  #--------------------------------------------------------------------------
  # ● 附加状态
  #     state_id : 状态 ID
  #     force    : 强制附加标志 (处理自动状态时使用)
  #--------------------------------------------------------------------------
  def add_state(state_id, force = false)
    # 无效状态的情况下
    if $data_states[state_id] == nil
      # 过程结束
      return
    end
    # 无法强制附加的情况下
    unless force
      # 已存在的状态循环
      for i in @states
        # 新的状态和已经存在的状态 (-) 同时包含的情况下、
        # 本状态不包含变化为新状态的状态变化 (-)
        # (ex : 战斗不能与附加中毒同时存在的场合)
        if $data_states.minus_state_set.include?(state_id) and
           not $data_states[state_id].minus_state_set.include?(i)
          # 过程结束
          return
        end
      end
    end
    # 无法附加本状态的情况下
    unless state?(state_id)
      # 状态 ID 追加到 @states 序列中
      @states.push(state_id)
      # 选项 [当作 HP 0 的状态] 有效的情况下
      if $data_states[state_id].zero_hp
        # HP 更改为 0
        @hp = 0
      end
      # 所有状态的循环
      for i in 1...$data_states.size
        # 状态变化 (+) 处理
        if $data_states[state_id].plus_state_set.include?(i)
          add_state(i)
        end
        # 状态变化 (-) 处理
        if $data_states[state_id].minus_state_set.include?(i)
          remove_state(i)
        end
      end
      # 按比例大的排序 (值相等的情况下按照强度排序)
      @states.sort! do |a, b|
        state_a = $data_states[a]
        state_b = $data_states
        if state_a.rating > state_b.rating
          -1
        elsif state_a.rating < state_b.rating
          +1
        elsif state_a.restriction > state_b.restriction
          -1
        elsif state_a.restriction < state_b.restriction
          +1
        else
          a <=> b
        end
      end
    end
    # 强制附加的场合
    if force
      # 设置为自然解除的最低回数 -1 (无效)
      @states_turn[state_id] = -1
    end
    # 不能强制附加的场合
    unless  @states_turn[state_id] == -1
      # 设置为自然解除的最低回数
      @states_turn[state_id] = $data_states[state_id].hold_turn
    end
    # 无法行动的场合
    unless movable?
      # 清除行动
      @current_action.clear
    end
    # 检查 HP 及 SP 的最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ● 解除状态
  #     state_id : 状态 ID
  #     force    : 强制解除标志 (处理自动状态时使用)
  #--------------------------------------------------------------------------
  def remove_state(state_id, force = false)
    # 无法附加本状态的情况下
    if state?(state_id)
      # 被强制附加的状态、并不是强制解除的情况下
      if @states_turn[state_id] == -1 and not force
        # 过程结束
        return
      end
      # 现在的 HP 为 0 当作选项 [当作 HP 0 的状态]有效的场合
      if @hp == 0 and $data_states[state_id].zero_hp
        # 判断是否有另外的 [当作 HP 0 的状态]状态
        zero_hp = false
        for i in @states
          if i != state_id and $data_states.zero_hp
            zero_hp = true
          end
        end
        # 如果可以解除战斗不能、将 HP 更改为 1
        if zero_hp == false
          @hp = 1
        end
      end
      # 将状态 ID 从 @states 队列和 @states_turn hash 中删除
      @states.delete(state_id)
      @states_turn.delete(state_id)
    end
    # 检查 HP 及 SP 的最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ● 获取状态的动画 ID
  #--------------------------------------------------------------------------
  def state_animation_id
    # 一个状态也没被附加的情况下
    if @states.size == 0
      return 0
    end
    # 返回概率最大的状态动画 ID
    return $data_states[@states[0]].animation_id
  end
  #--------------------------------------------------------------------------
  # ● 获取限制
  #--------------------------------------------------------------------------
  def restriction
    restriction_max = 0
    # 从当前附加的状态中获取最大的 restriction
    for i in @states
      if $data_states.restriction >= restriction_max
        restriction_max = $data_states.restriction
      end
    end
    return restriction_max
  end
  #--------------------------------------------------------------------------
  # ● 判断状态 [无法获得 EXP]
  #--------------------------------------------------------------------------
  def cant_get_exp?
    for i in @states
      if $data_states.cant_get_exp
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 判断状态 [无法回避攻击]
  #--------------------------------------------------------------------------
  def cant_evade?
    for i in @states
      if $data_states.cant_evade
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 判断状态 [连续伤害]
  #--------------------------------------------------------------------------
  def slip_damage?
    for i in @states
      if $data_states.slip_damage
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 解除战斗用状态 (战斗结束时调用)
  #--------------------------------------------------------------------------
  def remove_states_battle
    for i in @states.clone
      if $data_states.battle_only
        remove_state(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 状态自然解除 (回合改变时调用)
  #--------------------------------------------------------------------------
  def remove_states_auto
    for i in @states_turn.keys.clone
      if @states_turn > 0
        @states_turn -= 1
      elsif rand(100) < $data_states.auto_release_prob
        remove_state(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 状态攻击解除 (受到物理伤害时调用)
  #--------------------------------------------------------------------------
  def remove_states_shock
    for i in @states.clone
      if rand(100) < $data_states.shock_release_prob
        remove_state(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 状态变化 (+) 的适用
  #     plus_state_set  : 状态变化 (+)
  #--------------------------------------------------------------------------
  def states_plus(plus_state_set)
    # 清除有效标志
    effective = false
    # 循环 (附加状态)
    for i in plus_state_set
      # 无法防御本状态的情况下
      unless self.state_guard?(i)
        # 这个状态如果不是 full 的话就设置有效标志
        effective |= self.state_full?(i) == false
        # 状态为 [不能抵抗] 的情况下
        if $data_states.nonresistance
          # 设置状态变化标志
          @state_changed = true
          # 附加状态
          add_state(i)
        # 这个状态不是 full 的情况下
        elsif self.state_full?(i) == false
          # 将状态的有效度变换为概率、与随机数比较
          if rand(100) < [0,100,80,60,40,20,0][self.state_ranks]
            # 设置状态变化标志
            @state_changed = true
            # 附加状态
            add_state(i)
          end
        end
      end
    end
    # 过程结束
    return effective
  end
  #--------------------------------------------------------------------------
  # ● 状态变化 (-) 的使用
  #     minus_state_set : 状态变化 (-)
  #--------------------------------------------------------------------------
  def states_minus(minus_state_set)
    # 清除有效标志
    effective = false
    # 循环 (解除状态)
    for i in minus_state_set
      # 如果这个状态被附加则设置有效标志
      effective |= self.state?(i)
      # 设置状态变化标志
      @state_changed = true
      # 解除状态
      remove_state(i)
    end
    # 过程结束
    return effective
  end
end
那,就是这个了,系统说260行,也就是这句if rand(100) < [0,100,80,60,40,20,0][self.state_ranks],这回再次请问,该如何解决?
此问题暂时已经解决,大体原因是因为我添加了一个状态……结果就出了这种错误,把它一删掉就不出……太奇怪了……一年后估计还会提此问题……

点评

请楼主提供工程或者脚本,仅仅这一个出错信息无法解决  发表于 2010-8-31 13:59

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-8-6
帖子
27
2
发表于 2010-8-31 14:02:24 | 只看该作者
应该和其他脚本发起了冲突,或者你修改了他

点评

= =坏人来了  发表于 2010-8-31 14:25
请自删上面两楼,否则一会版主要过来扣分了(连帖+灌水)  发表于 2010-8-31 14:03
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-8-10
帖子
201
3
发表于 2010-8-31 15:47:07 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 22:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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