桃花岛新手与paotin
之前有个小号……A了很久,又收拾收拾捡起来了正好接触新的客户端paotin,借桃花岛新手任务顺便熟悉下paotin操作~~ 本帖最后由 laba 于 2024-8-2 08:31 PM 编辑
由于这个号书已经读完了,接不到读书任务了,只好从走阵开始写啦╮(╯▽╰)╭(无奈
有需要的可以看这个帖子,前辈写的很详细了https://pkuxkx.com/forum/thread-22165-1-1.html
这几天看群,有新人对于读书任务还是有些疑惑的
索性放弃点奇门重新读吧
你废掉了自己一丁点儿的奇门八卦。
首先,ask lu about job陆乘风会让你去书房找书,我们简单的写个触发
#action {陆乘风说道:「我派武学多建立在奇门八卦的基础上,你先去书房找(zhao)本书读读吧。」} {s;s;zhao};
当然可能一下子没有找到,不慌,再找一次
#action {你在这里找了半天,却什么都没有找到。} {busy.Wait {zhao}};busy.Wait {} 就是等不busy之后执行命令,新人要注意观察代码中的空格与分号
你找到了一本易经,欣喜若狂。
奇门遁甲的著作,你只有在这里才能集中精神阅读(du)。
这本书一定要在书房读, 因为这里会触发融会贯通触类旁通的效果(发生每次奇门遁甲提升之后再读一次书, 几率是否与福缘有关待考), 有可能同时提高你的读书识字/碧海神功/基本内功其中的1-3项, 并增加经验潜能
我们观察这个语句,你找到了一本xx,欣喜若狂。
这里是汉语,那么怎么转化成id呢?
别眨眼,我们展示点高级的东西
输入HELP backpack
## 函数 char.backpack.Query <范围> <ID 或名称>
查询角色是否携带有某样物品。如果有,则返回 ID 和名称;否则返回空串。
查询范围:
Item: 所有物品(但不包括包袱里的内容)
Wear: 穿戴
Wield: 手持的装备(武器或盾牌)
Equip: 携带的装备
Autoload: Autoload 的装备
ItemID: id 命令看到的数据
Bag: 包袱里的物品
那么这个看起来很强大的函数具体怎么用呢?
#action {你找到了一本%*,欣喜若狂。}
{i2;
sync.Wait {okLog %1;
#var baguashu @char.backpack.Query{Item;%1};okLog 书的名字是:$baguashu;du $char.Item[$baguashu] for 1;}
};
看起来可能有些复制,别慌,我们一点点看
触发语句中的%*是抓取书的名字,变成一个参量
下面的%1就代表这个参量
i2这个指令就是刷新背包的,也就让机器人知道你背包里面有什么
sync.Wait 是当前面的指令发送之后,执行后面的指令
@char.backpack.Query{Item;%1};函数的使用,前面要加@
然后这个函数就是将易经 这个名字变成了易经/yi jing
但是这是汉语和id混在一起,还是不行
那么怎么办呢
$char.Item[$baguashu]
$char.Item这个变量表里面存了背包中的东西的名称
du $char.Item[$baguashu] for 1;
就等于du yi jing for 1了
这个过程对于新手第一次接触可能复杂些,却也是后续鉴定的一个重要环节
你研读了一次有关奇门八卦的技巧,似乎有点心得。
接下来继续介绍读书机器人
这句话是读书成功的标志,很多新人喜欢用计时器,也就是#tick,但是我个人不推荐使用计时器
因为计时器这种东西,你设多少秒读一次?0.1?0.01?不如使用触发器来控制
<blockquote> #action {你研读了一次有关%*的技巧,似乎有点心得。} {du $char.Item[$baguashu] for 1;}
本帖最后由 laba 于 2024-8-1 05:27 PM 编辑
走阵,这个任务作为桃花岛的新手任务的重要部分,可以说是一个分水岭,这个任务流程不繁琐,但是很单一,给的exp和潜能都很少,如果依靠手动苦做,很容易丧失游戏兴趣~那么如何利用paotin写出来一个走阵的机器人?
首先,我们要了解走阵的任务流程
1、陆乘风处 ask lu about job
2、看八卦图,明确路线(l tu)
3、向东在阿香处e一步,进入桃花阵
4、按着八卦图上的路径,走完一圈又一圈,直到当出现"天色大变, …"这句提示时, 就代表任务结束了, 可以离开(leave).那么我们系统的来做一个走阵的机器人
首先作为一个面向新人的攻略,先介绍一下走阵这个任务的特点。
首先与明教的内奸任务相比,桃花岛的飞贼刷新机制是不一样的
明教的内奸是已经存在于地图之上,然后你走过去,kill
桃花阵的飞贼则是在你进入阵中之后,输入方向进行移动时,跳出来阻拦。——真不愧是“飞贼”
桃花阵的迷宫有固定的四步路径,如果走错了,则回到原点 这是很重要的一个性质,也是写机器人的重点
首先第一步:
1、从陆乘风那里接到任务,并且走入阵中
接任务很简单,只要ask lu about job 就行
这时候陆乘风就会给你起一卦 : 陆乘风说道:「腊八,我为你占得一卦:乾天。」
可以看到,这里会提到我们的名字,然后回告诉我们卦象的名字
铁八卦上刻着八排小字:
乾天:东 东北 西 南
兑泽:北 西南 西北 南
离火:南 北 东南 西北
震雷:西 东南 北 北
巽风:东南 东 南 西南
坎水:东北 北 西南 西北
艮山:西南 西 西 南
坤地:西北 西北 南 东
卦象分为八个,因此我们可以根据上述信息写出路径
{乾天} {e;ne;w;s}
{兑泽} {n;sw;nw;s}
{离火} {s;n;se;nw}
{震雷} {w;se;n;n}
{巽风} {se;e;s;sw}
{坎水} {ne;n;sw;nw}
{艮山} {sw;w;w;s}
{坤地} {nw;nw;s;e}然后放到 D:\my-paotin\data\map-path里面
路径已经有了,接下来是根据触发,走进阵中
#action {^陆乘风说道:「$char[档案][大名],我为你占得一卦:%*。」$}
{okLog 卦象是%1;
#var guaxiang %1;
e;e;e;e;#delay zou {path.Walk {%1}} 3 }
这里面的$char[档案][大名]是pt自身抓取的变量,即为当前账号的中文名字
不需要将八个卦象分别触发,只需要用%*匹配卦象的名字
下面的%1是参量,用#var存入guaxiang这个变量里面
后面eeee走四步,就走到桃花阵里面去啦~
((接下来介绍path.Walk
桃花阵 - [门派]
你来到了一片桃花林里,立刻迷失了方向。
桃花阵 - [门派]
这里是一大片的桃花阵,隐含八卦九宫位置。如果没有办法破解,你也可以选择离开 (leave)。
这里明显的出口有 north、northeast、south、west、southwest、northwest、east 和 southeast
桃花阵中阴气森森~ttk_13不由得让人冷汗直流~~
但是不要慌~毕竟我们已经知道路径了,只要按部就班,就可以走出去!(确信)
只是一个简单的固定路径的走路任务……
真的这么简单么??
当我们按照八卦图,写出一串路径,回车!
sw;w;w;s;
你充满自信的向前走去,桃花阵看来也不在话下。
桃花阵 - [门派]
你的动作还没有完成,不能移动。
嗯??原来桃花阵不是浪得虚名o( ̄ヘ ̄o#),每走一步都会被busy
那么直接输入一串指令,那么后面的指令都会被“吞掉”,肯定不能解决问题啦,怎么办呢,我们就要用到pt了
----------当当的当·~~~ttk_05
(HELP path可以看到更详细的解释
## 别名 path.WalkSteps <路径> [<回调代码>]
走一个自定义路径。行走完成后,执行回调代码。
<div>path.WalkSteps {sw;w;w;s;}</div><div style="font-size: medium; font-weight: bold;"></div>
那为什么这个别名可以解决我们的问题呢?
因为在使用这个别名的时候,可以判断每一步是否走了出去,如果因为busy而没有走出去,则会再试一次,直到走出那一步
因此可以完美契合桃花岛走阵任务~
我们在上面已经这些路径写好存放起来,直接调用就行
pt在录制路径方面也是很便利的
path.Trace可以开始录制路径,path.Finish可以结束录制
录制好的路径在my-paotin\data\map-path中
然后就可以用path.Walk {路径名称}来使用
path.Walk和path.WalkSteps的区别在于
前者{}中是路径名称,比如 path.Walk {归云庄的桃花阵-遍历归云庄-6}
后者则是一串命令 比如path.WalkSteps {e;s;w;s;e}
当然,也可以不一个个亲自录制,可以在外面写好之后,复制到map-path.tin文件之中
然后我们来看代码#delay zou {path.Walk {%1}} 3 }
设置一个一次性的定时器,名字叫 zou 三秒后,执行path.Walk {%1},%1就是上面卦象的名字
因为我们把路径命名为卦象的名字,所以入阵三秒后就开始移动了
但是当遇到飞贼的时候
看起来包华想杀死你!
一个女飞贼冲了出来,似乎来意不善。
不解决了包华,你恐怕很难离开。
未知原因引起的行走失败:{看起来包华想杀死你!一个女飞贼冲了出来,似乎来意不善。不解决了包华,你恐怕很难离开。}
行走失败。
这就说明我们不能一股脑的横冲直撞,要懂得什么时候停,什么时候走
那么什么时候停呢?炮爷曾说:“不要管什么时候停,只思考什么时候启动”
也是就说我们可以每步都停下,在需要的时候用path.Walk.Resume继续我们的路径
那怎么实现每步都停呢,就是用event.Handle这个事件
event.Handle {GMCP.Move} {path.Walk} {$MODULE} {path.Walk.Stop};
那么这一串是什么意思呢
event.Handle 注册事件{行走事件} {我的行走程序} {MOD名字} {触发行走事件后我要执行的代码}
注册完之后,效果就是event.List里会看到它
然后在“我的行走程序”中,每发生一次“行走事件”,都会执行“触发行走事件后我要执行的代码”
= 在<回调钩子>执行中,每发生一次<事件名称>,都会执行<回调代码>
也就是每次执行path.Walk时,就会发生GMCP.Move这个事件,然后就会执行path.Walk.Stop
即,移动完毕之后就暂停路径移动
那么什么时候启动呢?
#action {你充满自信的向前走去,桃花阵看来也不在话下。} {busy.Wait {path.Walk.Resume} ; }
就是每次走完正确步骤之后,用 busy.Wait等待busy结束后,走下一步
那当你一抬脚,突然,一个娇滴滴的女飞贼贴脸怎么办?(嘿嘿,只要胆子大,贞子放产假(叉出去!
那当然是跟她拼啦!桃花阵一旦出现飞贼,就是不死不休,没有逃跑这一说,因为你走不掉
#action {不解决了%*,你恐怕很难离开。} {map.FocusNPC { {name}{%1}} command {job.kill};look};这句触发抓取了飞贼的名字,用map.FocusNPC来抓取她的id,look是看当前房间,然后开杀
解决之后,抓住触发,继续走路
#action {完成任务后} {path.Walk {$guaxiang};yun recover };
这时候有小伙伴会发现,这飞贼一出来,直接给path.Walk打断了,要是再启动,岂不是从头走了?
没错,但是不要担心,走错了会有提示的
#action {你胡乱走着,像个没头苍蝇一样,有个声音冷笑:桃花阵岂是浪得虚名。} {path.Walk {$guaxiang} };还记得前面说的走错会回到原点吗,这样就从头再走就行,耽误这三秒不算什么的
最后,阵法失灵,就应该回去要新的任务了
#action {天色大变,陆乘风给你算的卦也不那么准了。} {okLog zouzouzou;#delay zoua {leave;w;w;w;ask lu about job} 2};
走阵其实并不复杂,整体的触发也不是很多,但却可以用到很多常用的东西,也是一个不错的新手任务
本帖最后由 laba 于 2024-8-1 05:01 PM 编辑
这个任务不仅仅是涉及到移动,更是涉及到了战斗环节;
重要的点在于:不需要每时每刻明确自己走到哪一步了,战斗,结束战斗,走错一步,回到原点继续走正确的因为阵法之中的每一步都是有顺序的,错误之后就直接回到原点了
有时候去要任务的时候,陆乘风会说你先去练功,不要丢人,这时候应该是你的最高技能等级小于上限的百分之八十五
去学点特内就好了
本帖最后由 laba 于 2024-8-1 03:41 PM 编辑
接着我们面临的就是下一个任务,鉴定陆乘风道: “师父喜爱古玩字画,我搜集一些古玩字画在书房,就搁在书架上,但很多真伪难辨,你帮我去鉴定(jianding)一下吧。鉴定完就交给冠英吧。”
本帖最后由 laba 于 2024-8-1 04:03 PM 编辑
这个任务其实更容易些,因为不存在战斗环节,没有死亡风险大概流程是这样的
1、先ask lu about job (这个是陆乘风)
2、这个时候可以进入书房了,如果之前奇门八卦没读完,可以用zhao命令来得到奇门八卦的书, 如果你前期奇门遁甲未到100级可以继续读, 如果过了100级就没意义了.然后用na命令, 就可以拿起古玩(guwan)或字画(zihua). jianding guwan或jianding zihua命令自动鉴定相应物品.
3、鉴定物品成功后, 会奖励你火眼金睛和鉴定之术两项skill,最大奖励到10级. 将物品交给陆冠英(注意不是他爹陆乘风), 即完成任务
本帖最后由 laba 于 2024-8-2 10:24 PM 编辑
#alias songhua {n;n;w;w;give $char.Item[$object] to lu };
#action {你拣起了一套字画。} {jianding zihua};
#action {你拣起了一套古玩。} {jianding guwan};
#action {你发现手中的竟是%*。} {i2;
sync.Wait {okLog %1;
#var object @char.backpack.Query{Item;%1};okLog 物品鉴定为:$object;songhua;}
};
#action {陆冠英接过你手里的%*,道:不错,这是太师父喜欢的东西。} {busy.Wait {e;e;ask lu about job}};
#action {陆乘风说道:「你刚做完鉴定任务,先去休息一会吧。」} {dazuo max;dazuo 10;#delay dazuoo {busy.Wait {yun recover;ask lu about job}}2};
鉴定任务则考察的是抓取物品的id
pt在这方面也有很强大的功能支持 学习了。 太牛了大佬,学习 作为一个编程小白,感谢大佬的详细指引!最近一段时间,一步步地摸索总算初窥门径。
学习中碰到点问题,在试运行奇门八卦那段时,
#action {你找到了一本%*,欣喜若狂。} …sync.Wait {okLog %1;…,这个%1代表的参量没有显示(没有抓到),后面依据这个参量的也无从正确执行。
后来经过反复尝试,在我把 %1变成参数 并单独放在外面,才顺利执行。即,如:
#action {你找到了一本%*,欣喜若狂。} {#var qmdj.book %1};
#alias XXXX {#action ……
……
{i2;
sync.Wait {okLog $qmdj.book;
……
}
作为新手,着实没搞清楚这个为什么会这样,恳请大侠能够予以解惑,感谢感谢!
页:
[1]