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

Project1

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

[已经解决] 角色空手攻击出错(纵版RTAB)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
45 小时
注册时间
2010-8-21
帖子
53
跳转到指定楼层
1
发表于 2014-7-10 16:10:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 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脚本学习方面指教一下,自己跟着教材学进程太慢了,而且有些照做后出的错实在是一头雾水,有兴趣带徒弟的加一个哦,不胜感激!

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2014-7-10 16:47:51 | 只看该作者
提示的意思:对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
复制代码
里面的算式可以自定义写出。

点评

↓RTAB应该是没问题,估计是别的地方出了问题,仿网游装备系统有小BUG?  发表于 2014-7-10 19:41
太感谢了,试过了,确实是这个问题,有机会多指教啊,谢谢~!!!  发表于 2014-7-10 19:30

评分

参与人数 1星屑 +252 收起 理由
弗雷德 + 252 认可答案(2333好久没干这种事了).

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
45 小时
注册时间
2010-8-21
帖子
53
3
 楼主| 发表于 2014-7-10 22:41:56 | 只看该作者
RyanBern 发表于 2014-7-10 16:47
提示的意思:对nil对象调用了each方法,发生No method error。这里指的是minus_state_set这个参数变成了nil ...

我是用了 仿网游装备 的脚本,不过其他还有好几个,准备自己试验做一个玩玩,脚本技术太差,只能被迫伸手了~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
45 小时
注册时间
2010-8-21
帖子
53
4
 楼主| 发表于 2014-7-11 10:56:03 | 只看该作者
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

也一样,无解了,求指教,谢谢~!!!
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

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

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

点评

已解决,非常感谢,之前一个没留意改错了脚本,现在好了。  发表于 2014-7-11 14:42
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-10-1 01:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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