guzhuyy 发表于 2019-9-27 16:54:29

zmud462谍报机器人思路

目前北侠新人要完全靠自己成长比较困难,没有稳定的经济来源,现在很多的捡垃圾机器人,捡垃圾也不靠谱了,beg大腿也终非长久之计。个人觉得谍报任务算是一个适合新手和弱鸡门派的任务,虽然麻烦,但胜在战斗简单以及收益还可以,尽管已经cut的不要不要的了。。。
    下面分享一下我的ZMUD462谍报辅助机器人的一些思路,希望能帮助到一些想靠自己自力更生的新人,也请大佬多多指正。

    谍报任务,我们也叫御姐任务,是由成都四川总督府的余玠(御姐@_@)发放的。接任务条件是人物达到20级,大概3.2m以上经验。
    任务流程:
      第一步:御姐要你去某个城市里找某个长成特定样子的人接头(以下把这第一个人叫做线报人),去找到线报人,问他"接头"。
      第二步:线报人告诉你在某处留言板上有你需要的信息。去看留言板,得到第二个人(以下把第二个人称为接头人)的信息,包括接头人所在城市和房间、人名和接头的暗号。
      第三步:找到接头人,说出暗号,战斗。
      第四步:回到御姐那交任务(看图片解析情报@_@)。
    谍报任务要跑很多路,为了实现机器对各个步骤的衔接,可以把走路的路线固定一下:
      成都接任务——第一次回扬州——去线报人城市遍历1——第二次回扬州——去留言板——第三次回扬州——去接头人城市遍历2——第四次回扬州——去成都交任务
      可以通过预先定义到扬州以后的行动(#al act_af_yz {...}),配合一个任务状态变量@job_state实现所有任务步骤衔接起来。
      每次回到扬州CT,看一下树洞:#tr {这是一个黑不溜湫的大洞,里面不知道有些什么古怪。} {#say 到了扬州;act_af_yz}
      定义一个变量@job_state用来记录任务完成进度,因为有两次遍历,遍历结束后,要通过@job_state来判断回到扬州后的动作。
      #tr {遍历结束} {back_yz;#if (@job_state=getjob) {#al act_af_yz {没找到线报人,扬州去成都}};#if (@job_state=readboard) {#al act_af_yz {没找到接头人,扬州去成都}}

    以下是对应相应步骤的机器人思路:
      第一步:机器的目的是要找到正确的线报人并进入下一步。
            a、首先接任务,获取遍历城市名称(@blcity)和线报人容貌(@rm)两个变量值,这里容貌描述较长,为避免ZMUD乱码出现可考虑选取某个关键词用来触发即可:
    #tr {余玠在你的耳边悄声说道:为了保护接头人的安全,接头人的名字不能透露,我只能告诉你某人在(%x)等着你。$长相大致如下(%x)。} {job_state=getjob;blcity=%1;rm=%2;#say 线报人在%1;成都去扬州} {db}
         #tr {线报人在小山村} {#act_af_yz {扬州去小山村;#wa xxx;bl};#act back_yz {小山村去扬州;look shudong}}
         #tr {线报人在牙山} {#act_af_yz {扬州去牙山;bl};#act back_yz {牙山去扬州;look shudong}}
            ......
            b、线报人只有城市没有房间名,需要遍历整个城市地图。先做好每个任务城市的遍历走路机器(不会做高级遍历的新手可参考:http://www.pkuxkx.com/forum/thread-44747-1-1.html,做一个简易的傻瓜遍历机器就够用了)。
            #tr {小山村遍历进行中} {#case @blnum {......} {bianli}
            #tr {牙山遍历进行中} {#case @blnum {......} {bianli}
            ......
         c、找线报人,思路是每个NPC都看一遍,遍历速度wa=1500左右就OK了。
          看人:#tr {^    %x*~((%x)%s(%x)~)} {#if (%1=Heipao) {#say 黑袍人,别看} {l %lower(%1) %2}} {db_ask}
          谍报NPC大概有以下特征:1、左边顶格后四个空格;2、括号里英文名中间有个空格。
          因为黑袍人也是这个,因此做了特别排除,因为某些黑袍老大杀气很高,不能看,血的教训。。。
          此外由于很多掉在地上的物品也是这样,要避免看它们,可以先set room_item skip,找到线报人后再unset room_item。
          找正确的线报人接头:#tr {*~((%x)%s(%x)~)$*~@rm*} {#t- bianli;xbr1=%1;xbr2=%2;ask %lower(@xbr1) @xbr2 about 接头;#wa 5000;bl} {db_ask}
          找到线报人:#tr {*在你的耳边悄声说道:有人在(%x)给你留下了下一步行动的步骤。} {job_state=findxbr;#say 去看%1;wa=100}
          留言板回扬州:#tr {去看扬州的发呆店留言板} {#act_af_yz {扬州去扬州的发呆店留言板;read new};#al board_back_yz {发呆店留言板回扬州;look shudong}
                                  #tr {去看天龙寺的天龙寺留言簿} {#act_af_yz {扬州去天龙寺的天龙寺留言簿;read new};#al board_back_yz {天龙留言板回扬州;look shudong}
                                  ......
          ps:任务涉及28个留言板,大部分在各个门派。其中洛阳的侠客行江湖风云录在洛阳望星楼,北京的留言板在天桥客栈,扬州的扬州城人物侦测报告在丐帮洪七公那里,日月神教的异闻录在黑木崖上,非日月的需要金蛇锥,一般可在帮派商店花20金买到,给上官云一次后,只要不掉线都可以上黑木崖。

      第二步:看到留言板上给自己的留言:#tr {*谷万主钧鉴:%s知名不具} {job_state=readboard}
      将留言内容保存在变量@aaa,并且截屏在名为“job_db”的窗口:
      #tr {----------------------------------------------------------------------$(*)$}{#cap job_db;aaa=%1;#say 留言解码为@aaa}
      显示用来触发的留言有几种类型:   
      1、留言解码为西驿道 牙山其人名曰张三 天王盖盖地虎   
      2、留言解码为天王盖盖地虎 人在牙山,西驿道附近,名唤张三   
      3、留言解码为牙山的西驿道,说出天王盖盖地虎,张三会找你。
      4、留言解码为牙山内的西驿道,暗号天王盖盖地虎,请找张三
      5、留言解码为张三正在牙山的西驿道等着你,暗号是“天王盖盖地虎”。
      6、留言解码为天王盖盖地虎####张三◎◎◎◎牙山★★西驿道
      下面需要用4个变量将信息存下来:
      @blcity:接头人所在城市(遍历地图)
      @rm:接头人名字
      @ah:接头暗号
      @rm1:接头人所在房间
       1~5类留言触发的变量抓取比较好弄,就不赘述了,主要说说第6类留言的变量信息抓取。
       第6类留言是4段文字中间用三种特殊字符分隔,名字、暗号、城市和房间的顺序每次也不一致,找不到什么明显的规律。
       由于特殊字符不好匹配,考虑用%replace他们替换成空格。
       先把特殊字符存入变量:bbb=#|◎|★
       #tr {----------------------------------------------------------------------$(*)$}{temp=@aaa;#loop 50 {p=%word(@bbb,%i,|);temp=%replace(@temp,@p, )};#say 留言解码为@temp;#wa 3000;board_back_yz}
       上面命令执行后的显示结果:留言解码为天王盖盖地虎 张三 牙山 西驿道
       把这用空格隔开的4段文字存入@a1、@a2、@a3、@a4四个变量,准备从这4个变量中来确定接头人的名字、城市、接头暗号和房间。
       先定义一个任务城市集合变量@ccc,如果@a1~@a4谁在其中,便是接头人所在城市了,然后判断@a1~@a4哪个是暗号,因为暗号好像至少六个字,可以根据字节长度来判断,(后来又发现有些房间也有六个字的,还好不多,于是又定义了一个六个字房间的集合变量@ddd加以排除)@_@。再然后剩下的两个哪个是人名、哪个是房间名我也没办法再区分了。
       ccc=白驼山|北京|成都|大理城中|大轮寺|峨嵋|峨眉后山|福州|丐帮|古墓|归云庄|杭州提督府|华山|黄河北岸|黄河南岸|湟中|嘉兴|建康府北城|建康府南城|江州|晋阳|荆州|康亲王府|昆明|临安府|兰州|灵鹫|灵州|凌霄城|洛阳|明教|明州|慕容|姑苏慕容|南昌|平西王府|麒麟村|曲阜|全真|泉州|日月神教|杀手帮|少林寺|神龙岛|苏州|泰山|桃花岛|桃源|天龙寺|天坛|无量山|武当山|西湖|西湖梅庄|襄阳|小山村|信阳|星宿|牙山|扬州|岳王墓|岳阳|张家口|紫禁城|长江北岸|长江|镇江|中原|丝绸之路|
      ddd=侍卫营武器库|洛阳中心广场|刑部府衙大门|古墓派休息室|打铁铺(售刀剑)|打铁铺(售盔甲)|计氏马车总行|虫二的地下城铁铺|中原马车总行|绿柳山庄小路|杭州分舵大门|平西王府正厅|平西王府大门|计氏马车分行|瞿塘巫峡纤道|华山论剑报名处|星宿派储藏室|吐蕃织造作坊|平西王秘藏宝库|兵部府衙大门|户部府衙大门|礼部府衙大门
      然后触发就写成了这样子了:
       #tri {^留言解码为(%x)%s(%x)%s(%x)%s(%x)$} {a1=%1;a2=%2;a3=%3;a4=%4;#if (%ismember(@a1,@ccc)) {blcity=@a1;#if (%len(@a2)>10) {#if (%ismember(@a2,@ddd)<1) {ah=@a2;rm=@a3;rm1=@a4}};#if (%len(@a3)>10) {#if (%ismember(@a3,@ddd)<1) {ah=@a3;rm=@a2;rm1=@a4}};#if (%len(@a4)>10) {#if (%ismember(@a4,@ddd)<1) {ah=@a4;rm=@a2;rm1=@a3}}};#if (%ismember(@a2,@ccc)) {blcity=@a2;#if (%len(@a1)>10) {#if (%ismember(@a1,@ddd)<1) {ah=@a1;rm=@a3;rm1=@a4}};#if (%len(@a3)>10) {#if (%ismember(@a3,@ddd)<1) {ah=@a3;rm=@a1;rm1=@a4}};#if (%len(@a4)>10) {#if (%ismember(@a4,@ddd)<1) {ah=@a4;rm=@a1;rm1=@a3}}};#if (%ismember(@a3,@ccc)) {blcity=@a3;#if (%len(@a1)>10) {#if (%ismember(@a1,@ddd)<1) {ah=@a1;rm=@a2;rm1=@a4}};#if (%len(@a2)>10) {#if (%ismember(@a2,@ddd)<1) {ah=@a2;rm=@a1;rm1=@a4}};#if (%len(@a4)>10) {#if (%ismember(@a4,@ddd)<1) {ah=@a4;rm=@a1;rm1=@a2}}};#if (%ismember(@a4,@ccc)) {blcity=@a4;#if (%len(@a1)>10) {#if (%ismember(@a1,@ddd)<1) {ah=@a1;rm=@a2;rm1=@a3}};#if (%len(@a3)>10) {#if (%ismember(@a3,@ddd)<1) {ah=@a3;rm=@a1;rm1=@a2}};#if (%len(@a2)>10) {#if (%ismember(@a2,@ddd)<1) {ah=@a2;rm=@a1;rm1=@a3}}};#say 接头人在@blcity,ah=@ah,rm=@rm,rm1=@rm1}
      执行后显示为:接头人在牙山,ah=天王盖盖地虎,rm=西驿道,rm1=张三

       第三步:看完留言回到扬州再去牙山遍历找接头人:
      #tr {接头人在牙山} {#act_af_yz {扬州去牙山;bl}}
      #tr {接头人在小山村} {#act_af_yz {扬州去小山村;bl}}
      ......
      #tr {@rm~(%x%s%x~)} {#t- bianli;say @ah;wa=100;#wa 45000;bl}
      #tr {@rm1~(%x%s%x~)} {#t- bianli;say @ah;wa=100;#wa 45000;bl}
      这里由于没法区分@rm和@rm1哪个是接头人名字,因此各做一个触发,反正总会有一个是嘛。#wa 45000是预留的战斗时间,自己可以调整。
      #tr {*说道:「宝塔镇河妖?看来你就是余右丞派来的好汉了} {job_state=jobdone;#al act_af_yz {任务完成去成都}}
      然后就是愉快地战斗了@_@。

      第四步:ask yu jie about finish。全手动。。。御姐要你分析情报,直接输入图片上的文字,机会只有一次,搞错了上面就全白瞎了@_@。

北大侠客行MUD,中国最好的MUD

ambi 发表于 2019-9-27 18:29:14

看不懂,顶一个

mathematics 发表于 2019-9-27 18:51:17

看不懂,顶一个

zylonger 发表于 2019-9-27 20:28:22

不明觉厉,请给个fullme触发,不想粘贴了

guzhuyy 发表于 2019-9-27 22:19:30

回复 4# zylonger
试试看这个:
#tr {请注意,忽略验证码中的红色文字。$(*)} {#url %1}

aagg 发表于 2019-9-29 15:52:45

回复 1# guzhuyy


    老人啊

xurufeng 发表于 2019-9-30 00:42:33

看不懂,顶一个

lovetong 发表于 2019-9-30 04:15:54

目前北侠新人要完全靠自己成长比较困难,没有稳定的经济来源,现在很多的捡垃圾机器人,捡垃圾也不靠谱了, ...
guzhuyy 发表于 2019-9-27 08:54 AM http://pkuxkx.net/forum/images/common/back.gif

牛逼!实在看不懂,就请教其中遇到接头人这个,如果不考虑其他环节,怎样自动触发ask xxx about 接头?

guzhuyy 发表于 2019-9-30 17:27:03

本帖最后由 guzhuyy 于 2019-9-30 09:28 AM 编辑

先set room_item skip,遇到NPC就自动look:#tr {^    %x*~((%x)%s(%x)~)} {#if (%1=Heipao) {#say 黑袍人,别看} {look %lower(%1) %2}} {db_ask}
自动问xxx about 接头:#tr {*~((%x)%s(%x)~)$*~@rm*} {xbr1=%1;xbr2=%2;ask %lower(@xbr1) @xbr2 about 接头} {db_ask}
这里变量@rm存的是接任务时御姐给的第一个人的容貌特征

woaidwp 发表于 2020-9-23 14:28:46

很强大!
页: [1] 2
查看完整版本: zmud462谍报机器人思路