查看: 1896|回复: 3

[已经解决] 求救,这个我瞎写的脚本有办法缩短吗

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2014-11-3 17:14:55 | 显示全部楼层 |阅读模式

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

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

×
太可怕了。状态少的时候还好。状态多起来要给每种排列都设定。


[pre lang="ruby" line="1"]def slip_damage_effect
  xxxx = self.maxhp / 30
  yyyy = self.hp / 20
  zzzz = self.maxsp / 20
  qqqq = self.maxhp / 10
  if self.state?(24) and self.state?(3) and self.state?(32)  and self.state?(45)  
    #默认的回血毒烧伤回SP效果
    self.damage["slip"] = (xxxx + yyyy - qqqq)
    self.damage_sp["slip"] = zzzz
    self.hp -= self.damage["slip"]
    self.sp += self.damage_sp["slip"]
    return true
  end
  if self.state?(24) and self.state?(3) and self.state?(32)#默认的毒烧伤回血效果
    self.damage["slip"] = (xxxx + yyyy - qqqq)  
    self.hp -= self.damage["slip"]
    return true
  end
  if self.state?(3) and self.state?(32)#默认的毒烧伤效果
    self.damage["slip"] = (xxxx + yyyy)  
    self.hp -= self.damage["slip"]
    return true
  end
  if  self.state?(24) and self.state?(32)  and self.state?(45)  #默认的烧伤回SP回血效果
    self.damage["slip"] = (yyyy - qqqq)
    self.damage_sp["slip"] = zzzz
    self.hp -= self.damage["slip"]
    self.sp += self.damage_sp["slip"]
    return true
  if  self.state?(32)  and self.state?(45)  #默认的烧伤回SP效果
    self.damage["slip"] = yyyy
    self.damage_sp["slip"] = zzzz
    self.hp -= self.damage["slip"]
    self.sp += self.damage_sp["slip"]
    return true
  end
  if self.state?(24) and self.state?(3) and self.state?(45)  #默认的毒回SP回血效果
    self.damage["slip"] = (xxxx - qqqq)
    self.damage_sp["slip"] = zzzz
    self.hp -= self.damage["slip"]
    self.sp += self.damage_sp["slip"]
    return true
  end
  if self.state?(3) and self.state?(45)  #默认的毒回SP效果
    self.damage["slip"] = xxxx
    self.damage_sp["slip"] = zzzz
    self.hp -= self.damage["slip"]
    self.sp += self.damage_sp["slip"]
    return true
  end
  if self.state?(24) and self.state?(3) #默认的毒回血效果
    self.damage["slip"] = (xxxx - qqqq)
    self.hp -= self.damage["slip"]
    return true
  end
  if self.state?(3) #默认的毒效果
    self.damage["slip"] = xxxx
    self.hp -= self.damage["slip"]
    return true
  end
  if self.state?(24) and self.state?(32) #烧伤回血
    self.damage["slip"] = (yyyy - qqqq)
    self.hp -= self.damage["slip"]
    return true
  end
  if self.state?(32) #烧伤
    self.damage["slip"] = yyyy
    self.hp -= self.damage["slip"]
    return true
  end
  if self.state?(24) and self.state?(45)  #回SP回血效果
    self.damage["slip"] = qqqq
    self.hp += self.damage["slip"]
    self.damage_sp["slip"] = zzzz
    self.sp += self.damage_sp["slip"]
    return true
  end
  if self.state?(45)  #回SP效果
    self.damage_sp["slip"] = zzzz
    self.sp += self.damage_sp["slip"]
    return true
  end
  if self.state?(24)  #回血
    self.damage["slip"] = qqqq  
    self.hp += self.damage["slip"]
    return true
  end
  # 过程结束
  return true
end
end[/pre]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2014-11-3 17:33:10 | 显示全部楼层
最后添加得太多了报错了{:2_264:}
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-11-3 19:25:07 | 显示全部楼层
4个状态共要考虑16种情况……
self.damage被黑掉了?
即兴写下面的脚本,未测试
[pre lang="Ruby"]# 3=>毒
# 24=>回血
# 32=>烧伤
# 45=>回蓝
def slip_damage_effect
  hp_v = {3 => self.maxhp / 30, 24 => -self.hp / 20, 32 => self.maxhp / 10}
  sp_v = {45 => -self.maxsp / 20}
  hp_damage = 0
  sp_damage = 0
  hp_v.keys.each do |id|
    hp_damage += hp_v[id] if self.state?(id)
  end
  sp_v.keys.each do |id|
    sp_damage += sp_v[id] if self.state?(id)
  end
  self.damage["slip"] = hp_damage if hp_damage != 0
  self.hp -= hp_damage
  self.damage_sp["slip"] = sp_damage if sp_damage != 0
  self.sp -= sp_damage
end[/pre]

点评

试了下,挺好的。最后少了个END。  发表于 2014-11-3 21:23
感谢。不过我发现把每条IF里面的return true去掉后,就可以共存了,不需要考虑AND了  发表于 2014-11-3 21:14
回复

使用道具 举报

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

开拓者

发表于 2014-11-5 21:58:11 | 显示全部楼层
你这是用在哪里的脚本···

点评

连续伤害啊,我已经解决了  发表于 2014-11-5 22:02
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部