查看: 3315|回复: 2

[RMXP发布] 自己改的一个技能消耗HP脚本,顺便请高手帮我完善下。

[复制链接]
梦石
0
星屑
511
在线时间
50 小时
注册时间
2009-7-1
回帖
66
发表于 2010-8-24 21:59:40 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 daiboy12 于 2010-8-24 22:11 编辑

首先在Game_Battler中定义如下
  1. class Game_Battler
  2.   def skill_cost_hp?(skill_id)
  3.     if skill_id == 1 or
  4.       skill_id == 2
  5.       return true
  6.     end
  7.   end
  8. end
复制代码
也就是说1号技能和2号技能视为消耗HP的技能。

接下来在下面一点的地方改一下def skill_can_use?(skill_id)这块
  1. if skill_cost_hp?(skill_id)
  2.   if $data_skills[skill_id].sp_cost > self.hp - 1
  3.     return false
  4.   end
  5. else
  6.   if $data_skills[skill_id].sp_cost > self.sp
  7.     return false
  8.   end
  9. end
复制代码
消耗HP的技能如果HP不足消耗量的话就视为不能使用。这样在下面可以少改很多窗口的地方。
-1是为了防止玩家使用技能造成死亡。

然后在Scene_Skill中
有个使用特技的情况下
大概在124行有这个
  1. if @actor.skill_cost_hp?(@skill.id)
  2.   @actor.hp -= @skill.sp_cost
  3. else
  4.   @actor.sp -= @skill.sp_cost
  5. end
复制代码
把消耗SP改为消耗HP

接下来在战斗中还要再修改一次消耗HP。我用的是RTAB战斗脚本,所以就只能在这个脚本上改了。
大概在1789行中的
  1. battler.sp -= @skill.sp_cost
复制代码
修改成
  1. if battler.skill_cost_hp?(@skill.id)
  2.   battler.hp -= @skill.sp_cost
  3. else
  4.    battler.sp -= @skill.sp_cost
  5. end
复制代码
之后就大功告成啦!

请高手帮我看看有没有问题吧!至少我现在测试起来是OK了。

还有一个问题,就是在Game_Battler中的定义我好像做的太复杂了。如果有很多个技能就要打很多个 skill_id == XX 有什么办法可以简化吗?看很多其他人写的脚本中间都是隔着一个逗号就能行的。

旅之愚者

梦石
0
星屑
560
在线时间
814 小时
注册时间
2007-7-28
回帖
2121

贵宾

发表于 2010-8-24 22:23:48 | 显示全部楼层
回复 daiboy12 的帖子

用[1 , 3 , 5 , 7].include?(skill_id)的写法即可

另外楼主这样写的话,自己用可以,可移植性不高
   
回复

使用道具 举报

梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
回帖
571

开拓者

发表于 2010-8-24 22:26:47 | 显示全部楼层
个人觉得连续伤害状态够用了

点评

好像不那么高,记得这个状态,在地图上走路也会扣血。  发表于 2010-8-25 11:51
消耗hp没法定量,记得连续伤害是1/10还是1/20来着?  发表于 2010-8-24 22:34
往事简直不堪回首,稍微做点想做的事吧
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部