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
算法可以自己写,以下样本(乱写的,别相信)
  1.   def hit
  2.     if two_swords_style
  3.       n = (base_agi * 10 / 100) * (weapons[0].hit + weapons[1].hit) / 200
  4.     else
  5.       n = (base_agi * 10 / 100) * weapons[0].hit / 100
  6.     end
  7.     return n
  8.   end
复制代码

作者: 怪蜀黍    时间: 2012-3-31 14:03
本帖最后由 protosssonny 于 2012-3-31 14:09 编辑
  1. 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来对命中率取整。当然你也可以自己设计为保留一位小数等,至于怎么保留,话题扯远了,我这里就不写了。
关于以上公式,可以写成:
  1. hit = (80+20.0*agi*C1/(agi*C1+C) ).round    #C、C1为任意正数
复制代码
这样可以利用敏捷的系数C1来微调命中与敏捷的关系。
比如:
  1. hit = (80+20.0*agi*2/(agi*2+50) ).round   
复制代码
{:2_273:}





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1