北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 531|回复: 7

桃花岛新手与paotin

[复制链接]
发表于 2024-7-23 21:18:53 | 显示全部楼层 |阅读模式
之前有个小号……A了很久,又收拾收拾捡起来了
正好接触新的客户端paotin,借桃花岛新手任务顺便熟悉下paotin操作~~
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-7-23 21:20:09 | 显示全部楼层
本帖最后由 laba 于 2024-8-2 08:31 PM 编辑

由于这个号书已经读完了,接不到读书任务了,只好从走阵开始写啦╮(╯▽╰)╭(无奈

有需要的可以看这个帖子,前辈写的很详细了https://pkuxkx.com/forum/thread-22165-1-1.html
这几天看群,有新人对于读书任务还是有些疑惑的
索性放弃点奇门重新读吧

你废掉了自己一丁点儿的奇门八卦。


首先,ask lu about job  陆乘风会让你去书房找书,我们简单的写个触发

  1. #action {陆乘风说道:「我派武学多建立在奇门八卦的基础上,你先去书房找(zhao)本书读读吧。」} {s;s;zhao};
复制代码


当然可能一下子没有找到,不慌,再找一次
  1. #action {你在这里找了半天,却什么都没有找到。} {busy.Wait {zhao}};
复制代码
busy.Wait {} 就是等不busy之后执行命令,新人要注意观察代码中的空格与分号


你找到了一本易经,欣喜若狂。
奇门遁甲的著作,你只有在这里才能集中精神阅读(du)。


这本书一定要在书房读, 因为这里会触发融会贯通触类旁通的效果(发生每次奇门遁甲提升之后再读一次书, 几率是否与福缘有关待考), 有可能同时提高你的读书识字/碧海神功/基本内功其中的1-3项, 并增加经验潜能

我们观察这个语句,你找到了一本xx,欣喜若狂。
这里是汉语,那么怎么转化成id呢?
别眨眼,我们展示点高级的东西

输入HELP backpack

  1. ## 函数 char.backpack.Query <范围>
  2.     查询角色是否携带有某样物品。如果有,则返回 ID 和名称;否则返回空串。
  3.     查询范围:
  4.       Item:       所有物品(但不包括包袱里的内容)
  5.       Wear:       穿戴
  6.       Wield:      手持的装备(武器或盾牌)
  7.       Equip:      携带的装备
  8.       Autoload:   Autoload 的装备
  9.       ItemID:     id 命令看到的数据
  10.       Bag:        包袱里的物品
复制代码

那么这个看起来很强大的函数具体怎么用呢?
  1. #action {你找到了一本%*,欣喜若狂。}
  2.     {i2;
  3.      sync.Wait {okLog %1;
  4.      #var baguashu @char.backpack.Query{Item;%1};okLog 书的名字是:$baguashu;du $char.Item[$baguashu][id] for 1;}
  5.     };
复制代码

看起来可能有些复制,别慌,我们一点点看
触发语句中的%*是抓取书的名字,变成一个参量
下面的%1就代表这个参量
i2这个指令就是刷新背包的,也就让机器人知道你背包里面有什么
sync.Wait 是当前面的指令发送之后,执行后面的指令
@char.backpack.Query{Item;%1};函数的使用,前面要加@
然后这个函数就是将  易经 这个名字变成了  易经/yi jing
但是这是汉语和id混在一起,还是不行
那么怎么办呢
$char.Item[$baguashu][id]
$char.Item这个变量表里面存了背包中的东西的名称
du $char.Item[$baguashu][id] for 1;
就等于du yi jing for 1了
这个过程对于新手第一次接触可能复杂些,却也是后续鉴定的一个重要环节


你研读了一次有关奇门八卦的技巧,似乎有点心得。
接下来继续介绍读书机器人


这句话是读书成功的标志,很多新人喜欢用计时器,也就是#tick,但是我个人不推荐使用计时器
因为计时器这种东西,你设多少秒读一次?0.1?0.01?不如使用触发器来控制


  1.     #action {你研读了一次有关%*的技巧,似乎有点心得。} {du $char.Item[$baguashu][id] for 1;}
复制代码




北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-7-26 08:46:43 | 显示全部楼层
本帖最后由 laba 于 2024-8-1 05:27 PM 编辑

走阵,这个任务作为桃花岛的新手任务的重要部分,可以说是一个分水岭,这个任务流程不繁琐,但是很单一,给的exp和潜能都很少,如果依靠手动苦做,很容易丧失游戏兴趣~那么如何利用paotin写出来一个走阵的机器人?
首先,我们要了解走阵的任务流程
  1. 1、陆乘风处 ask lu about job
  2. 2、看八卦图,明确路线(l tu)
  3. 3、向东在阿香处e一步,进入桃花阵
  4. 4、按着八卦图上的路径,走完一圈又一圈,直到当出现"天色大变, …"这句提示时, 就代表任务结束了, 可以离开(leave).
复制代码
那么我们系统的来做一个走阵的机器人

首先作为一个面向新人的攻略,先介绍一下走阵这个任务的特点。
首先与明教的内奸任务相比,桃花岛的飞贼刷新机制是不一样的
明教的内奸是已经存在于地图之上,然后你走过去,kill
桃花阵的飞贼则是在你进入阵中之后,输入方向进行移动时,跳出来阻拦。——真不愧是“飞贼”
桃花阵的迷宫有固定的四步路径,如果走错了,则回到原点 这是很重要的一个性质,也是写机器人的重点






首先第一步:

1、从陆乘风那里接到任务,并且走入阵中

接任务很简单,只要ask lu about job 就行

这时候陆乘风就会给你起一卦 : 陆乘风说道:「腊八,我为你占得一卦:乾天。」

可以看到,这里会提到我们的名字,然后回告诉我们卦象的名字

  1. 铁八卦上刻着八排小字:
  2. 乾天:东 东北 西 南
  3. 兑泽:北 西南 西北 南
  4. 离火:南 北 东南 西北
  5. 震雷:西 东南 北 北
  6. 巽风:东南 东 南 西南
  7. 坎水:东北 北 西南 西北
  8. 艮山:西南 西 西 南
  9. 坤地:西北 西北 南 东
复制代码


卦象分为八个,因此我们可以根据上述信息写出路径
  1.     {乾天} {e;ne;w;s}
  2.     {兑泽} {n;sw;nw;s}
  3.     {离火} {s;n;se;nw}
  4.     {震雷} {w;se;n;n}
  5.     {巽风} {se;e;s;sw}
  6.     {坎水} {ne;n;sw;nw}
  7.     {艮山} {sw;w;w;s}
  8.     {坤地} {nw;nw;s;e}
复制代码
然后放到 D:\my-paotin\data\map-path里面
路径已经有了,接下来是根据触发,走进阵中

  1. #action {^陆乘风说道:「$char[档案][大名],我为你占得一卦:%*。」$}
  2.    
  3.    {okLog 卦象是%1;
  4.    #var guaxiang %1;
  5.    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

桃花阵中阴气森森~不由得让人冷汗直流~~

但是不要慌~毕竟我们已经知道路径了,只要按部就班,就可以走出去!(确信)

只是一个简单的固定路径的走路任务……
真的这么简单么??

当我们按照八卦图,写出一串路径,回车!
sw;w;w;s;
你充满自信的向前走去,桃花阵看来也不在话下。
桃花阵 - [门派]
你的动作还没有完成,不能移动。

嗯??原来桃花阵不是浪得虚名o( ̄ヘ ̄o#),每走一步都会被busy
那么直接输入一串指令,那么后面的指令都会被“吞掉”,肯定不能解决问题啦,怎么办呢,我们就要用到pt了

----------当当的当·~~~
HELP path可以看到更详细的解释
## 别名 path.WalkSteps <路径> [<回调代码>]

走一个自定义路径。行走完成后,执行回调代码。

  1. path.WalkSteps {sw;w;w;s;}
复制代码


那为什么这个别名可以解决我们的问题呢?
因为在使用这个别名的时候,可以判断每一步是否走了出去,如果因为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
即,移动完毕之后就暂停路径移动

那么什么时候启动呢?
  1. #action {你充满自信的向前走去,桃花阵看来也不在话下。} {busy.Wait {path.Walk.Resume} ; }
复制代码

就是每次走完正确步骤之后,用 busy.Wait等待busy结束后,走下一步

那当你一抬脚,突然,一个娇滴滴的女飞贼贴脸怎么办?(嘿嘿,只要胆子大,贞子放产假(叉出去!

那当然是跟她拼啦!桃花阵一旦出现飞贼,就是不死不休,没有逃跑这一说,因为你走不掉
  1. #action {不解决了%*,你恐怕很难离开。} {map.FocusNPC { {name}  {%1}} command {job.kill};look};
复制代码
这句触发抓取了飞贼的名字,用map.FocusNPC来抓取她的id,look是看当前房间,然后开杀
解决之后,抓住触发,继续走路
  1. #action {完成任务后} {path.Walk {$guaxiang};yun recover };
复制代码




这时候有小伙伴会发现,这飞贼一出来,直接给path.Walk打断了,要是再启动,岂不是从头走了?
没错,但是不要担心,走错了会有提示的
  1. #action {你胡乱走着,像个没头苍蝇一样,有个声音冷笑:桃花阵岂是浪得虚名。} {path.Walk {$guaxiang} };
复制代码
还记得前面说的走错会回到原点吗,这样就从头再走就行,耽误这三秒不算什么的

最后,阵法失灵,就应该回去要新的任务了

  1. #action {天色大变,陆乘风给你算的卦也不那么准了。} {okLog zouzouzou;#delay zoua {leave;w;w;w;ask lu about job} 2};
复制代码


走阵其实并不复杂,整体的触发也不是很多,但却可以用到很多常用的东西,也是一个不错的新手任务







北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-7-26 09:35:27 | 显示全部楼层
本帖最后由 laba 于 2024-8-1 05:01 PM 编辑

这个任务不仅仅是涉及到移动,更是涉及到了战斗环节;
重要的点在于:不需要每时每刻明确自己走到哪一步了,战斗,结束战斗,走错一步,回到原点继续走正确的因为阵法之中的每一步都是有顺序的,错误之后就直接回到原点了

有时候去要任务的时候,陆乘风会说你先去练功,不要丢人,这时候应该是你的最高技能等级小于上限的百分之八十五
去学点特内就好了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-7-26 17:20:47 | 显示全部楼层
本帖最后由 laba 于 2024-8-1 03:41 PM 编辑

接着我们面临的就是下一个任务,鉴定
陆乘风道: “师父喜爱古玩字画,我搜集一些古玩字画在书房,就搁在书架上,但很多真伪难辨,你帮我去鉴定(jianding)一下吧。鉴定完就交给冠英吧。”


北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-7-26 20:02:55 | 显示全部楼层
本帖最后由 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级. 将物品交给陆冠英(注意不是他爹陆乘风), 即完成任务
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2024-8-1 16:04:36 | 显示全部楼层
本帖最后由 laba 于 2024-8-2 10:24 PM 编辑
  1. #alias songhua {n;n;w;w;give $char.Item[$object][id] to lu };
  2.    #action {你拣起了一套字画。} {jianding zihua};
  3.    #action {你拣起了一套古玩。} {jianding guwan};
  4.    #action {你发现手中的竟是%*。} {i2;
  5.    sync.Wait {okLog %1;
  6.     #var object @char.backpack.Query{Item;%1};okLog 物品鉴定为:$object;songhua;}
  7.     };
  8.    #action {陆冠英接过你手里的%*,道:不错,这是太师父喜欢的东西。} {busy.Wait {e;e;ask lu about job}};

  9. #action {陆乘风说道:「你刚做完鉴定任务,先去休息一会吧。」} {dazuo max;dazuo 10;#delay dazuoo {busy.Wait {yun recover;ask lu about job}}2};
复制代码

鉴定任务则考察的是抓取物品的id
pt在这方面也有很强大的功能支持
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-8-1 17:09:37 | 显示全部楼层
学习了。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-9-8 09:04 AM , Processed in 0.014671 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表