jarlyyn 发表于 2021-9-14 11:00:05

接着再维护一下我们的路径列表。

扬州太小了,我想出去走走,先把中原地区的都加进去

    addroom("yzgc","扬州广场",{Landmark:"Rong shu"})
    addroom("yzqz","扬州钱庄",{Station:"扬州钱庄"})
    addroom("yzdp","扬州当铺",{Landmark:"Tang nan"})
    addroom("yztj","扬州铁匠",{Landmark:"Wang tiejiang"})
    addroom("yzzxl","扬州醉仙楼",{Station:"醉仙楼"})
    addroom("yzcg","春来茶馆",{Station:"春来茶馆"})
    addroom("yzyp","扬州药铺",{Landmark:"Ping yizhi"})
    addroom("yzsy","扬州书院",{Landmark:"Fu zi"})
    addroom("yzkd","扬州客店",{Landmark:"Song shengyi"})
    addroom("yzdtpns","扬州打铁铺内室",{Station:"打铁铺内室"})
    addroom("qfgl","曲阜鼓楼",{Station:"鼓楼"})
    addroom("xyzhq","信阳镇淮桥",{Station:"镇淮桥"})
    addroom("xcc","许昌城",{Station:"许昌城"})
    addroom("nyc","南阳城",{Station:"南阳城"})
    addroom("xydp","襄阳当铺",{Station:"襄阳当铺"})
    addroom("jz","荆州",{Station:"荆州"})
    addroom("rzc","汝州城",{Station:"汝州城"})接着是路径
      "yzqz":"yzgc|n;w|e;s",
      "yzdp":"yzgc|s;e|w;n",
      "yztj":"yzgc|e;e;s|n;w;w",
      "yzzxl":"yzgc|n;n;e|w;s;s",
      "yzcg":"yzgc|s;s;w|e;n;n",
      "yzyp":"yzgc|e;e;n|s;w;w",
      "yzsy":"yzgc|e;e;n|s;w;w",
      "yzkd":"yzgc|n;e|w;s",
      "yzdtpns":"yztj|s|n",
      "qfgl":"yzgc|n;n;n;n;n;n;n;n;n;n|s;s;s;s;s;s;s;s;s;s",
      "xyzhq":"yzgc|w;w;w;w;nw;w;w;w;w;w;n|s;e;e;e;e;e;se;e;e;e;e",
      "xcc":"xyzhq|n;n;n;n;n|s;s;s;s;s",
      "nyc":"xcc|sw;sw;w;s;sw;sw|ne;ne;n;e;ne;ne",
      "xydp":"nyc|sw;s;s;s;s;s;s;w;w;n|s;e;e;n;n;n;n;n;n;bo xiaolu&&ne",
      "jz":"xydp|s;e;e;s;s;s;s;s;s;s;s;s;s;s|n;n;n;n;n;n;n;n;n;n;n;w;w;n",
      "rzc":"xcc|nw;nw|se;se"可以看到,在襄阳当铺回南阳城的路径上有个&&符号,这是成组发送的意思。


jarlyyn 发表于 2021-9-14 11:10:39

然后我们可以欢畅的奔跑了,先让我们到达任何一个我们认识的地方,比如扬州客店

接着出发去荆州

/App.NewMove("walk","jz").Start()
不错,下一个目标是许昌城

/App.NewMove("walk","xcc").Start()


我们能看到途中bo xiaolu && ne因为是特殊命令不是在命令组中一起发送的。


再到曲阜鼓楼
/App.NewMove("walk","qfgl").Start()


很不错,在中原地区我们驰骋千里,如同统一北方的曹阿瞒一样

下一步,我们需要做到人妻曹做不到的事情,过长江,过赤壁,活捉孙十万。


jarlyyn 发表于 2021-9-14 14:49:21

发现过江要花钱

不说了,一文钱逼死英雄汉,我先搞点钱先。

难怪曹操过不了长江啊,80W大军,这要花多少钱啊……

jarlyyn 发表于 2021-9-14 20:32:09

本帖最后由 jarlyyn 于 2021-9-15 11:12 AM 编辑

继续,在探索北侠地图时,发现了丐帮密道这个好东西。

立刻把路径格式给改一下,适应密道这种单向的路径

新的房间列表如下
    addroom("yzgc","扬州广场",{Landmark:"Rong shu"})
    addroom("yzqz","扬州钱庄",{Station:"扬州钱庄"})
    addroom("yzdp","扬州当铺",{Landmark:"Tang nan"})
    addroom("yztj","扬州铁匠",{Landmark:"Wang tiejiang"})
    addroom("yzzxl","扬州醉仙楼",{Station:"醉仙楼"})
    addroom("yzcg","春来茶馆",{Station:"春来茶馆"})
    addroom("yzyp","扬州药铺",{Landmark:"Ping yizhi"})
    addroom("yzsy","扬州书院",{Landmark:"Fu zi"})
    addroom("yzkd","扬州客店",{Landmark:"Tianshen suicong"})
    addroom("yzdtpns","扬州打铁铺内室",{Station:"打铁铺内室"})
    addroom("qfkm","曲阜孔庙",{Station:"孔庙"})
    addroom("xyzhq","信阳镇淮桥",{Station:"镇淮桥"})
    addroom("xcc","许昌城",{Station:"许昌城"})
    addroom("nyc","南阳城",{Station:"南阳城"})
    addroom("xydp","襄阳当铺",{Station:"襄阳当铺"})
    addroom("jz","荆州",{Station:"荆州"})
    addroom("rzc","汝州城",{Station:"汝州城"})
    addroom("sms","石门寺",{Station:"石门寺"})
    addroom("sjy","石经峪",{Station:"石经峪"})
    addroom("lygc","洛阳中心广场",{Station:"洛阳中心广场"})
    addroom("cakd","长安三秦客栈",{Station:"三秦客栈"})
    addroom("cayp","长安千金堂",{Station:"千金堂"})
    addroom("hz","汉中",{Station:"汉中"})
    addroom("cdkd","成都悦来客店",{Station:"悦来客店"})
    addroom("yyl","岳阳楼",{Station:"岳阳楼"})
    addroom("xyl","浔阳楼",{Station:"浔阳楼"})
    addroom("xcz","小池镇",{Station:"小池镇"})
    addroom("jzkd","盈月客栈",{Station:"盈月客栈"})

其中明显江州和荆州的简称冲突了,怎么整等我顺顺。



新的路径列表如下


      "yzgc|yzqz|n;w|e;s",
      "yzgc|yzdp|s;e|w;n",
      "yzgc|yztj|e;e;s|n;w;w",
      "yzgc|yzzxl|n;n;e|w;s;s",
      "yzgc|yzcg|s;s;w|e;n;n",
      "yzgc|yzyp|e;e;n|s;w;w",
      "yzgc|yzsy|e;e;n|s;w;w",
      "yzgc|yzkd|n;e|w;s",
      "yztj|yzdtpns|s|n",
      "yzgc|qfkm|n;n;n;n;n;n;n;n;n;w|e;s;s;s;s;s;s;s;s;s",
      "yzgc|xyzhq|w;w;w;w;nw;w;w;w;w;w;n|s;e;e;e;e;e;se;e;e;e;e",
      "xyzhq|xcc|n;n;n;n;n|s;s;s;s;s",
      "xcc|nyc|sw;sw;w;s;sw;sw|ne;ne;n;e;ne;ne",
      "nyc|xydp|sw;s;s;s;s;s;s;w;w;n|s;e;e;n;n;n;n;n;n;bo xiaolu&&ne",
      "xydp|jz|s;e;e;s;s;s;s;s;s;s;s;s;s;s|n;n;n;n;n;n;n;n;n;n;n;w;w;n",
      "xcc|rzc|nw;nw|se;se",
      "qfkm|sms|e;e;ne;eu;enter|out;wd;sw;w;w",
      "qfkm|sjy|e;n;n;n;n;ne;e;ne;n;n;nu;nu;nu;eu|wd;sd;sd;sd;s;s;sw;w;sw;s;s;s;s;w",
      "nyc|lygc|n;n;n;n;n;n;n|s;s;s;s;s;s;s",
      "lygc|cakd|w;w;w;wu;w;w;w;w;w;nw;w;w;w;w;s;s;s;s;w|e;n;n;n;n;e;e;e;e;se;e;e;e;e;e;ed;e;e;e",
      "cakd|cayp|e;s;s;w;w;n;n;w|e;s;s;e;e;n;n;w",
      "cayp|hz|e;n;n;n;w;w;w;w;sw;su;sd;se|nw;nu;nd;ne;e;e;e;e;s;s;s;w",
      "hz|cdkd|su;.sw;.se;.su;sd;s;s;e|w;n;n;nu;nd;.nw;.ne;.nd",
      "cdkd|yyl|w;s;s;se;se;e;e;ne;.ne;.nw;.nw;.ne;ed;e;n|s;w;wu;sw;.se;.se;.sw;.sw;w;w;nw;nw;n;n;e",
      "xyzhq|xcz|s;s;s;s;sd;se|nw;nu;n;n;n;n",
      "xcz|xyl|s;ask shao gong about 过江&&enter;#sail;se;se;s|n;nw;nw;ask shao gong about 过江&&enter;#sail;n",
      "xyl|jzkd|sw;sw;nw|se;ne;ne",
很明显,里面多了两个新元素

一个是从汉中到成都客店的 .se

其实这就是加个flag,发送时还是按se发送,但走行走时单独一组

然后配合行走失败重走的触发(调用App.Core.OnMoveRetry),就实现了走蜀道

还有就是小池镇到浔阳楼的#sail。

其实乘船就是一个很标准的行走,就是耗时长点。

用#sail第一是占一个位置,其次这个命令我调用了一个事件,可以实现过江时打坐吐纳的功能。


jarlyyn 发表于 2021-9-14 20:52:00

来,上图

从扬州客店走过蜀道到成都客店



然后水军再攻东吴




好了,乘船和随机失败的路径也处理完了。

接下去应该要找迷宫类的路径,和拦路收费类的。


foolenough 发表于 2021-9-15 09:04:58

还有官方的walk节点没加进去,set walk_speed -1, 在有<node>的地方(一般是城市中心),walk -c可以查询连接点。

jarlyyn 发表于 2021-9-15 10:58:26

本帖最后由 jarlyyn 于 2021-9-15 11:13 AM 编辑

继续。在添加了岳阳楼到江州客店和洵阳楼到江州客店的路径后,整个地图成了一个完整的圈。

房间:
addroom("yzgc","扬州广场",{Landmark:"Rong shu"})
    addroom("yzqz","扬州钱庄",{Station:"扬州钱庄"})
    addroom("yzdp","扬州当铺",{Landmark:"Tang nan"})
    addroom("yztj","扬州铁匠",{Landmark:"Wang tiejiang"})
    addroom("yzzxl","扬州醉仙楼",{Station:"醉仙楼"})
    addroom("yzcg","春来茶馆",{Station:"春来茶馆"})
    addroom("yzyp","扬州药铺",{Landmark:"Ping yizhi"})
    addroom("yzsy","扬州书院",{Landmark:"Fu zi"})
    addroom("yzkd","扬州客店",{Landmark:"Tianshen suicong"})
    addroom("yzdtpns","扬州打铁铺内室",{Station:"打铁铺内室"})
    addroom("qfkm","曲阜孔庙",{Station:"孔庙"})
    addroom("xyzhq","信阳镇淮桥",{Station:"镇淮桥"})
    addroom("xcc","许昌城",{Station:"许昌城"})
    addroom("nyc","南阳城",{Station:"南阳城"})
    addroom("xydp","襄阳当铺",{Station:"襄阳当铺"})
    addroom("jz","荆州",{Station:"荆州"})
    addroom("rzc","汝州城",{Station:"汝州城"})
    addroom("sms","石门寺",{Station:"石门寺"})
    addroom("sjy","石经峪",{Station:"石经峪"})
    addroom("lygc","洛阳中心广场",{Station:"洛阳中心广场"})
    addroom("cakd","长安三秦客栈",{Station:"三秦客栈"})
    addroom("cayp","长安千金堂",{Station:"千金堂"})
    addroom("hz","汉中",{Station:"汉中"})
    addroom("cdkd","成都悦来客店",{Station:"悦来客店"})
    addroom("yyl","岳阳楼",{Station:"岳阳楼"})
    addroom("xyl","浔阳楼",{Station:"浔阳楼"})
    addroom("xcz","小池镇",{Station:"小池镇"})
    addroom("jzkd","盈月客栈",{Station:"盈月客栈"})
    addroom("sdnb","树洞内部",{Station:"树洞内部"})
    addroom("sdx","树洞下",{Station:"树洞下"})
    addroom("zpgc","赞普广场",{Station:"赞普广场"})路径
      "yzgc|yzqz|n;w|e;s",
      "yzgc|yzdp|s;e|w;n",
      "yzgc|yztj|e;e;s|n;w;w",
      "yzgc|yzzxl|n;n;e|w;s;s",
      "yzgc|yzcg|s;s;w|e;n;n",
      "yzgc|yzyp|e;e;n|s;w;w",
      "yzgc|yzsy|e;e;n|s;w;w",
      "yzgc|yzkd|n;e|w;s",
      "yztj|yzdtpns|s|n",
      "yzgc|qfkm|n;n;n;n;n;n;n;n;n;w|e;s;s;s;s;s;s;s;s;s",
      "yzgc|xyzhq|w;w;w;w;nw;w;w;w;w;w;n|s;e;e;e;e;e;se;e;e;e;e",
      "xyzhq|xcc|n;n;n;n;n|s;s;s;s;s",
      "xcc|nyc|sw;sw;w;s;sw;sw|ne;ne;n;e;ne;ne",
      "nyc|xydp|sw;s;s;s;s;s;s;w;w;n|s;e;e;n;n;n;n;n;n;bo xiaolu&&ne",
      "xydp|jz|s;e;e;s;s;s;s;s;s;s;s;s;s;s|n;n;n;n;n;n;n;n;n;n;n;w;w;n",
      "xcc|rzc|nw;nw|se;se",
      "qfkm|sms|e;e;ne;eu;enter|out;wd;sw;w;w",
      "qfkm|sjy|e;n;n;n;n;ne;e;ne;n;n;nu;nu;nu;eu|wd;sd;sd;sd;s;s;sw;w;sw;s;s;s;s;w",
      "nyc|lygc|n;n;n;n;n;n;n|s;s;s;s;s;s;s",
      "lygc|cakd|w;w;w;wu;w;w;w;w;w;nw;w;w;w;w;s;s;s;s;w|e;n;n;n;n;e;e;e;e;se;e;e;e;e;e;ed;e;e;e",
      "cakd|cayp|e;s;s;w;w;n;n;w|e;s;s;e;e;n;n;w",
      "cayp|hz|e;n;n;n;w;w;w;w;sw;su;sd;se|nw;nu;nd;ne;e;e;e;e;s;s;s;w",
      "hz|cdkd|su;.sw;.se;.su;sd;s;s;e|w;n;n;nu;nd;.nw;.ne;.nd",
      "cdkd|yyl|w;s;s;se;se;e;e;ne;.ne;.nw;.nw;.ne;ed;e;n|s;w;wu;sw;.se;.se;.sw;.sw;w;w;nw;nw;n;n;e",
      "xyzhq|xcz|s;s;s;s;sd;se|nw;nu;n;n;n;n",
      "xcz|xyl|s;ask shao gong about 过江&&enter;#sail;se;se;s|n;nw;nw;ask shao gong about 过江&&enter;#sail;n",
      "xyl|jzkd|sw;sw;nw|se;ne;ne",
      "yyl|jzkd|e;e;e;e;e;e;ed;se;ed;e;ne;ne;ne;ne;ne;nw|se;sw;sw;sw;sw;sw;w;wu;nw;wu;w;w;w;w;w;w",
      "yzgc|sdnb|enter shudong|out",
      "sdnb|sdx|say 天堂有路你不走呀&&d|u",
那么,我们既有免费但更慢的走蜀道的西边路线,又有收费的更快捷的坐船过江,平时应该走哪条路线呢?

很可能我们想有钱的时候坐船,没钱(那自然走不了)的时候走蜀道,甚至想要走门派密道(比如丐帮从各地回扬州树洞)的话,该怎么办呢?

加标签。

加标签有两个部分。一个是路径要加入标签,比如我路径里小池镇到浔阳楼的路径里开头的,就是说这条路径需要具有rich标签才能走。

完整的语法应该是,就是说有钱可以走,丐帮可以走,但是如果是14岁的话不走。

具体的解析是建立了一个正则   let pathre=a=/^(\[(.+)\]){0,1}(.*)$/ 进行解析



代码见


https://github.com/hellclient-sc ... cript/info/paths.js

然后在每次移动前都会触发个MoveInit的事件

https://github.com/hellclient-sc ... t/core/move/move.js

再在需要的地方,比如item模块,status模块里,加上相应代码

比如

https://github.com/hellclient-sc ... script/core/item.js

里我注册了 一个回调 core.item.initwalk 并绑定到了MoveInit事件上,功能为

计算身上的现金,并依据现金是否大于10银来设置是否具有 rich 标签。

具体到实际线路上,如下,

身上有钱和没钱。从扬州客店到江州客店的路径是不同的



jarlyyn 发表于 2021-9-16 11:38:01

昨天做的杂项比较多,但至少可以解决部分任务了。

首先,把检查忙的机制给做了。

检查忙很简单。

打开触发,如果有任何一个我们认识的不忙的描述就关了出发,调用回调。

如果不忙的描述我们不认识怎么办?在触发打开的期间定时的发我们认识的判断忙的命令,比如我这里选用的是 tuna

代码见

https://github.com/hellclient-scripts/pkuxkx.noob/blob/b607e76aca1738ede115334751ff2ec4b759c950/script/core/busy.js

功能很简单

检查忙,不忙后将调用时的数据传给调用时的回调



jarlyyn 发表于 2021-9-16 11:47:35

然后是检查自身状态的

第一步是利用事件机制来检查状态,同时触发时可以指定检查级别,根据预先定义的级别来决定执行那些检查


由于pkuxkx的有busy的特点,每个检查我都记录了最后的执行时间,并可以预设并可自定义间隔,在间隔之类不重复检查


检查的基础类,通过链式调用进行设置,最后可以通过调用Callback方法返回一个标准的回调


https://github.com/hellclient-scripts/pkuxkx.noob/blob/b607e76aca1738ede115334751ff2ec4b759c950/script/core/check/check.js

修改后的用户检查模块

https://github.com/hellclient-scripts/pkuxkx.noob/blob/b607e76aca1738ede115334751ff2ec4b759c950/script/core/player.js

主要加入了

    let checkScore=(new check("score")).WithLevel(app.CheckLevelBrief).WithCommand("score").WithIntervalParam("checkscoreinterval").WithLastID("LastScore")
    app.RegisterCallback("core.player.score",checkScore.Callback())
这样的检查代码

检查的核心代码

https://github.com/hellclient-scripts/pkuxkx.noob/blob/b607e76aca1738ede115334751ff2ec4b759c950/script/core/check.js

可以用过App.Check(level)和App.ForceCheck(id")来根据等级检查或指定ID强行检查


接着是应用

我添加了一个#to的别名,可以#to yzyp 的形式来前往指定目的地。

同时在前进前会获取一下当前信息,为路径打上合适的标签


https://github.com/hellclient-scripts/pkuxkx.noob/blob/b607e76aca1738ede115334751ff2ec4b759c950/script/alias/to.js

这样,至少过江的时候,会根据是否身上有钱,决定绕不绕蜀道



jarlyyn 发表于 2021-9-16 12:02:13

在接下去是忙检查的应用。

我建立了一套 调用队列的指令(临时的,发现污染了App.Send命令,应该会调整),依次执行命令

队列支持的命令包裹

#to 前往某地
#do 做某事
#afterbusy检查忙
#delay 延迟指定毫秒数。

怎么用呢?

比如在扬州,抄书的流程应该是

[*]到药铺
[*]向平一指打听工作
[*]向北一步
[*]配药
[*]等待忙结束
[*]等待一定延时(我猜这个延时是想针对机器人,但明显我手动的时候更蛋疼)
[*]南一步,把药给平一指

于是我输入
#to yzyp|#do ask ping yizhi about 工作|#do n|#do peiyao|#afterbusy |#delay 5000|#do s|#do give cheng yao to ping yizhi这串命令,就完成了做药工作,结果见下图



再比如抄经任务。步骤也很简单

[*]石门寺ask任务
[*]复制fullme,打开浏览器新页面
[*]前往石经峪
[*]write jing
[*]等忙结束
[*]等延时(呵呵)
[*]会到石门寺,ask done
[*]打开页面,识别一下,report 工号。

由于里面涉及到了fullme,我们需要分两部

第一步ask任务
#to sms|#do ask sengren about job


复制到浏览器,刷新到不会搞错的形态,会游戏继续输入命令

#to sjy|#do write jing|#afterbusy |#delay 2000|#to sms|#do ask sengren about done
然后report 刚刚看到的工号



小钱钱入手。

到这个部分,机器才能勉强称为有辅助能力,大概完成了一半的工作量吧。




页: 1 2 3 4 [5] 6 7 8 9
查看完整版本: 一步一步在北侠做机器人