Project1
标题:
命中率的计算
[打印本页]
作者:
a364774426
时间:
2012-3-5 17:28
标题:
命中率的计算
本帖最后由 a364774426 于 2012-3-5 17:28 编辑
默认的工程了固定了角色的命中率
我想让它跟角色的敏捷相关,基础值是80,敏捷越高命中率越高,但是不会达到100
这一条公式该怎么写呢? dsu_plus_rewardpost_czw
作者:
zhengxinwu
时间:
2012-3-5 21:06
武器和技能 也都各自的命中啊
那样真的萌大奶
作者:
消失的三千
时间:
2012-3-31 09:17
修改Game_Actor里的def hit
算法可以自己写,以下样本(乱写的,别相信)
def hit
if two_swords_style
n = (base_agi * 10 / 100) * (weapons[0].hit + weapons[1].hit) / 200
else
n = (base_agi * 10 / 100) * weapons[0].hit / 100
end
return n
end
复制代码
作者:
怪蜀黍
时间:
2012-3-31 14:03
本帖最后由 protosssonny 于 2012-3-31 14:09 编辑
hit = (80+20.0*agi/(agi+C) ).round #C为任意正数
复制代码
以上公式的hit是永远在80到100之间的,因为agi/(agi+C) 是真分数,大于0且小于1。20乘一个真分数,值一定在0至20之间,80加一个0至20之间的数,那么值一定在80至100之间。
注意20.0不要写成20,我们需要小数来计算,纯整数会达不到目的,全部计算完毕后用.round来对命中率取整。当然你也可以自己设计为保留一位小数等,至于怎么保留,话题扯远了,我这里就不写了。
关于以上公式,可以写成:
hit = (80+20.0*agi*C1/(agi*C1+C) ).round #C、C1为任意正数
复制代码
这样可以利用敏捷的系数C1来微调命中与敏捷的关系。
比如:
hit = (80+20.0*agi*2/(agi*2+50) ).round
复制代码
{:2_273:}
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1