北大侠客行MUD论坛

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

【天龙寺】新手攻略-为了六脉神剑我出家了

[复制链接]
发表于 2024-8-3 16:41:12 | 显示全部楼层 |阅读模式
本帖最后由 xsxxj 于 2024-8-3 07:18 PM 编辑

天龙寺是一个隐秘而庄严的佛教寺院(做为新人本僧找了很久)。位于大理城附近的点苍山上,风景如画,山势雄伟(路难走),云雾缭绕,为天龙寺增添了神秘而深邃的氛围。

地理位置
点苍山以其雄伟的山势和优美的自然景观著称,成为天龙寺这座古老寺院的绝佳栖息之地。山中环境清幽、气候宜人,使得天龙寺成为修身养性、潜心修炼的理想之地。

绝学与武功
  • 六脉神剑天龙寺的核心绝学之一,通过指力发出剑气,具备强大的攻击力。威力巨大,能够在瞬间对敌人造成致命的打击,灵活多变,极为高深,号称北侠加特林”。
  • 一阳指发出的指力如同阳光般炙热,能够穿透敌人的内力防御。除了强大的攻击力外,一阳指还具备出色的疗伤效果。
  • 凌波微步天龙寺的轻功绝学,这门轻功在战斗中提供了极大的灵活性,也使得武者在复杂地形中行动自如。
  • 北冥神功一门极为高深的内功心法,能够吸取他人的内力为己用,增强自身的武功。此功法在危急时刻能够帮助武者逆转局势,化解危险。

人物与影响
天龙寺的僧人们不仅以其深厚的佛教修为著称,还以其高超的武功和内力修炼而闻名于江湖。天龙寺的绝学和修炼方式体现了“内外兼修”的精神,使得门下弟子能够在武功与心境上达到高度的平衡。
有着号称武林百科全书的王语嫣,虽然并非天龙寺的门人,但她与天龙寺有着密切的联系,她对天龙寺绝学和佛教经典的了解让她在故事中扮演了重要角色(可以找她学武功)。

让我先从入门开始讲起,小弟还是新人,不对的地方还请各位大佬海涵。

直达入口:

另外,所有的代码都是使用Paotin++客户端制作, 这个客户端提供了大量的功能,最大限度的解决了我们获取信息的问题,比如:
快速得到房间名字还有npc名字的 gMapRoom
遇到名字叫xxx的npc就停下来的 FocusNPC
快速到达指定城市的 xiaoyao
后面会在案例中实际应用,请各位看官莫着急.

感谢群里炮哥、雪神、大师、铁少、恶少、小豆米的帮扶和指点,让文科生也能玩mud /bow;

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:43:03 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 05:23 PM 编辑

新手备忘录
我是谁 ?
  1. hp
复制代码
查看生命值、精神、内力信息
  1. sc
复制代码
查看天赋等。

我在哪?
  1. lm
复制代码
查看当前地图
  1. lm 房间名
复制代码
查看指定房间所在位置

天龙寺怎么去?
  1. travel 大理城
复制代码
还是那句经典老话,千里之行,始于扬州;
因为我们是新人,有路引福利,直接输入,可以帮助我们节省路上的时间;

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:43:38 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 05:44 PM 编辑

拜师指南和地图
到达大理城之后移动中心广场:
tl01.png

学习使用 walk 指令来查询玩家和官方提供的快捷行走路径;
walk 是官方提供的路径
tl02.png
巫师大大甚至帮忙显示了停留的房间名,非常的友善;


我们输入
  1. walk tianlong
复制代码

就开始自动移动过去了,并且停在天龙池
tl03.png

拜师:
我们可以先拜大雄宝殿的本尘大师;
天龙池-》大雄宝殿
  1. w;wu;wu;w;knock
  2. gate;enter;wu;out;w;wu
复制代码
tl04.png
本尘大师可以传授的技能:
tl05.png



除了本尘大师,推荐拜师本因方丈:


tl07.png
可以先在本因大师这里学习几级级读书识字,学了读书识字就不再是文盲了,可以读书提升技能; 但是前期学习效率低,也没必要学太高;

tl06.png
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:44:10 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 08:59 PM 编辑

新人第一阶段目标:
1 完成天龙寺所有任务经验值达到100k,期间了解北侠的新手福利:

2 如果机器人任务期间穿插打坐,有一定内力基础后吃月饼、果子增加精力和内力:
#send quit,退出游戏重新,会在扬州客栈重新登录,直接移动到中央广场;
在扬州中心广场大榕树下pick guo,可以得到一颗果子,吃了涨1000经验,100潜能,40最大内力和最大精力,一辈子只能摘一颗吃。
在扬州中心广场,up上赏月台,ask lver about 月饼,会给你一枚月饼。answer 甜月饼,吃了涨50最大内力,answer咸月饼,吃了涨50最大精力。一辈子也只能吃一次。(推荐吃咸月饼,毕竟新手需要尽快增长精神)

3 看看根据下面的指引,把爱爱的装备领一下(1m经验之前都可以免费领取):
最好设置快捷键,方便以后快速领取,比如:
  1. #alias drw {
      d;out;
      draw sword;draw sword;draw armor;draw head;draw cloth;draw surcoat;draw boots;
      enter;u;
      wear all;
      wield sword at right;
    };
复制代码

站在扬州的中央广场,输入drw 就会把装备都领好,并且自动装备上

4 学基本内功和特内到80级,并且过少林18罗汉阵:
因为过少林18罗汉阵要求除了知识类,学到身上的所有技能都要超过80级,所以潜能不够的话其它技能最好1级也别学,学了就要学到80;
打开后页面搜索关键字「十八罗汉阵」)

dazuo 内力达到接近最大内力上限,#send quit ,大退游戏重新进入,气血会刷新最大值(气血最大值与我们内力最大值直接正相关,内力最大值越大,气血上限越高)

5 了解剑心居,这可能是我们晚上角色最经常呆的地方,必须设置成#alias别名:
  1. #alias gojxj {
        s;s;s;w;enter jianxinju;
    };
复制代码
站在扬州的中央广场,输入gojxj 试一下
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:44:42 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 06:22 PM 编辑

新手任务1:出家人的一天

有了目标之后,就一件事一件事的来吧,不积跬步,何以至千里:沙弥(Sha mi)告诉你:你可以到我这里接到新手任务。
本因方丈旁边就有个小沙弥,任务回来之后,任务cd期间找师傅学习技能,打打坐,cd结束后起来继续,就非常的方便。

2024-07-28 20:03:38 INPUT: ask sha mi about job
你向沙弥打听有关『job』的消息。
沙弥说道:「哎呀,你一点内功基础都不会啊,这怎么行?」
小沙弥指点了你一些内功。
你的『枯荣禅功』进步了!
沙弥说道:「哎呀,你一点内功基础都不会啊,这怎么行?」
小沙弥指点了你一些内功。
你的『基本内功』进步了!
沙弥说道:「你知道吗,有了内功,不会用,等于零,你要enable force kurong-changong。」

小沙弥会指点你一级基本内功和一级枯荣禅功,记得enable上;

  1. enable force kurong-changong
复制代码

沙弥说道:「你刚入本门,一切还不熟悉,应该尽快习惯天龙寺的生活。」
沙弥说道:「这几点,我必须和你说清楚。」
沙弥告诉你:凌晨的早课在十一面观音殿举行,你跟着大家念(nian)经就好了。
早晨新弟子必须去钟楼敲(knock)钟,到了晌午,你要去香积厨帮厨(bangchu),
正午时分别忘了在五百罗汉堂打坐(dazuo)并至少获得一点内力,
到了下午,要从后山洗马潭挑(tiao)一担水到石板路,记得早一点时间去石板路拿水桶,
傍晚又要帮厨(bangchu)了,晚上在僧舍睡(sleep)好了。这就是天龙弟子的一天。

你可以使用time命令获得当前北侠的时分。

总结第一阶段我们需要做的事情:
沙弥告诉你:
-> -> 凌晨的早课在十一面观音殿举行,你跟着大家念(nian)经就好了。
--十一面观音殿
nian
你开始跟着众僧念起了金刚经。
你跟着众僧念道:须菩提言: “甚大,世尊!何以故?佛说非身,是名大身。”
你和众僧结束了早课。

-> -> 早晨新弟子必须去钟楼敲(knock)钟,到了
--钟楼二层
2024-07-28 21:04:43 INPUT: knock
你敲响了黄铜大钟。
一声沉闷的钟声从天龙寺的钟楼上传出。

-> -> 晌午,你要去香积厨帮厨(bangchu),
--香积厨
2024-07-28 20:20:48 INPUT: bangchu
你卷起袖子,开始在厨房帮忙。
你擦擦手,厨房的杂务全做完了。

-> -> 正午时分别忘了在五百罗汉堂打坐(dazuo)并至少获得一点内力,
--五百罗汉堂
2024-07-28 20:22:57 INPUT: dazuo 10
你坐下来运气用功,一股内息开始在体内流动。
你运功完毕,深深吸了口气,站了起来。
你的内力增加了!!

-> -> 到了下午,要从后山洗马潭挑(tiao)一担水到石板路,记得早一点时间去石板路拿水桶,
2024-07-28 20:22:28 INPUT: n;w;wu;wu;w
--石板路(到了自动获得一个樟木桶,无需特别拾取)
你捡起一个樟木桶。
--洗马潭
2024-07-28 20:34:04 INPUT: tiao
你打下了满满一桶水。
2024-07-28 20:38:16 INPUT: guan
你把桶里的水都倒进了水缸里。

-> -> 傍晚又要帮厨(bangchu)了,
--香积厨
2024-07-28 20:20:48 INPUT: bangchu
你卷起袖子,开始在厨房帮忙。
你擦擦手,厨房的杂务全做完了。

-> -> 晚上在僧舍睡(sleep)好了。这就是天龙弟子的一天。
--僧舍
2024-07-28 20:54:00 INPUT: sleep
你往床上一躺,开始睡觉。
不一会儿,你就进入了梦乡。
你一觉醒来,精神抖擞地活动了几下手脚。
作为一名天龙入门弟子,规律的生活是必要的。
你做过早课了吗?(这个提示代表任务还没有完成做完)

午夜 什么都不做; 20:57

完成任务提示:
完成任务后,你被奖励了:
        三千八百五十七点经验;
        三千四百八十一点潜能;
        一万三千二百二十四点江湖声望。
你已经通过天龙寺入门任务获得了三千八百五十七点经验,任务完成度为0.00%。

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:45:28 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 06:41 PM 编辑

新手任务1:出家人的一天 - 2

这个任务按流程会存在有5个难点,每个阶段需要解决不同的问题:
巫师估计也是希望我们在解决一个个难点的同时有所收获;
难点1: 收集时间
    确认是否是我们需要的做任务的时间,用paotin的#action可以实现:
    学习掌握技能:paotin触发器#action
    命令: #action 语法: #action {actiontext} {commands}
在#action后面加上需要触发的语句,触发语句需要执行的指令就可以完成自动操作;
在这里,我们使用#var shi_chen,生成一个变量,用于存储当前是否什么时间
  1. #var shi_chen;
    #action {^│%* %*年%*月%*日%*时分 %s │} {
        okLog 现在是%2年%3月%4日的%5时分;
        #var shi_chen %5;
        do_work_by_now %5;
    };
复制代码

难点2: 判断是不是需要干活

    学习掌握技能:列表
    Paotin的列表 #list
    注意,使用时同样需要用#var 先定义一个变量(这是所有变量的固定模式);
    我们在这里定义两个列表:
        work_done 用来存储,我们时候已经完成过这个时辰的任务;
        work_list 用来存储,这个时辰需要做什么任务;
  1. #var work_done {
        {凌晨} {0}
        {早晨} {0}
        {晌午} {0}
        {正午} {0}
        {下午} {0}
        {傍晚} {0}
        {晚上} {0}
    };
复制代码
  1. #var work_list {
        {凌晨} {do_nianjing}
        {早晨} {do_knock}
        {晌午} {do_bangchu}
        {正午} {do_dazuo}
        {下午} {do_tiao}
        {傍晚} {do_bangchu}
        {晚上} {do_sleep}
    };
复制代码
利用上面的两个表来判断这个时辰需要干什么活,并且用work_list中存储的别名直接去把活给干了;
  1. #alias do_work_by_now {
        #if {$tl_yitian == 1} {
            #nop 还有活要干!;
            #if {$work_done[%0] == 0 && "$work_list[%0]" != ""} {
                #nop 要去干活;
                #undelay {d_time};
                #delay 1 {$work_list[%0]};
            };#else {
                #nop 不用干活,可以干点别的事情;
                #delay {d_time} {time} {30};
            };
        };#else {
            #nop 天龙寺的一天任务已经完成,领取下一个任务;
            #delay {ask_qst} {ask sha mi about job} {1};
        };
    };
复制代码


难点3: 收集干活的路径

    paotin的解决方法是,可以直接用path录制,简单高效。
    path.Trace(开始录制)
    path.Finish(录制结束)
    path.Mark(为当前所在的位置设置已经标志)
前辈有详细介绍,我这里就不再赘述
    https://pkuxkx.net/forum/forum.p ... 51690&fromuid=25618
    https://pkuxkx.net/forum/forum.p ... 50589&fromuid=25618

我这里贴出从方丈室到各主要地点的路径供参考(我的师傅是本因大师,所以我设置了任务起点在方丈室)
#nop 方丈室 《-》 十一面观音殿;
  1. #alias fzs_gyd {se;e;ed;ed};
    #var gyd_fzs {wu;wu;w;nw};
复制代码
#nop 方丈室 <-> 香积厨;
  1. #alias fzs_xjc {se;e;ed;ed;e;s};
    #var xjc_fzs {n;w;wu;wu;w;nw};
复制代码
#nop 方丈室 《-》 五百罗汉堂;
  1. #alias fzs_lht {se;e;ed;nd};
    #var lht_fzs {su;wu;w;nw};
复制代码
#nop 方丈室 -> 石板路;
  1. #alias fzs_sbl {se;e;ed;ed;e};
    #var sbl_fzs {w;wu;wu;w;nw};
复制代码
#nop 石板路 <-》 洗马潭;
  1. #var sbl_xmt {enter;ed;out;e;ed;ed;e;ed;nw;ne;nu;nw}
    #var xmt_sbl {se;sd;sw;se;wu;w;wu;wu;w;enter;wu;out}
复制代码
#nop 方丈室《-》 僧房
  1. #alias fzs_sf {se;e;ed;ed;e;n};
    #var sf_fzs {s;w;wu;wu;w;nw};
复制代码
#nop 方丈室《-》 钟楼
  1. #var fzs_zl {se;e;ed;ed;e;enter;ed;out;n;u};
    #var zl_fzs {down;s;enter;wu;out;w;wu;wu;w;nw}
复制代码

这里我用了两种方式来实现行走;
#alias 别名:
使用后可以直接移动,比如fzs_gyd 输入后就快速移动到十一面观音殿;
#var 设置变量:
可以通过path.WalkSteps {$变量名}实现边行走边干活,并且在干完活之后做事情
为什么要用到两种移动方式,且听后面详解;


难点4: 移动的过程中开关门
    paotin:使用path.WalkSteps、path.Walk.Stop、walk.Resume、event.Handle 、#action即可解决;
每走一步检测当前在什么位置,如果是【天王殿】就open gate,如果是【山门】就knock gate;
用#action 检查门是不是打开了,打开了就继续走;
这也是我们问题3里面,一部分我们用别名走路,一部分我们用#var记录路径的原因了;
以上这些功能如果只是用#alias的别名,也可以用分段行走来解决,但是由于不够通用,所以放弃了;
代码示例:
event.Handle {GMCP.Move} 会监听每一次移动,移动后执行一次walk_time的别名做事情;
event.Handle {GMCP.Move} {tl_qeust} {$MODULE} {walk_time};
别名walk_time,用来检查当前的房间名天王殿还是山门
$gGMCP[Move]是paotin独有的变量,节省了我们大量的时间自己抓取当前房间的信息,优秀;
path.Walk.Stop; 停下来
path.Walk.Resume 继续移动
  1. #alias {walk_time} {
        path.Walk.Stop;
        #if {"$gGMCP[Move][房间名]" == "天王殿"} {
            open gate;
        };#elseif {"$gGMCP[Move][房间名]" == "山门"} {
            knock gate;
        };#else {
            #delay walk.Resume {path.Walk.Resume} 0.3;
        };
    };
复制代码
开始执行行走路径;
  1. path.WalkSteps {$sbl_xmt} {#delay 1 haha};};
复制代码
利用#action判断是否可以通行;
  1. #action {^包铁大门被打开了。} {
            #delay walk.Resume {path.Walk.Resume} 0.3;
    };
    #action {^这里包铁大门已经打开了,你%*} {
            #delay walk.Resume {path.Walk.Resume} 0.3;
    };
复制代码
行走和判断当前位置是玩游戏特别重要的环节,这一部分paotin为我们做了大量好用的接口,大家慢慢接触后就会为之叹服;

难点5:完成单个任务后判断是不是所有时辰的任务都已经做完了,如果完成了就继续去领下一组任务
    这里我写了一个别名用来在列表变量work_done中记录当前时辰是否完成了任务
  1. #var work_done[$shi_chen] 1;
复制代码

用变量tl_yitian记录任务是否已经全部完成,这样就不用每次确认任务都去遍历一次列表;
如果还没有完成所有任务就
#foreach *work_done[%*] sc
就遍历一次当前任务完成列表,打印出来所有还需要干活的时间;
并且执行time指令,看一次当前时间
  1. #alias do_yitian_finish {
        #var work_done[$shi_chen] 1;
        #if {$tl_yitian == 0} {
            #nop 任务已经完成了;
            #delay {ask_qst} {ask sha mi about job} {1};
            #return;
        };
        #foreach *work_done[%*] sc {
            #if {$work_done[$sc] == 0 && "$work_list[$sc]" != ""} {
                okLog 需要干活 :  $sc "$work_list[$sc]";
            };
        };
        #delay {d_time} {time} {5};
    };
复制代码




北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:46:00 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 06:39 PM 编辑

解决了上面5个难点实际干活部分就相对简单了:这些就相对简单了,无非是移动到具体位置,执行一个指令。
#delay 1.5 nian;
#delay 1.5 bangchu;
#delay 1.5 sleep;

这里我用打坐为例:
do_dazuo 别名实际负责打坐这个任务的运行;
先定义了一个触发,在接收到内力增加的提示时结束打坐(因为必须打坐提升一点内力才算任务结束);
并且#untick {t_dz}; 取消掉打坐的定时器;
在延迟2秒后使用path调用$lht_fzs变量回到方丈院,并且在到达后执行别名do_yitian_finish来检测这一天的任务是否结束;
定义完触发器之后;使用别名fzs_lht;移动到任务地点罗汉堂;
并且设置了一个1.5秒执行一次的打坐别名mdz;
  1. #alias do_dazuo {
        #line oneshot #action {^你的内力增加了!!} {
            #untick {t_dz};
            halt;
            #delay 2 { path.WalkSteps {$lht_fzs} {#delay 1 {do_yitian_finish}}; };
        };
        fzs_lht;
        #tick {t_dz} {mdz} {1.5};
    };
复制代码

Mdz别名,帮我们检测当前是否是繁忙状态,如果不在繁忙状态,就dazuo 10;
  1. #alias mdz {
        #if { @char.IsBusy{} } {
            #return
        };
        dazuo 10;
    };
复制代码

再来一个任务加深一下印象:
挑水任务:
fzs_sbl别名快速走路到石板路;
延迟1秒后利用event.Handle {GMCP.Move}关注每一步移动,并执行别名walk_time的内容检测这一步需要做的事情;
  1. path.WalkSteps {$sbl_xmt} {#delay 1 {haha;arrive_then_tl};
复制代码

延迟两秒后开始,开始使用path.WalkSteps去执行$sbl_xmt变量中的路径,到了之后大笑两声,开始执行别名arrive_then_tl中的内容;
  1. #alias do_tiao {
        #var quest_now 挑水;
        #var quest_status 进行中;
        fzs_sbl;
        #delay 1 {event.Handle {GMCP.Move} {do_tiao} {$MODULE} {walk_time};};
        #delay 2 {path.WalkSteps {$sbl_xmt} {#delay 1 {haha;arrive_then_tl}}};
    };
复制代码

这里arrive_then_tl可以根据实际要做的事情去定义,比如挑水就写:
  1. #alias arrive_then_tl {
        if {"$quest_now" == "挑水"} {
            #if {"$quest_status" == "进行中"} {
                #nop 终点是洗马潭;
                tiao;
                #var quest_status 复命;
                #delay 2 {path.WalkSteps {$xmt_sbl} {#delay 1 arrive_then_tl};};
            };#elseif {"$quest_status" == "复命"} {
                    #nop 终点是石板路;
                guan;
                #var work_done[$shi_chen] 1;
                #var quest_now 0;
                event.UnHandle {GMCP.Move} {do_tiao};
                #delay 2 {path.WalkSteps {$sbl_fzs} {#delay 1 do_yitian_finish};};
            };
    };
复制代码

这两个任务段简单的背后是因为paotin帮我们做了大量工作,比如完成边走路边干活的path类,检查当前角色状态的char类;再次感叹作者的强大!

任务开始和结束的触发:
接到任务时重置任务完成情况;
  1. #action {^沙弥说道:「你刚入本门,一切还不熟悉,应该尽快习惯天龙寺的生活。」} {
        #var tl_yitian 1;
        #var work_done {
            {凌晨} {0}
            {早晨} {0}
            {晌午} {0}
            {正午} {0}
            {下午} {0}
            {傍晚} {0}
            {晚上} {0}
        };
    };
复制代码

任务全部完成设置任务状态为0;
  1. #action {^完成任务后,你被奖励了:} {
    #var tl_yitian 0;
    };
复制代码


北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:46:32 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 07:04 PM 编辑

新手任务2:阿弥陀佛,小僧带路不收费

任务:带路
你向沙弥打听有关『job』的消息。
沙弥说道:「近年来道路变化极大,很多人都难辨方向,你去天龙寺山脚看看有没有人迷路了,有的话去帮帮他们吧。」
其中“天龙寺山脚”是固定需要去等待的地点

--天龙寺山脚
到达地方后需要等待1分钟左右,直至出现提示:
梁康慌慌张张地走了过来,似乎迷了路。
梁康看着你,似乎想问什么,但又欲言又止。
2024-07-31 02:19:52 SEND: ask liang kang about 迷路
你向梁康打听有关『迷路』的消息。
梁康说道:「是啊,我本要去南小塔,结果迷路,不知道你能不能带我去?」
2024-07-31 02:20:01 SEND: ask liang kang about 带路
你向梁康打听有关『带路』的消息。
梁康决定开始跟随你一起行动。
--- 南小塔
梁康说道:「哎呀,我记错了,其实要去的是十一面观音殿。」
梁康害羞地脸红了。

这个任务把 "迷鹿”的行人带到指定的地方,需要注意的是并不是到达一个地方就结束的,偶尔会出现记错了,变更目的地的情况;

难点6:获取npc的id
    学习使用paotin的$gMapRoom[objs]
    这个功能可以快速获得当前房间所有npc的id
    根据npc昵称查找id,在paotin提供的人物列表中找同名的人,并且返回这个同名人的id;
    我们自己做一个函数find_targetid_by_name来匹配中文名,并根据中文名来找到id,这个函数具有相当的通用性,所以值得单独保存起来;
  1. #function find_targetid_by_name {
        #local objs $gMapRoom[objs];
        #local target_id 0;
        #foreach $objs[%*] obj {
            okLog $obj[name];
            #if {"$obj[name]" == "%0"} {
                #local target_id $obj[id];
                #break;
            };
        };
        #return {$target_id};
    };
复制代码
这个任务对机器人的走路功能有一些要求,但是有之前path.WalkSteps的基础,实现起来就很简单了

  1. #var bl_tls{
        #nop 路径还是大家自行用path.Trace 、 path.Finish录制吧;
    };
复制代码

带路任务增加触发
  1. #action {^沙弥说道:「近年来道路变化极大,很多人都难辨方向,你去天龙寺山脚看看有没有人迷路了,有的话去帮帮他们吧。」} {
        #var quest_now 带路;
        #var quest_status 开始;
        #nop 自行实现移动到天龙寺山脚;
    };
复制代码
利用paotin的sync.Wait实现等待系统有反馈后再继续执行查找id的操作,因为在没有系统反馈的情况下是获取不到最新的信息的;
  1. #action {^%*看着你,似乎想问什么,但又欲言又止。} {
        #var target_npc_cname %1;
        #var target_npc_id 0;
        look;
        sync.Wait {
            #var target_npc_id @find_targetid_by_name{%1};
            #if { "$target_npc_id" != "0"} {
                ask $target_npc_id about 迷路;
            };
        };
    };
复制代码


在这里利用触发获取需要去的地方,并且继续执行任务:
  1. #action {%*说道:「是啊,我本要去%*,结果迷路,不知道你能不能带我去?」} {
        #var start_room $target_room;
        set_target_room %2;
        #delay 2 {ask $target_npc_id about 带路};
    };
复制代码


#nop 触发移动步骤,开始走一遍地图;
  1. #action {%*决定开始跟随你一起行动。} {
        #var quest_status 进行中;
        #nop 移动到目的地;
    };
复制代码


如果触发记错了的情况,到达路径终点后就需要重走一次路径;
  1. #action {%*说道:「哎呀,我记错了,其实要去的是%*。」} {
        #var dailu_status 更改;
        #nop 这里需要实现在到达目的地后继续在走一次路径;
    };
复制代码
到达了npc想要去的位置,我们设置任务状态为到达,在走完路程之后,根据这个状态实现回去重新领取任务的功能;
  1. #action {%*找到了要去的地方,高兴地离开了。} {
        #var dailu_status 到达;
    };
复制代码

在这里使用变量dailu_status 记录是否完成了带路,如果完成了就去复命,否则还要再走一圈;

重温一遍path.WalkSteps的用法:
## 别名 path.WalkSteps <路径> [<回调代码>]
走一个自定义路径。行走完成后,执行回调代码。
比如:
  1. path.WalkSteps {w;w;w} {haha};
复制代码

会逐步向西走3步,之后执行haha的表情,大家可以自己试一下;

所以,走完天龙寺,并判断任务是否完成的代码是:
path.WalkSteps {$bl_tls} {#delay 1 arrive_then_tl};
arrive_then_tl中添加对变量quest_now、quest_status、dailu_status的判断即可完成;



北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:47:03 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 07:12 PM 编辑

新手任务3:感谢施主的馈赠

任务:送经书
2024-07-31 17:00:00 SEND: ask sha mi about job
你向沙弥打听有关『job』的消息。
沙弥说道:「单天勇前些日子在我寺捐了很多香火钱,你到天龙南诏建极大钟把这本佛经送(song)给他吧。」
-- 南诏建极大钟
2024-07-31 17:04:00 SEND: song shan
你恭恭敬敬地把一卷佛经送给了单天勇。
完成任务后,你被奖励了:
一千二百八十七点经验;
        四百六十点潜能;
        一千四百四十七点江湖声望。
        二点内力。
你已经通过天龙寺入门任务获得了三万三千七百四十四点经验,任务完成度为32.46%。

和带路任务没有本质区别,同样是找到Npc做某事,除了在天龙寺之外多了3张地图,分别是:昆明|成都|大理城

难点7:需要在走路的过程中找到NPC
              学习paotin的map.FocusNPC ,即刻化解

## 别名 map.FocusNPC <行为类型> <行为>
    关注指定特征的 NPC,并当发现它时,呼叫相应的行为。
    特征由一系列字段来描述,目前支持的字段有:
      - id:     ID
      - name:   名字
      - title:  称号
      - nick:   昵称
    行为有两种类型:
      - command: 指明行为是一个命令,例如 follow 或者 kill 之类,那么将以 NPC ID 为参数调用它。
      - alias:   指明行为是一个别名,表明要做的事情比较复杂,那么将以 NPC 对象为参数调用它。
如果省略所有参数,则不再关注任何 NPC。

举例:
  1. map.FocusNPC {{name} {单天勇}} command {songjingshu};
复制代码
解读:
遇到名字叫单天勇的男人就停下来,执行别名songjingshu中的内容;

难点8:跨地图移动
               学习paotin的逍遥行,轻松解决

有一说一paotin的逍遥行功能确实好用,可以在客户端里输入” HELP xiaoyao”, 在城市中心输入任意系统内建路径的节点名称就可以直接飞奔过去;
## 别名 xiaoyao.Goto <目的节点>
    逍遥行快速行走,可以从一个城市移动到另一个城市。支持自动坐船、自动过河。
    逍遥行底层采用的是系统 walk 命令,这要求你必须站在逍遥行节点才能使用本别名。
    但是本别名可以自动连续 walk,达到长途行走的目的。
    为避免重复,完整的逍遥行节点名称采用「节点名(区域的房间名)」格式表达。
    目的地暂时仅支持中文,但允许模糊查询。举例来说,假如你想前往「全真派(全真教的宫门)」,
    那么你输入「全真派」、「全真教」、「宫门」、「全真」、甚至「教的宫」都是可以的。
    本别名存在三个变体,你可以用 HELP 进一步了解:
       - xiaoyao.GotoThen: 允许调用者在行走完成之后,执行一段代码。
       - xiaoyao.GotoEmit: 允许调用者在行走完成之后,发射一个事件。
       - xy: 专供命令行使用并为此做过特别优化的别名,不要在脚本中使用它。

利用path.WalkSteps、xiaoyao.GotoThen 实现跨城市移动并干活,比如:
  1. path.WalkSteps {e;e;e} { xiaoyao.GotoThen 大理城 {ok}};
复制代码
就会在移动了e;e;e之后开启逍遥行到达大理城(如果已经站在逍遥行的移动节点上),并且在到达大理城之后执行ok的表情
你点了点头:好!

理解了map.FocusNPC、xiaoyao的用法,做送经书任务就手到擒来了;
  1. #action {^沙弥说道:「%*前些日子在我寺捐了很多香火钱,你到{昆明|成都|大理城|天龙}%*把这本佛经送(song)给他吧。」} {
        #var quest_now 送经书;
        #var quest_status 开始;
        #var npc_name %1;
        map.FocusNPC {{name} {$npc_name}} command {songjingshu};
        #var bl_path_name %2;  #nop 地图名称;
        #nop 出发去天龙池,到达之后自动xy,并开始遍历;
    };
复制代码

map.FocusNPC不增加关注信息时就是取消所有关注列表
  1. #action {^你恭恭敬敬地把一卷佛经送给了$npc_name。} {
            map.FocusNPC;
            event.UnHandle {GMCP.Move} {qtl};
            okLog 开始返回天龙寺;
            gobak_tls;
    };
复制代码

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2024-8-3 16:47:46 | 显示全部楼层
本帖最后由 xsxxj 于 2024-8-3 07:14 PM 编辑

新手任务3:感谢施主的馈赠 2
任务:化缘
你向沙弥打听有关『job』的消息。
沙弥说道:「鲍田彩家里很有钱,你到成都东大街向他化缘(huayuan)重塑佛祖金身吧。」
--- 东大街
2024-07-31 14:36:54 INPUT: huayuan
你向鲍田彩叙说天龙寺里需要大笔金钱重塑佛祖金身的事。
鲍田彩说道:「这年头,骗子不少啊。」
鲍田彩往西离开。
2024-07-31 14:36:54 INPUT: huayuan
你向鲍田彩叙说天龙寺里需要大笔金钱重塑佛祖金身的事。
鲍田彩道:你说的对,我老人家应该慷慨解囊了。
鲍田彩说道:「我这就回去解一笔款子去天龙寺。」
鲍田彩转身离开了。
劝人向善成功,你心里也挺美的。

这个任务没有什么新的知识点,最大的不同是在送经书的基础上增加了随机移动的环节
我们可以使用一组变量,记录都移动了哪些位置,以及回去的路是什么,在得到善款之后按照路径返回的遍历路径中,继续走下去即可;
比如:
在提示了NPC向什么方向移动的时候,记录下移动方向以及回去的方向,跟上去继续化缘;
  1. #action {^$npc_name往%*离开。} {
            #local dir_cname %%1;
            #local hy_dir $dir_list[%%1][ename];
            #list {back_path} {insert} {1} {$dir_list[%%1][back_name]};
            okLog npc 移动方向是: $dir_cname;
            okLog 需要移动方向:$hy_dir , 返回方向: $back_path;
            busy.Wait {
                #send $dir_list[%%1][ename];
                #delay 0.8 {huayuan;}
            };
        };
复制代码


结束语:天龙的新手暂时就不要想着门派例银的事情了,因为需要去到无量山找到段誉去领,那个地方貌似需要80级轻功,我们还是老老实实先把新手任务结束了,过了阵再去吧;

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-27 10:05 AM , Processed in 0.017601 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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