jessy 发表于 2008-12-23 13:15:03

关于dazuo的一点小技巧(for newbie)

首先普及一个小常识-心跳
心跳就是mud的一个最小计时单位,所有跟时间有关的动作都是以心跳为基础的
比如,每10个心跳,气血精神内力等恢复一次,食物饮水掉一点
每30还是40次心跳,可以睡一次觉等等
所以,有时候你会看到一句话
Mudos tells you: You have no heart beat!
这就是说,时间凝固啦,系统要崩溃啦。这时候如果你睡觉,就再也醒不过来了,呵呵
扯远了,还是说回打坐
dazuo要花时间,所以也是跟心跳有关系的
每个心跳气血转化成内力的值设为a,那么a =1 + enable force/10
举个例子,一个id基本内功和特殊内功都是300级,等级20
那么enable force就是300+150+20=470 (可以支持4700点最大内力)
a=470/10+1=48
也就是说,每个心跳有48点气血转化成内力
如果你dazuo 480,就需要10次心跳
那么你dazuo 433呢,也是要经过10次心跳,因为9次心跳只能转化432点气血
这样你的效率就降低了(480-433)/480=9.8%,还是很可观的
特别是对于需要靠dazuo保持正循环的情况,比如读xkd的石壁,这是不能忽略的

结论:
dazuo xxxx,这个xxx值,取为enable force/10+1的整数倍,效率是最高的

slayercity 发表于 2008-12-23 13:22:27

不是每次打坐值为内力上限的四分之一,最有效率吗?

skywindcn 发表于 2008-12-23 13:48:18

请问一次心跳是多长时间?
小数点如何处理?

[ 本帖最后由 skywindcn 于 2008-12-23 01:49 PM 编辑 ]

jessy 发表于 2008-12-23 15:14:03

dazuo的效率跟内力上限没有任何关系
只跟enable force有关系

一次心跳大概是1s左右
你可以dazuo的时候,不停的hp查看,就可以看到气血是有规律的往下掉的
不能整除的一概取整,小数点后舍去,这是由lpc的除法运算规则决定的,所有用到除法的地方都是这样

jessy 发表于 2008-12-23 15:19:17

这里考虑的是理想情况,也就是服务器的延迟为0
当lag比较严重的时候,尽量减少执行指令的数目,也就是每次打坐更多的气,可以有效的提高效率,但是需要考虑最大内力增加的情况,尽量避免浪费,那就比较复杂了
当然,这时候前面所说的规律一样是适用的

xxxcc 发表于 2008-12-23 16:57:08

原帖由 jessy 于 2008-12-23 03:14 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
dazuo的效率跟内力上限没有任何关系
只跟enable force有关系

一次心跳大概是1s左右
你可以dazuo的时候,不停的hp查看,就可以看到气血是有规律的往下掉的
不能整除的一概取整,小数点后舍去,这是由lpc的除法运 ...
内力上限也是取决于enable force吧?
比如a = 10b;
c = 2b;
虽然a和c没有直接关系,但是很容易得到a = 5c啊。

jessy 发表于 2008-12-23 18:12:01

ok,说错了
我前面说的内力上限其实是指的最大内力
那个是没有关系的

isa 发表于 2008-12-23 22:29:09

那吐纳呢?和啥有关?

xxxcc 发表于 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 编辑 ]

xxxcc 发表于 2008-12-26 14:39:13

因为我没有超过10W经验的ID,所以无法测试超过10W的情况是否100%准确。
但是在小于10W的情况下,应该是没问题的,也实际测试过各种周效果的影响,计算完全正确。
页: [1] 2 3
查看完整版本: 关于dazuo的一点小技巧(for newbie)