| 
 | 
 
一直以来经常有公版机器人渴死饿死的问题我也遇到,但是我已经修改完了。 
事先声明,我根本不懂LUA,所有代码都是现学现卖,本教程思路也是给不懂的小白学的,大神绕过(大神,你怎么不把机器人完善一下) 
正常情况都是要你去分析代码,分析到底卡在哪里,但是公版机器人非常复杂,体量很大,各种函数调用来调用去分析非常费神费时,这里我分享一种限制循环次数的思路。 
 
打个比方,因为之前所有武器掉落不下线,所以我修改了相关函数,但是它偶尔会卡在检查私有武器这一块(也不知道什么原因,挂两天都没事,第3天卡了) 
- nick 赶路中
 
 - jifa force yinyun-ziqi
 
 - halt
 
 - 恭喜!您现在的新绰号是:「赶路中」
 
 - > 你决定用氤氲紫气作为你的内功。
 
 - > 你现在不忙。
 
 - id
 
 - i
 
 - look bei nang
 
 - uweapon
 
 - alias action 检查包裹
 
 - > 你身上携带物品的别称如下(右方):
 
 - ……
 
 - > 你把 "action" 设定为 "检查包裹" 成功完成。
 
 - >
 
 - nick 赶路中
 
 - jifa force yinyun-ziqi
 
 - halt
 
  复制代码 
正常的话检查包裹他就下去了,不会重新又nick 赶路中 
于是在nick 赶路中 下面添加如下代码 
-    nick_ganlu_jishu=nick_ganlu_jishu+1
 
 -    print('nick赶路计数',nick_ganlu_jishu)  --number类型可以直接打印
 
 -    if nick_ganlu_jishu>20 then
 
 -         exe('stop') 
 
 -         xunhuanjianchaLog()  --这个日志要在job.lua里面写,可以不用
 
 -    end
 
  复制代码 
代码的意思是设置一个计数大于20就停止,等他到时候发呆重启,当然你也可以,等几秒直接重启,快一点。 
然后在上面200多行这里随便找个位置写个变量申明,nick_ganlu_jishu=0  *注意不要插在别的数组的大括号里面 
(exe('stop') 这一句还没测试,因为我在修改好相关代码之后,就没有出现过循环,我就是提供一个思路) 
 
然后简单分析一下流程,最后把清零的代码写在里面 
check_heal()——》check_jingxue_count()——》checkBags()——》check_jingxue()——》check_heal_over()——》checkPrepare() 
我写在了checkPrepare()里面,因为他每次任务结束开始之前都是要执行的。清零的代码:nick_ganlu_jishu=0 
 
我仅提供一个思路啊,如果你要是在学习交换武器,这里渴死饿死也可以用这个方法 
就比如把触发“你使用的武器不对”单拎出来,执行的函数里面弄个计数,然后再找一个确定通了往下走了的地方,把计数清零,不然计数超过多少就重启机器。 
当然你要是自己找出哪里卡住那就最好,我这个属于曲线救国 |   
 
 
 
 |