Project1
标题:
会心一击公式可不可以这么写有没有问题
[打印本页]
作者:
lirn
时间:
2014-9-6 22:49
标题:
会心一击公式可不可以这么写有没有问题
我记得,必杀公式如果是与属性挂钩,是这么改
在Game_Battler找到
1. value = apply_critical(value) if @result.critical
修改为
1. value = apply_critical(value*user.luk/self.luk.to_f) if @result.critical
如果我想改成必杀伤害在1.5倍的最低基础上与角色的幸运相关,改成这样会不会有问题?
1. value = apply_critical(value*(1.5 +[user.luk-self.luk*0.5, 0] *0.1 ).to_f) if @result.critical
作者:
喵呜喵5
时间:
2014-9-6 23:48
本帖最后由 喵呜喵5 于 2014-9-6 23:50 编辑
默认脚本中,apply_critical(value)的作用就是value*3,于是你的这段代码在必杀时的伤害实际上等同于:
value = (value*(1.5 +[user.luk-self.luk*0.5, 0] *0.1 ).to_f )*3 if 必杀一击
复制代码
结果是4.5倍最低基础,而不是你所希望的1.5倍最低基础
另外,在你的公式中出现的:[user.luk-self.luk*0.5, 0]
如果你是希望最小值为0而不出现负数的话,应该改成这样:
[user.luk-self.luk*0.5, 0].max
(.to_f 貌似是没有必要的)
作者:
lirn
时间:
2014-9-7 11:49
喵呜喵5 发表于 2014-9-6 23:48
默认脚本中,apply_critical(value)的作用就是value*3,于是你的这段代码在必杀时的伤害实际上等同于:结果 ...
感谢,因为这个是人家告诉我的,我只是复制之后更改
to_f有什么作用?
然后那个为什么要加个.max?
作者:
喵呜喵5
时间:
2014-9-7 12:33
to_f : 转化成浮点数
首先你要理解,在电脑中,小数和整数是不一样的,整数间进行运算的结果永远只是整数,1和1.0在电脑中是不同的,因此如果几个整数间的运算希望结果是小数的话就要使用to_f,例如:
(1/2) = 1
(1/2).to_f = 1
(1.to_f/2) = 0.5
(1.0/2) = 0.5
复制代码
[user.luk-self.luk*0.5, 0]
这是一个数组,如果无法理解的话你可以这么想:
一个老太太 * 3 = 三个老太太,如何把三个老太太换成一个数字?
[user.luk-self.luk*0.5, 0].max
这是一个数字,数字的值是 user.luk-self.luk*0.5 和 0 中比较大的那个
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1