查看: 2054|回复: 6

[已经解决] 【普通攻击技能id】的脚本问题

[复制链接]
梦石
0
星屑
1554
在线时间
523 小时
注册时间
2015-8-23
回帖
83
发表于 2015-9-30 17:00:07 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 寂寞的青椒 于 2015-10-1 07:40 编辑

这个脚本让我很头疼....因为他可用,但是却有后遗症。
问题出在角色没有武器的时候攻击会跳窗。
因为自己不了解脚本,只会皮毛的修改,怎么弄都弄不好....希望有大大来救我
让这脚本更完美些。
对了,这脚本是在工程包提取的,在By希忆的工程包。
脚本在此#随便乱写的,没怎么测试,无责任,可能出各种奇怪状况。 by希忆
#数据库角色/职业/武器备注 类似 <attack_skill 111>
#优先级:武器1 > 武器2 > 角色 > 职业

class RPG::Class < RPG::BaseItem

  def attack_skill
    @note =~ /\<(?:attack_skill) (\d+)\>/ ? $1.to_i : 1
  end
   
end


class RPG::EquipItem
  
  def attack_skill
    @note =~ /\<(?:attack_skill) (\d+)\>/ ? $1.to_i : 1
  end
  
end


class Game_Actor < Game_Battler
  
  def attack_skill_id
    return self.weapons[0].attack_skill if self.weapons[0]
    return self.weapons[1].attack_skill if self.weapons[1]
    return self.actor.attack_skill if self.actor.attack_skill != 1
    return self.class.attack_skill
    #return 1
  end
  
end

弹出的错误

弹出的错误

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2015-9-30 17:17:19 | 显示全部楼层
本帖最后由 百里_飞柳 于 2015-9-30 17:19 编辑

虽然我不怎么懂脚本,不过你可以试试这样做

#数据库角色/职业/武器备注 类似 <attack_skill 111>
#优先级:武器1 > 武器2 > 角色 > 职业

脚本里说了优先度,所以你可以在这三个地方都设置独立的攻击动画,再看看会不会报错,
或者直接把最后那一句return 1前面的#去掉看看。
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-9-30 18:15:31 | 显示全部楼层
把那个 return 1 前面的 # 号删了试试
回复

使用道具 举报

梦石
0
星屑
1554
在线时间
523 小时
注册时间
2015-8-23
回帖
83
 楼主| 发表于 2015-10-1 07:38:35 | 显示全部楼层
taroxd 发表于 2015-9-30 18:15
把那个 return 1 前面的 # 号删了试试

不行啊....还是报错了。
回复

使用道具 举报

梦石
0
星屑
1554
在线时间
523 小时
注册时间
2015-8-23
回帖
83
 楼主| 发表于 2015-10-1 07:39:22 | 显示全部楼层
百里_飞柳 发表于 2015-9-30 17:17
虽然我不怎么懂脚本,不过你可以试试这样做

#数据库角色/职业/武器备注 类似

不行啊....还是报错了。
回复

使用道具 举报

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2015-10-1 09:03:50 | 显示全部楼层

  1. class Game_Actor < Game_Battler
  2.   def attack_skill
  3.     @note =~ /\<(?:attack_skill) (\d+)\>/ ? $1.to_i : 1
  4.   end
  5.   
  6.   def attack_skill_id
  7.     return self.weapons[0].attack_skill if self.weapons[0]
  8.     return self.weapons[1].attack_skill if self.weapons[1]
  9.     return self.actor.attack_skill if self.actor.attack_skill != 1
  10.     return self.class.attack_skill
  11.     #return 1
  12.   end
  13. end
复制代码
看截图是因为actor类没有定义attack_skill方法,
于是……这样把第三小节的脚本改动了呢?

还一个暴力方法,如果你不需要对特定的角色设置不一样的攻击动画的话,
直接把第三小节改成

  1. class Game_Actor < Game_Battler
  2.   def attack_skill_id
  3.     return self.weapons[0].attack_skill if self.weapons[0]
  4.     return self.weapons[1].attack_skill if self.weapons[1]
  5.     return self.class.attack_skill if self.class.attack_skill != 1
  6.     return 1
  7.   end
  8. end
复制代码
这样就是不判定角色的自己的skill_id,而是在判定了职业的skill_id不为1后,直接全部返回1了。
好吧,如果再报错就把return 1前面一行的职业判定也删了吧……

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 我错了,我没仔细看报错内容(.

查看全部评分

回复

使用道具 举报

梦石
0
星屑
1554
在线时间
523 小时
注册时间
2015-8-23
回帖
83
 楼主| 发表于 2015-10-1 14:01:11 | 显示全部楼层
百里_飞柳 发表于 2015-10-1 09:03
看截图是因为actor类没有定义attack_skill方法,
于是……这样把第三小节的脚本改动了呢?

上一行删除后真的不跳窗了~你真是帮了我一个大忙~再次感谢~
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部