Project1

标题: 角色空手攻击出错(纵版RTAB) [打印本页]

作者: scgjgj999    时间: 2014-7-10 16:10
标题: 角色空手攻击出错(纵版RTAB)
本帖最后由 scgjgj999 于 2014-7-10 16:13 编辑

求教各位大侠,角色在空手状态下攻击出错,提示框



出错脚本行

  #--------------------------------------------------------------------------
  # ● ステート変化 (-) の適用
  #     minus_state_set : ステート変化 (-)
  #--------------------------------------------------------------------------
  def states_minus(battler, minus_state_set)
    # 有効フラグをクリア
    effective = false
    # ループ (解除するステート)
    for i in minus_state_set
      # このステートが付加されていれば有効フラグをセット
      effective |= self.state?(i)
      # ステート変化フラグをセット
      @state_changed = true
      # ステートを解除
      self.state_m[battler].push(i)
    end
    # メソッド終了
    return effective
  end

我修改了 获取基本攻击力 的公式,但是还是一样,不太理解提示的意思,求指教!~~~~

随便问一下,能把基本攻击力的获取改成 每个职业 计算方法不一样吗?求教详细点,也是需要加上空手攻击别跳错误。。。

另求个师傅,能在RUBY脚本学习方面指教一下,自己跟着教材学进程太慢了,而且有些照做后出的错实在是一头雾水,有兴趣带徒弟的加一个哦,不胜感激!


作者: RyanBern    时间: 2014-7-10 16:47
提示的意思:对nil对象调用了each方法,发生No method error。这里指的是minus_state_set这个参数变成了nil。原因可能是修改了minus_state_set这个方法,全局搜索def minus_state_set,应该在Game_Actor里面有个定义。看看里面的定义方式。
  1.   def minus_state_set
  2.     weapon = $data_weapons[@weapon_id]
  3.     return weapon != nil ? weapon.minus_state_set : []
  4.   end
复制代码
这个出现在Game_Actor,RTAB脚本并未对其作出改变。看看这个是不是发生了改动。

另外,修改Game_Actor里面的base_atk方法,即可更改每个职业的计算基本攻击力的方式。
  1. def base_atk
  2.   weapon = @data_weapons[@weapon_id]
  3.   atk = weapon != nil ? weapon.atk : 0
  4.   case @class_id # 根据职业ID分歧
  5.   when 1
  6.     # 算式1
  7.   when 2
  8.     # 算式2
  9.   #-------
  10.   end
  11.   return atk
  12. end
复制代码
里面的算式可以自定义写出。
作者: scgjgj999    时间: 2014-7-10 22:41
RyanBern 发表于 2014-7-10 16:47
提示的意思:对nil对象调用了each方法,发生No method error。这里指的是minus_state_set这个参数变成了nil ...

我是用了 仿网游装备 的脚本,不过其他还有好几个,准备自己试验做一个玩玩,脚本技术太差,只能被迫伸手了~~
作者: scgjgj999    时间: 2014-7-11 10:56
RyanBern 发表于 2014-7-10 16:47
提示的意思:对nil对象调用了each方法,发生No method error。这里指的是minus_state_set这个参数变成了nil ...

打搅你下,我按照你的方法
修改Game_Actor里面的base_atk方法,即可更改每个职业的计算基本攻击力的方式。

def base_atk
  weapon = @data_weapons[@weapon_id]
  atk = weapon != nil ? weapon.atk : 0
  case @class_id # 根据职业ID分歧
  when 1
    atk += self.maxhp / 4 + self.maxsp / 4 + self.int / 2 # 算式1   这个是一种
  when 2
   atk += base_agi / 2# 算式2 这个简单点
  #-------
  end
  return atk
end

但是都没有效果啊,也不报错误,后来我又改成了不用 case when 的
def base_atk
  weapon = @data_weapons[@weapon_id]
  atk = weapon != nil ? weapon.atk : 0
  atk += self.int / 2 if @class_id == 2
  atk += self.agi / 2 if @class_id == 3

  return atk
end

也一样,无解了,求指教,谢谢~!!!

作者: RyanBern    时间: 2014-7-11 11:07
scgjgj999 发表于 2014-7-11 10:56
打搅你下,我按照你的方法
修改Game_Actor里面的base_atk方法,即可更改每个职业的计算基本攻击力的方式 ...

可能是脚本冲突造成的。你全局搜索一下def base_atk,看看一共出现过几个地方。然后在最后那个定义的地方仿照这里修改吧。你的附加脚本太多了,所以不知道是哪个其他脚本覆盖了Game_Actor里面的。




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