Project1
标题: 【已解决】如何让某些技能在某些状态下提高成功率 [打印本页]
作者: 奉命在先 时间: 2018-5-12 22:58
标题: 【已解决】如何让某些技能在某些状态下提高成功率
本帖最后由 奉命在先 于 2018-5-13 08:51 编辑
虽然按照下面这两个脚本代码下 鼓捣出了自己要的效果 但是一次只能判定一个技能id 很麻烦 试了在 if item.is_a?(RPG::Skill) && item.id == 后面用[1,2,3]或者[1..3]这样写 都没有卵用 要么完全不判定,要么就只判定第一个技能ID
本来是想在某个状态(或者先制攻击的情况)下 让一些平时成功率很低的技能100%命中
物理攻击技能其实可以通过状态里的添加物理命中率来提升成功率 但是魔法攻击就不行了 因为没有添加魔法命中率的选项
https://rpg.blue/forum.php?mod=viewthread&tid=397315
https://rpg.blue/forum.php?mod=viewthread&tid=377047
我暂时鼓捣出的这个目前好像没啥问题,如果只需要个别技能这种效果的可以拿去用 如果改成if item.is_a?(RPG::Skill) && item.id = [1,2,3] 虽然1/2/3号技能都可以判定 但是再用时会跳错
class Game_Battler < Game_BattlerBase
#================================================
#================================================
def item_hit(user, item)
rate = item.success_rate * 0.01
rate *= user.hit if item.physical?
if item.is_a?(RPG::Skill) && item.id == 194 and user.state?(6)#194号技能在6号状态下成功率为100
rate = 100#大概是成功率 可以自己改
return rate
end
if item.is_a?(RPG::Skill) && item.id == 195 and user.state?(6)#195号技能在6号状态下成功率为100
rate = 100#大概是成功率 可以自己改
return rate
end
return rate
end
end
class Game_Battler < Game_BattlerBase
#================================================
#================================================
def item_hit(user, item)
rate = item.success_rate * 0.01
rate *= user.hit if item.physical?
if item.is_a?(RPG::Skill) && item.id == 194 and user.state?(6)#194号技能在6号状态下成功率为100
rate = 100#大概是成功率 可以自己改
return rate
end
if item.is_a?(RPG::Skill) && item.id == 195 and user.state?(6)#195号技能在6号状态下成功率为100
rate = 100#大概是成功率 可以自己改
return rate
end
return rate
end
end
根据2楼的提示改的 暂时没什么问题,有需要的拿去用,我自己只是测试了在队伍只有一个人的情况下第一回合的判定,不保证多个队友或者后面几回合会不会出问题。
class Game_Battler < Game_BattlerBase
#================================================
#================================================
def item_hit(user, item)
rate = item.success_rate * 0.01
rate *= user.hit if item.physical?
if item.is_a?(RPG::Skill) && [194,195,196].include?(item.id) and user.state?(6)#194/195/196号技能在6号状态下成功率100,可以在[]内自行追加技能编号
rate = 100#大概是成功率 可以自己改
return rate
end
return rate
end
end
class Game_Battler < Game_BattlerBase
#================================================
#================================================
def item_hit(user, item)
rate = item.success_rate * 0.01
rate *= user.hit if item.physical?
if item.is_a?(RPG::Skill) && [194,195,196].include?(item.id) and user.state?(6)#194/195/196号技能在6号状态下成功率100,可以在[]内自行追加技能编号
rate = 100#大概是成功率 可以自己改
return rate
end
return rate
end
end
作者: 梦想家大魔王 时间: 2018-5-13 00:12
我记得ruby中判断一个数组中是否包含某个值,是用"[1, 2, 3].include?(item.id)"这样的语法格式。
作者: 骷髅岛遗老 时间: 2018-5-19 02:05
其实我想顺路问一下这个“失败”是指直接发动无效这回合白费还是另有一套公式
作者: guoxiaomi 时间: 2018-5-19 09:10
应该可以直接改$data_skills吧,行动前缓存一个备份,然后直接改了,行动后改回来
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |