|
发表于 2008-12-26 14:34:51
|
显示全部楼层
详细的计算是这样的:
一个心跳,可以认为是一秒,所以一秒钟可以转换enable force/10+1取整的气血量到内力(吐纳其实是一样的)。
比如,你enable force是92,那么一秒钟可以转换92/10+1=10点气血变成内力。
然后,你现在气血是130/130,内力是105/105,那么你应该打坐多少最好呢?
按照楼主的说法“dazuo xxxx,这个xxx值,取为enable force/10+1的整数倍,效率是最高的”,那么应该打坐110点,(此处假设你经验已经超过10W,气血到内力的转换比是1:1),花费时间为11秒,内力升级完成,剩余气血20。
事实上,我们很容易看出,打坐105点,才是最优秀的方案,虽然仍然花费时间11秒,但是剩余气血是25。
当然对于噩梦之周的话,打坐105就非常不合算了,因为在噩梦之后的情况下,只有enable force/10+1的整数倍,是有效值,多余的数字因为取整的关系,是不会变成内力的。(比如噩梦效果-4%,那么105点内力中最后的5点,算法是5×(1-0.04),其中1-0.04是取整的就是0.96取整,就是0,所以5×0=0,剩余的5点气血,花费了1秒钟,居然没效果。)
下面列出整个最优化打坐吐纳的计算过程:
$temp = @conversion*(1+@weekChange) //weekChange是噩梦之周之类的增加或减少效果值
#if (%match($temp, "(%d)~.%d", $temp) = 1) {#noop} //取整数,有简单的办法请告诉我
efficiency = $temp
$temp = 1*(1+@weekChange)
#if (%match($temp, "(%d)~.%d", $temp) = 1) {#noop}//取整数
efficiencyPer = $temp
#if (@exp < 100000) {
efficiency = @efficiency*2 //这个是enforce/10+1的气血的转换效果,新手效果2倍。
efficiencyPer = @efficiencyPer*2 //这个是不满enforce/10+1的气血的转换效果,新手效果2倍。
}
$temp = @neiliMax*2 - @neili
dazuoTimes = $temp / @efficiency //这个是内力升级需要的enable force/10+1的倍数
mod = %mod($temp, @efficiency)
$temp = @qixue / 10
#if (%mod($temp, 10) > 0) {#add $temp 1}
#if ($temp < 10) {$temp = 10}
dazuoTimesMax = (@qixue - $temp) / @conversion
#if (@conversion <= 10 && @dazuoTimesMax <= 1) {dazuoTimesMax = 0} //当前气血最多能够打坐多少次enable force/10+1的倍数
#if (@dazuoTimesMax > @dazuoTimes) {
#if (@conversion <= 10 && @dazuoTimes <= 1 && @dazuoTimesMax != 0) {
dazuo 10
$times = 10 / @conversion
#if (%mod(10, @conversion) > 0) {#add $times 1}
$time = $times * 1000
#wait $time
hpp
} {
$fix = 0
#if (@efficiencyPer != 0) {$fix = (@mod+1)/@efficiencyPer} //这个就是计算升级需要的整数倍的余量问题
$dazuo = @dazuoTimes * @conversion + $fix
dazuo $dazuo
#if (@mod != 0) {#add dazuoTimes 1}
$time = @dazuoTimes * 1000
#wait $time
hpp
}
} {
#if (@conversion <= 10 && @dazuoTimesMax <= 1 || @dazuoTimesMax == 0) {
refullQixue
} {
$dazuo = @dazuoTimesMax * @conversion
dazuo $dazuo
$time = @dazuoTimesMax * 1000
#wait $time
hpp
}
}
[ 本帖最后由 xxxcc 于 2008-12-26 02:37 PM 编辑 ] |
|