这个机器人的制作非常简单,仅仅需要第二章和第三章的知识就足够了.但是一个新手做出来的机器人和高手做的比起来就会显得简陋.
实际制作过程
希望机器人具备的特点:稳定,效率最大化,适用面最大化,打坐吐纳完毕自动下线
A 稳定方面:防发呆,断线自动重连
B 率最大化方面: (a)1000内力或者精力以下充分利用打坐或者吐纳双倍
(b)气血或精神如果够,刚好打坐吐纳至内力精力增加;如果不够,将气血精神用完,然后使用恢复手段
(c)利用休息周30%的提速,并且对付恶心的噩梦周
C 适用面方面:打坐吐纳统一为一个机器人,由于内力比精力重要,选择优先打坐,内力达到设定目标时自动转化为吐纳,同时可以设定精力优先于内力。对还没有脱离发呆室的未成年人同样适用。
步骤一:如果你听从了我的建议,相信你一定制作了4个专门的trigger来抓取hp的信息,然后给它们统一取一个class名并且保存到一个专门的文件,那么恭喜你,你现在要做的仅仅就是加载这个文件,去掉经验值和潜能抓取的2个trigger,这一步就完成了。
#tri {【%s气血%s】%s(%d)%s/%s(%d)%s~[(*)~%~]%s【%s内力%s】%s(%d)%s/%s(%d)}
{#var qixue %1
#var qixue_max %2
#var qixue_health %3
#var neili %4
#var neili_max %5} {hp}
#tri {【%s精神%s】%s(%d)%s/%s(%d)%s~[(*)~%~]%s【%s精力%s】%s(%d)%s/%s(%d)}
{#var jingshen %1
#var jingshen_max %2
#var jingshen_health %3
#var jingli %4
#var jingli_max %5} {hp}
步骤二:开始对内力,精力,气血,精神进行计算,来确定dazuo tuna的数值
先计算打坐
#math need [@neili_max*2+1-@neili]
//计算还需要多少内力才能使内力上限增加
#if (@neili_max<1000) {#math need (@need+1)/2}
//内力不足1000,需要减半,注意(@need+1)是为了防止/2之后自动取整造成结果不足以使内力上限增加
#var @dazuo [@qixue-(@qixue_max+9)/10]
//最多能供使用的气血是@qixue-@qixue_max/10,加9也是为了对付取整
#var need [(@need*100+129)/@sudu]
//通过一个变量@sudu来调整需要打坐的数值,+129对付取整
#var need %min(@dazuo,@need)
//%min表示2者之间小的那个
#var need %max(@need,10)
//%max表示2者之间大的那个,最终need的值就是你dazuo的数值了。注意@dazuo的值可能小于10
#if (@dazuo<10) {恢复} {dazuo @need}}
//气血不够恢复,否则dazuo
再计算吐纳,只需要做少量的修改,用同样的变量就可以了,尽量减少使用变量的数目
#var need [@jingli_max*2-@jingli+1]
#var need [(@need*100+129)/@sudu]
#math dazuo @jingshen-(@jingshen_max+9)/10]
#math need %min(@need,@dazuo)
#var need %min(@need,10)
#if (@dazuo<10) {恢复} {#if ((@neili>500)|(@fadai=0))
{tuna @need} {dazuo 500}}
//与打坐的时候不同,当你脱离了发呆室并且内力不够时,选择打坐,以确保有足有的内力恢复精神
步骤三:根据time的信息来修改@sudu的值,需要2个trigger
#tri {本周为噩梦之周*降低*降低(%d)~%} {#var sudu [100-%1]}
//抓取打坐吐纳速度降低的数值到%1,对@sudu进行修改
#tri {本周为(*)之周} {#if (%1!="噩梦") {#if (%1="休息") {#var sudu 100} {#var sudu 130}}}
//最前面判断%1是否=噩梦,以避免跟第一个trigger发生干扰
步骤四:把步骤二和三合起来
#tri {本周为噩梦之周*降低*降低(%d)~%}
{#var sudu [100-%1]
#if (@neili_max>=@neili_aim) {#var action 0}
//用@action的值来控制行为,值为1就打坐,值为0就吐纳
#if @action {#math need [@neili_max*2+1-@neili]
#if (@neili_max<1000) {#math need (@need+1)/2}
#var @dazuo [@qixue-(@qixue_max+9)/10]
#var need [(@need*100+129)/@sudu]
#var need %min(@dazuo,@need)
#var need %max(@need,10)
#if (@dazuo<10) {恢复} {dazuo @need}
}
{#var need [@jingli_max*2-@jingli+1]
#var need [(@need*100+129)/@sudu]
#math dazuo @jingshen-(@jingshen_max+9)/10]
#math need %min(@need,@dazuo)
#var need %min(@need,10)
#if (@dazuo<10)
{恢复} {#if (@jingli_max<@jingli_aim)
{#if ((@neili>500)|(@fadai=0)) {tuna @need} {dazuo 500}}
{#var zhanghao {};#var mima {};quit}
//再加入一个if语句,判断精力最大值如果没有达到目标,就吐纳,否则清空变量zhanghao和mima的值,然后退出,其中zhanghao和mima中保存着你id的帐号和密码,这样做是为了阻止自动连线
}
}
}
#tri {本周为(*)之周}
{ #if (%1!="噩梦") {#if (%1="休息") {#var sudu 100} {#var sudu 130}}
#if (@neili_max>=@neili_aim) {#var action 0}
#if @action {#math need [@neili_max*2+1-@neili]
#if (@neili_max<1000) {#math need (@need+1)/2}
#var @dazuo [@qixue-(@qixue_max+9)/10]
#var need [(@need*100+129)/@sudu]
#var need %min(@dazuo,@need)
#var need %max(@need,10)
#if (@dazuo<10) {恢复} {dazuo @need}
}
{#var need [@jingli_max*2-@jingli+1]
#var need [(@need*100+129)/@sudu]
#math dazuo @jingshen-(@jingshen_max+9)/10]
#math need %min(@need,@dazuo)
#var need %min(@need,10)
#if (@dazuo<10)
{恢复} {#if (@jingli_max<@jingli_aim)
{#if ((@neili>500)|(@fadai=0)) {tuna @need} {dazuo 500}}
{#var zhanghao {};#var mima {};quit}
}
}
}
步骤五:制作恢复的方法,dazuo和tuna时恢复的方法不一样,需要if语句来判断
#alias 恢复 {#if @action {#if @fadai {out;fadai} {exert recover;hp;time}}
//打坐时的恢复方法,@fadai用来指示是否脱离发呆室,分别采用发呆和吸气的方法来恢复
{#if @fadai {out;fadai} {#if (@neili<500)
{dazuo 500} {exert regenerate;hp;time}
}
}
//吐纳的恢复方法,exert regenerate之前要判断内力是否够用
}
#tri {你发呆了一会儿,发现自己居然精神百倍!} {#wa 1500;enter;hp;time}
#tri {你吐纳完毕,睁开双眼,站了起来。}
{#if @fadai {hp;time} {exert regenerate;hp;time}}
//能发呆就不用内力恢复,由于吐纳之前确定内力够用,是可以吸气的
#tri {你运功完毕,深深吸了口气,站了起来。}
{#if @fadai {hp;time} {exert recover;hp;time}}
步骤六:制作数个按钮来修改zhanghao,mima,fadai,action,jingli_aim,neili_aim按钮制作下一章再讲,制作技巧则在第八章讲到。不制作按钮也可以手动修改。
加入断线自动重连,手动修改一个zmud系统自带alias
#alias {atconnect} {@zhanghao;@mima;yes} {System}
#tri {欢迎来到北大侠客行!} {w;s;d;#if @fadai {out;fadai} {exert recover;exert regenerate;hp;time}}
由于网络速度的原因,用完发呆室之后的#wa 1500并不能消除busy
#tri {你的动作还没有完成,不能移动。} {#wa 1500;enter;hp;time}
另外机器人会由于某些原因中断,需要一个办法来让它重新运转。这是为了对付地痞以及网络速度等不确定因素,具体办法我会在第七章讲到。
至此机器人已经基本制作完成了。这个实例旨在抛砖引玉,完全面对新手,注释得也特别详细。
本例为了让新手能学得更多才做得复杂些,其实将未成年人和成年人混在一起并不是很好,会使机器人制作难度加大很多,看起来也很复杂。
另外在下一章中会用函数的方法将本例的计算大大简化。