Project1
标题:
自己改的一个技能消耗HP脚本,顺便请高手帮我完善下。
[打印本页]
作者:
daiboy12
时间:
2010-8-24 21:59
标题:
自己改的一个技能消耗HP脚本,顺便请高手帮我完善下。
本帖最后由 daiboy12 于 2010-8-24 22:11 编辑
首先在Game_Battler中定义如下
class Game_Battler
def skill_cost_hp?(skill_id)
if skill_id == 1 or
skill_id == 2
return true
end
end
end
复制代码
也就是说1号技能和2号技能视为消耗HP的技能。
接下来在下面一点的地方改一下def skill_can_use?(skill_id)这块
if skill_cost_hp?(skill_id)
if $data_skills[skill_id].sp_cost > self.hp - 1
return false
end
else
if $data_skills[skill_id].sp_cost > self.sp
return false
end
end
复制代码
消耗HP的技能如果HP不足消耗量的话就视为不能使用。这样在下面可以少改很多窗口的地方。
-1是为了防止玩家使用技能造成死亡。
然后在Scene_Skill中
有个使用特技的情况下
大概在124行有这个
if @actor.skill_cost_hp?(@skill.id)
@actor.hp -= @skill.sp_cost
else
@actor.sp -= @skill.sp_cost
end
复制代码
把消耗SP改为消耗HP
接下来在战斗中还要再修改一次消耗HP。我用的是RTAB战斗脚本,所以就只能在这个脚本上改了。
大概在1789行中的
battler.sp -= @skill.sp_cost
复制代码
修改成
if battler.skill_cost_hp?(@skill.id)
battler.hp -= @skill.sp_cost
else
battler.sp -= @skill.sp_cost
end
复制代码
之后就大功告成啦!
请高手帮我看看有没有问题吧!至少我现在测试起来是OK了。
还有一个问题,就是在Game_Battler中的定义我好像做的太复杂了。如果有很多个技能就要打很多个 skill_id == XX 有什么办法可以简化吗?看很多其他人写的脚本中间都是隔着一个逗号就能行的。
作者:
六祈
时间:
2010-8-24 22:23
回复
daiboy12
的帖子
用[1 , 3 , 5 , 7].include?(skill_id)的写法即可
另外楼主这样写的话,自己用可以,可移植性不高
作者:
ML4455739
时间:
2010-8-24 22:26
个人觉得连续伤害状态够用了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1