Project1

标题: 这一段脚本能缩短到一行吗? [打印本页]

作者: chd114    时间: 2014-12-7 13:06
标题: 这一段脚本能缩短到一行吗?

  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 [email protected]?($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;什么的就可以了吗?
作者: taroxd    时间: 2014-12-7 14:19
RUBY 代码复制
  1. Chd114::Skill::FrontSkill[id][0].each { |key, value| return if @actor.skill_sealed?(key) || !@actor.skill?(key) || @actor.skilllevel[key] < value }


我那个 skill? 是可以直接传入 id 的
作者: chd114    时间: 2014-12-7 14:23
taroxd 发表于 2014-12-6 21:19
Chd114::Skill::FrontSkill[0].each { |key, value| return if @actor.skill_sealed?(key) || [email protected] ...
  1. @actor.skill?(技能编号)
  2. @actor.skill?($data_skills[技能编号])
复制代码
都可以?
作者: 喵呜喵5    时间: 2014-12-7 14:27
  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 [email protected]?($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;
复制代码

作者: chd114    时间: 2014-12-7 16:55
taroxd 发表于 2014-12-6 21:19
Chd114::Skill::FrontSkill[0].each { |key, value| return if @actor.skill_sealed?(key) || [email protected] ...

  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]]
复制代码

   




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