本帖最后由 jesyao 于 2017-6-16 03:12 AM 编辑
(五)侠客机器人 侠客任务相对来说是比较危险的任务,一旦死亡就有可能会终止机器人的运行,除非你再写一段死后的处理(哈哈~)。所以侠客机器人如何稳定运行就是比较重要啦,把死亡率降到0,就是我们的目标。 首先机器人的流程是这样的: 接到任务下山找崔老头,进入迷宫,找到山寨,恢复自身状态,double 内力,杀土匪头,镯子给崔老头,上山回复任务,疗伤,接任务。 要想降低死亡率,关键步骤在杀土匪头之前的状态调整,及回复任务后的疗伤阶段。 另外一个难点在村口有时会有土匪挡道,使机器人停止,杀掉土匪后,机器人怎样继续执行。 最大的难点就是如何让机器人自动走这个迷宫,到达土匪头的老窝了。 就以上几个问题我们一起来探讨: 1、战斗前的状态调整:
- //用say xxx作为触发战斗准备
- Say 战斗准备
- Pattern:你说道:「战斗准备」
- Command:
- //气血或精神受伤,内力满足要求时,开始治疗,并再次检查状态
- #if (@qixue_health<100|@jingshen_health<100) {
- #if (@neili>@xk_neili) {
- yun heal;
- #wa 1000;
- yun inspire;
- hp;
- say 战斗准备} {yun heal;yun inspire}};
- //内力不达到要求时,开始打坐到内力要求值。
- #if (@neili<@xk_neili) {
- #wa 1000;
- dazuo [%max(10,%abs(@xk_neili-@neili+100))]};
-
- //三项都满足要求时,回复气血30秒(刚刚打坐完,保险起见,需要多次测试,符合自己气血恢复速度,提高机器人效率),开始战斗,jiali max,最短时间杀死土匪头。
- #if (@qixue_health=100&@jingshen_health=100&@neili>@xk_neili) {
- #wa 30000;
- yun recover;
- exert powerup;
- jiali max;
- kill @zhanghao's tufeitou;
- perform dodge.zong}
复制代码
涉及到的变量:xk_neili %eval(@neili_max*2-200)
2、战斗后的治疗:
- //判断是否中毒,如果中毒中毒状态为1
- Pattern:【%s状态%s】%s(*)
- Command:#if %pos("毒",%1) {zhong_du=1} {zhong_du=0}
- //如果状态正常,开始接下一个任务
- Pattern:你说道:「开始疗伤」
- Command:#if (@qixue_health=100&@jingshen_health=100&@zhong_du=0) {user_status=0;#t- zhi_liao;s;kick3}
-
- //如果不正常 开始治疗,并打坐回复内力,吐纳回复精力。打坐吐纳期间没有心跳,不会发作,
- 这样持续打坐,治疗,再打坐再治疗直到毒状态消失。
- {yun heal; yun inspire;#wa 500;dazuo 300}
复制代码
如果是重伤不能治疗,就吃药,这里就不写了,大家自己加上触发就好了。
3、路径的使用及挡道土匪的处理 如何使用zmud路径功能 路径是zmud里的一个功能,他可以吧你走过的路线录制、保存并调用。路径的使用分2部分: 1.定义方向:在zmud路径功能里的方向只能用一个字符代表,他分不清ne是northeast的意思,他认为ne是2步:n是一步,e是一步,所以我们可以用h代表ne,你走ne的时候路径录制的就是h。所以第一步把所有的方向录入进去,应该是18个左右,键盘快用光了。 2.录制路径:在起点打开路径功能点录制路径,然后你就出发,到终点点击停止录制,保存为一个路径名称,接着就可以调用了。 3.路径调用:比如武当到武当村的路径名称为 wd-wdc调用格式如下: .wd-wdc 注意前面的点,表示这是路径,并且快速行走。那么从武当村到武当还需要录制一遍么?其实是不需要的,只需要再加一个点就是返回路径:..wd-wdc 就返回武当了。 慢步走:#slow .wd-wdc 当慢走时选项里有时间,时间以内输入#ok,就执行下一步,时间以外,就停止行走。其他的请参见相关页面: http://www.pkuxkx.net/forum/viewthread.php?tid=2612&highlight=%23step 在村口遇见拦路土匪的处理:
- //杀掉拦路土匪后触发。
- Pattern:经过一段时间后,你终于完全从紧张地战斗氛围中解脱出来。
- Command:
- #if (@xk_site=1&@xk_busy=1) {#if (@xk_job=1) {se;w;#var xk_busy 0} {se;w;#sl .wdc-wd;#var xk_busy 0}} {look}
复制代码 在这里抓取房间信息“村口”,如果房间信息是村口 xk_site=1 如果不是就是0,如果打过土匪,xk_busy=1,没打过就是0,这两个状态可根据你自己的方式抓取,比如“你正忙着呢,无法移动!”“逃跑失败”#var xk_busy 1;等等。Xk_job 侠客任务状态,状态1:从武当来执行任务,状态2:执行完任务回武当,状态0,没执行任务。根据这三个状态量,进行判断下一步的行动。 4.如何自动走迷宫: 每个迷宫都有自己的特点或者说规律,只要找出规律我们就可以编制走迷宫的机器人了,那么侠客任务的迷宫有什么特点呢: 1、有enter的出口,一定要走enter 2、绝对不能走out的出口 3、不走回头路 4、最多只有4个出口 好了这已经足够了:
- Pattern:^%s这里{唯一|明显}的出口是(*)。$
- Command:
- //初始化变量
- chu1="";
- chu2="";
- chu3="";
- chu4="";
- real_chu="";
- //处理获取出口信息
- exit=%1;
- //建立出口list变量
- exit=%replace("%1","、","|");
- exit=%replace(@exit," 和 ","|");
- exit=%trim(@exit);
- //获取出口数量
- exitnum=%numwords(@exit,|);
- exitnums=%numwords(@exit,|);
- //死路,回头。
- #if (@exitnum=1) {exitnum=0;#echo 没路了,回头;#wa 500;@exit};
- //有enter的走enter
- #if %ismember(enter,@exit) {exitnum=0;real_chu=enter};
- //出口变量赋值
- #loop %numwords(@exit,|) {#var chu%i %word(@exit,%i,|)};
- //计算哪一个是来的方向
- stepnum=@ismember(@step,@fang_xiang,1);
- chua1=[@ismember(@chu1,@fang_xiang,1)-1];
- chub1=[@ismember(@chu1,@fang_xiang,1)+1];
- chua2=[@ismember(@chu2,@fang_xiang,1)-1];
- chub2=[@ismember(@chu2,@fang_xiang,1)+1];
- chua3=[@ismember(@chu3,@fang_xiang,1)-1];
- chub3=[@ismember(@chu3,@fang_xiang,1)+1];
- chua4=[@ismember(@chu4,@fang_xiang,1)-1];
- chub4=[@ismember(@chu4,@fang_xiang,1)+1];
- //筛选有效出口
- #if (@chu1<>""&@chu1<>out&@exitnum>0&@chua1<>@stepnum&@chub1<>@stepnum) {real_chu=%additem(@chu1,@real_chu)} {#if (@exitnum>0) {exitnum=[@exitnum-1]}};
- #if (@chu2<>""&@chu2<>out&@exitnum>0&@chua2<>@stepnum&@chub2<>@stepnum) {real_chu=%additem(@chu2,@real_chu)} {#if (@exitnum>0) {exitnum=[@exitnum-1]}};
- #if (@chu3<>""&@chu3<>out&@exitnum>0&@chua3<>@stepnum&@chub3<>@stepnum) {real_chu=%additem(@chu3,@real_chu)} {#if (@exitnum>0) {exitnum=[@exitnum-1]}};
- #if (@chu4<>""&@chu4<>out&@exitnum>0&@chua4<>@stepnum&@chub4<>@stepnum) {real_chu=%additem(@chu4,@real_chu)} {#if (@exitnum>0) {exitnum=[@exitnum-1]}};
- #if (@chu1=out|@chu2=out&@exitnums=2) {#if (@chu1=out) {real_chu=@chu2} {real_chu=@chu1}};
- //走每一步的间隔时间,网卡的话适当调整
- #wa 500;
- //随机走一个有效出口,防止循环路径
- step=%word(@real_chu,%random(1,%numwords(@real_chu,|)),|);
- //出发。
- @step
复制代码
涉及到的变量:fang_xiang {p|north|south|p|east|west|p|northeast|southwest|p|northwest|southeast|p|enter|out|P} 为什么变量是这样,中间加个P,在论坛里有答案。 五、其他问题: 其实还有一些想说的细节,但是论坛里其实都有,就不说了。 机器人就是挂机用的,稳定啊稳定,才是最重要的,可能机器人的效率不高,但是能够稳定的运行才是关键。 小技巧:这里不走第三个enter,就可以变成刷道德的机器人了,直到被抓进监狱,出来杀土匪头,前提带好出狱的银子,怎么做大家自己考虑吧。 已经被cut,怪不得道德涨的这么慢!!! 我自己测试的数据如下: 技能等级:全部 175级。经验支持最大等级:195级,死亡率:0 祝愿武当新人都玩的轻松愉快。 |