查看: 1880|回复: 4

[已经解决] 这一段脚本能缩短到一行吗?

[复制链接]
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-12-7 13:06:29 | 显示全部楼层 |阅读模式

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

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

×

  1.       for i in 0...Chd114::Skill::FrontSkill[id][0].keys.size#获取前置技能ID
  2.         #判断前置技能是否可用
  3.         return if @actor.skill_sealed?(Chd114::Skill::FrontSkill[id][0].keys[i])
  4.         #判断前置技能是否拥有
  5.         return if !@actor.skill?($data_skills[Chd114::Skill::FrontSkill[id][0].keys[i]])
  6.         #判断前置技能等级是否符合升级条件
  7.         return if @actor.skilllevel[Chd114::Skill::FrontSkill[id][0].keys[i]]<Chd114::Skill::FrontSkill[id][0].values[i]
  8.       end
复制代码
一共8行···循环缩成一行里面写return if;什么的就可以了吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

…あたしは天

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

开拓者贵宾

发表于 2014-12-7 14:19:59 | 显示全部楼层
[pre lang="ruby" line="1"]Chd114::Skill::FrontSkill[id][0].each { |key, value| return if @actor.skill_sealed?(key) || !@actor.skill?(key) || @actor.skilllevel[key] < value }[/pre]

我那个 skill? 是可以直接传入 id 的

点评

|| 在这里和or是一个意思吧?  发表于 2014-12-7 14:24

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

 楼主| 发表于 2014-12-7 14:23:26 | 显示全部楼层
taroxd 发表于 2014-12-6 21:19
Chd114::Skill::FrontSkill[0].each { |key, value| return if @actor.skill_sealed?(key) || !@actor.skil ...
  1. @actor.skill?(技能编号)
  2. @actor.skill?($data_skills[技能编号])
复制代码
都可以?

点评

是啦~  发表于 2014-12-7 14:44
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-12-7 14:27:59 | 显示全部楼层
  1. for i in 0...Chd114::Skill::FrontSkill[id][0].keys.size;return if @actor.skill_sealed?(Chd114::Skill::FrontSkill[id][0].keys[i]);return if !@actor.skill?($data_skills[Chd114::Skill::FrontSkill[id][0].keys[i]]);return if @actor.skilllevel[Chd114::Skill::FrontSkill[id][0].keys[i]]<Chd114::Skill::FrontSkill[id][0].values[i];end;
复制代码

评分

参与人数 1星屑 +15 收起 理由
国产吃货 + 15 忍不住笑喷=V=

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

 楼主| 发表于 2014-12-7 16:55:21 | 显示全部楼层
taroxd 发表于 2014-12-6 21:19
Chd114::Skill::FrontSkill[0].each { |key, value| return if @actor.skill_sealed?(key) || !@actor.skil ...

那
  1. #判断剩余技能点是否大于升级所需技能点
  2.     return if Chd114::Skill::Sp[@actor.id]<Chd114::Skill::Up[id][@actor.skilllevel[id]]
  3.     #角色等级满足升级技能需要等级
  4.     return if @actor.level<Chd114::Skill::FrontLevel[id][@actor.skilllevel[id]]
  5.     #技能等级小于最大等级
  6.     return if @actor.skilllevel[id]>=Chd114::Skill::Max[id]
复制代码
也能缩短成
  1. return if Chd114::Skill::Sp[@actor.id]<Chd114::Skill::Up[id][@actor.skilllevel[id]] || @actor.skilllevel[id]>=Chd114::Skill::Max[id] || @actor.level<Chd114::Skill::FrontLevel[id][@actor.skilllevel[id]]
复制代码
?
   

点评

能  发表于 2014-12-7 17:11
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部