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 刚刚看到的工号
小钱钱入手。
到这个部分,机器才能勉强称为有辅助能力,大概完成了一半的工作量吧。