xsxxj 发表于 2024-8-3 16:41:12

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

本帖最后由 xsxxj 于 2024-8-3 07:18 PM 编辑

天龙寺是一个隐秘而庄严的佛教寺院(做为新人本僧找了很久)。位于大理城附近的点苍山上,风景如画,山势雄伟(路难走),云雾缭绕,为天龙寺增添了神秘而深邃的氛围。
地理位置:点苍山以其雄伟的山势和优美的自然景观著称,成为天龙寺这座古老寺院的绝佳栖息之地。山中环境清幽、气候宜人,使得天龙寺成为修身养性、潜心修炼的理想之地。
绝学与武功:
[*]六脉神剑:天龙寺的核心绝学之一,通过指力发出剑气,具备强大的攻击力。威力巨大,能够在瞬间对敌人造成致命的打击,灵活多变,极为高深,号称“北侠加特林”。
[*]一阳指:发出的指力如同阳光般炙热,能够穿透敌人的内力防御。除了强大的攻击力外,一阳指还具备出色的疗伤效果。
[*]凌波微步:天龙寺的轻功绝学,这门轻功在战斗中提供了极大的灵活性,也使得武者在复杂地形中行动自如。
[*]北冥神功:一门极为高深的内功心法,能够吸取他人的内力为己用,增强自身的武功。此功法在危急时刻能够帮助武者逆转局势,化解危险。

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

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

直达入口:新手备忘录拜师指南和地图新人第一阶段目标新手任务1:出家人的一天新手任务2:阿弥陀佛,小僧带路不收费新手任务3:感谢施主的馈赠
另外,所有的代码都是使用Paotin++客户端制作, 这个客户端提供了大量的功能,最大限度的解决了我们获取信息的问题,比如:快速得到房间名字还有npc名字的 gMapRoom遇到名字叫xxx的npc就停下来的 FocusNPC快速到达指定城市的 xiaoyao后面会在案例中实际应用,请各位看官莫着急.
感谢群里炮哥、雪神、大师、铁少、恶少、小豆米的帮扶和指点,让文科生也能玩mud /bow;

xsxxj 发表于 2024-8-3 16:43:03

本帖最后由 xsxxj 于 2024-8-3 05:23 PM 编辑

新手备忘录我是谁 ?hp查看生命值、精神、内力信息sc查看天赋等。
我在哪?lm查看当前地图lm 房间名查看指定房间所在位置
天龙寺怎么去?<font face="" "=""><font style="font-size: 10.5pt">travel </font></font><font face="等线"><font style="font-size: 10.5pt">大理城</font></font>还是那句经典老话,千里之行,始于扬州;因为我们是新人,有路引福利,直接输入,可以帮助我们节省路上的时间;

xsxxj 发表于 2024-8-3 16:43:38

本帖最后由 xsxxj 于 2024-8-3 05:44 PM 编辑

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


学习使用 walk 指令来查询玩家和官方提供的快捷行走路径;walk 是官方提供的路径

巫师大大甚至帮忙显示了停留的房间名,非常的友善;


我们输入
<font face="Tahoma"><font face="Tahoma">walk tianlong </font></font>
就开始自动移动过去了,并且停在天龙池


拜师:
我们可以先拜大雄宝殿的本尘大师;天龙池-》大雄宝殿<font face="Tahoma">w;wu;wu;w;knock
gate;enter;wu;out;w;wu</font>本尘大师可以传授的技能:


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



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

xsxxj 发表于 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经验之前都可以免费领取):最好设置快捷键,方便以后快速领取,比如:<div align="left">#alias drw {</div><div align="left">d;out;</div><div align="left">draw sword;draw sword;draw armor;draw head;draw cloth;draw surcoat;draw boots;</div><div align="left">enter;u;</div><div align="left">wear all;</div><div align="left">wield sword at right;</div><div align="left">};</div>
站在扬州的中央广场,输入drw 就会把装备都领好,并且自动装备上
4 学基本内功和特内到80级,并且过少林18罗汉阵:因为过少林18罗汉阵要求除了知识类,学到身上的所有技能都要超过80级,所以潜能不够的话其它技能最好1级也别学,学了就要学到80;*少林罗汉阵链接打开后页面搜索关键字「十八罗汉阵」)
dazuo 内力达到接近最大内力上限,#send quit ,大退游戏重新进入,气血会刷新最大值(气血最大值与我们内力最大值直接正相关,内力最大值越大,气血上限越高)
5 了解剑心居,这可能是我们晚上角色最经常呆的地方,必须设置成#alias别名:<div align="left">#alias gojxj {</div><div align="left">    s;s;s;w;enter jianxinju;</div><div align="left">};</div>站在扬州的中央广场,输入gojxj 试一下* 剑心居

xsxxj 发表于 2024-8-3 16:44:42

本帖最后由 xsxxj 于 2024-8-3 06:22 PM 编辑

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

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

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

小沙弥会指点你一级基本内功和一级枯荣禅功,记得enable上;
<b>enable force kurong-changong</b>
沙弥说道:「你刚入本门,一切还不熟悉,应该尽快习惯天龙寺的生活。」沙弥说道:「这几点,我必须和你说清楚。」沙弥告诉你:凌晨的早课在十一面观音殿举行,你跟着大家念(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%。

xsxxj 发表于 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,生成一个变量,用于存储当前是否什么时间
<div><font size="2">#var shi_chen;</font></div><div><font size="2">#action {^│%* %*年%*月%*日%*时分 %s │} {</font></div><div><font size="2">    okLog 现在是%2年%3月%4日的%5时分;</font></div><div><font size="2">    #var shi_chen %5;</font></div><div><font size="2">    do_work_by_now %5;</font></div><div><font size="2">};</font></div>
难点2: 判断是不是需要干活
    学习掌握技能:列表
    Paotin的列表 #list
    注意,使用时同样需要用#var 先定义一个变量(这是所有变量的固定模式);
    我们在这里定义两个列表:
      work_done 用来存储,我们时候已经完成过这个时辰的任务;
      work_list 用来存储,这个时辰需要做什么任务;
<div><span style="font-size: small;">#var work_done {</span></div><div><font size="2">    {凌晨} {0}</font></div><div><font size="2">    {早晨} {0}</font></div><div><font size="2">    {晌午} {0}</font></div><div><font size="2">    {正午} {0}</font></div><div><font size="2">    {下午} {0}</font></div><div><font size="2">    {傍晚} {0}</font></div><div><font size="2">    {晚上} {0}</font></div><div><font size="2">};</font></div><div><font size="2">#var work_list {</font></div><div><font size="2">    {凌晨} {do_nianjing}</font></div><div><font size="2">    {早晨} {do_knock}</font></div><div><font size="2">    {晌午} {do_bangchu}</font></div><div><font size="2">    {正午} {do_dazuo}</font></div><div><font size="2">    {下午} {do_tiao}</font></div><div><font size="2">    {傍晚} {do_bangchu}</font></div><div><font size="2">    {晚上} {do_sleep}</font></div><div><font size="2">};</font></div>利用上面的两个表来判断这个时辰需要干什么活,并且用work_list中存储的别名直接去把活给干了;
<div><font size="2">#alias do_work_by_now {</font></div><div><font size="2">    #if {$tl_yitian == 1} {</font></div><div><font size="2">      #nop 还有活要干!;</font></div><div><font size="2">      #if {$work_done[%0] == 0 && "$work_list[%0]" != ""} {</font></div><div><font size="2">            #nop 要去干活;</font></div><div><font size="2">            #undelay {d_time};</font></div><div><font size="2">            #delay 1 {$work_list[%0]};</font></div><div><font size="2">      };#else {</font></div><div><font size="2">            #nop 不用干活,可以干点别的事情;</font></div><div><font size="2">            #delay {d_time} {time} {30};</font></div><div><font size="2">      };</font></div><div><font size="2">    };#else {</font></div><div><font size="2">      #nop 天龙寺的一天任务已经完成,领取下一个任务;</font></div><div><font size="2">      #delay {ask_qst} {ask sha mi about job} {1};</font></div><div><font size="2">    };</font></div><div><font size="2">};</font></div>

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

我这里贴出从方丈室到各主要地点的路径供参考(我的师傅是本因大师,所以我设置了任务起点在方丈室)
#nop 方丈室 《-》 十一面观音殿;
<div><font size="2">#alias fzs_gyd {se;e;ed;ed};</font></div><div><font size="2">#var gyd_fzs {wu;wu;w;nw};</font></div>#nop 方丈室 <-> 香积厨;
<div><font size="2">#alias fzs_xjc {se;e;ed;ed;e;s};</font></div><div><font size="2">#var xjc_fzs {n;w;wu;wu;w;nw};</font></div>#nop 方丈室 《-》 五百罗汉堂;
<div><font size="2">#alias fzs_lht {se;e;ed;nd};</font></div><div><font size="2">#var lht_fzs {su;wu;w;nw};</font></div>#nop 方丈室 -> 石板路;
<div><font size="2">#alias fzs_sbl {se;e;ed;ed;e};</font></div><div><font size="2">#var sbl_fzs {w;wu;wu;w;nw};</font></div>#nop 石板路 <-》 洗马潭;
<div><font size="2">#var sbl_xmt {enter;ed;out;e;ed;ed;e;ed;nw;ne;nu;nw}</font></div><div><font size="2">#var xmt_sbl {se;sd;sw;se;wu;w;wu;wu;w;enter;wu;out}</font></div>#nop 方丈室《-》 僧房
<div><font size="2">#alias fzs_sf {se;e;ed;ed;e;n};</font></div><div><font size="2">#var sf_fzs {s;w;wu;wu;w;nw};</font></div>#nop 方丈室《-》 钟楼
<div><font size="2">#var fzs_zl {se;e;ed;ed;e;enter;ed;out;n;u};</font></div><div><font size="2">#var zl_fzs {down;s;enter;wu;out;w;wu;wu;w;nw}</font></div>
这里我用了两种方式来实现行走;
#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是paotin独有的变量,节省了我们大量的时间自己抓取当前房间的信息,优秀;
path.Walk.Stop; 停下来
path.Walk.Resume 继续移动
<div><font size="2">#alias {walk_time} {</font></div><div><font size="2">    path.Walk.Stop;</font></div><div><font size="2">    #if {"$gGMCP[房间名]" == "天王殿"} {</font></div><div><font size="2">      open gate;</font></div><div><font size="2">    };#elseif {"$gGMCP[房间名]" == "山门"} {</font></div><div><font size="2">      knock gate;</font></div><div><font size="2">    };#else {</font></div><div><font size="2">      #delay walk.Resume {path.Walk.Resume} 0.3;</font></div><div><font size="2">    };</font></div><div><font size="2">};</font></div>开始执行行走路径;
path.WalkSteps {$sbl_xmt} {#delay 1 haha};};利用#action判断是否可以通行;
<div><font size="2">#action {^包铁大门被打开了。} {</font></div><div><font size="2">      #delay walk.Resume {path.Walk.Resume} 0.3;</font></div><div><font size="2">};</font></div><div><font size="2">#action {^这里包铁大门已经打开了,你%*} {</font></div><div><font size="2">      #delay walk.Resume {path.Walk.Resume} 0.3;</font></div><div><font size="2">};</font></div>行走和判断当前位置是玩游戏特别重要的环节,这一部分paotin为我们做了大量好用的接口,大家慢慢接触后就会为之叹服;

难点5:完成单个任务后判断是不是所有时辰的任务都已经做完了,如果完成了就继续去领下一组任务
    这里我写了一个别名用来在列表变量work_done中记录当前时辰是否完成了任务
#var work_done[$shi_chen] 1;
用变量tl_yitian记录任务是否已经全部完成,这样就不用每次确认任务都去遍历一次列表;
如果还没有完成所有任务就
#foreach *work_done[%*] sc
就遍历一次当前任务完成列表,打印出来所有还需要干活的时间;
并且执行time指令,看一次当前时间
<div><font size="2">#alias do_yitian_finish {</font></div><div><font size="2">    #var work_done[$shi_chen] 1;</font></div><div><font size="2">    #if {$tl_yitian == 0} {</font></div><div><font size="2">      #nop 任务已经完成了;</font></div><div><font size="2">      #delay {ask_qst} {ask sha mi about job} {1};</font></div><div><font size="2">      #return;</font></div><div><font size="2">    };</font></div><div><font size="2">    #foreach *work_done[%*] sc {</font></div><div><font size="2">      #if {$work_done[$sc] == 0 && "$work_list[$sc]" != ""} {</font></div><div><font size="2">            okLog 需要干活 :$sc "$work_list[$sc]";</font></div><div><font size="2">      };</font></div><div><font size="2">    };</font></div><div><font size="2">    #delay {d_time} {time} {5};</font></div><div><font size="2">};</font></div>



xsxxj 发表于 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;
<div><font size="2">#alias do_dazuo {</font></div><div><font size="2">    #line oneshot #action {^你的内力增加了!!} {</font></div><div><font size="2">      #untick {t_dz};</font></div><div><font size="2">      halt;</font></div><div><font size="2">      #delay 2 { path.WalkSteps {$lht_fzs} {#delay 1 {do_yitian_finish}}; };</font></div><div><font size="2">    };</font></div><div><font size="2">    fzs_lht;</font></div><div><font size="2">    #tick {t_dz} {mdz} {1.5};</font></div><div><font size="2">};</font></div>
Mdz别名,帮我们检测当前是否是繁忙状态,如果不在繁忙状态,就dazuo 10;
<div><font size="2">#alias mdz {</font></div><div><font size="2">    #if { @char.IsBusy{} } {</font></div><div><font size="2">      #return</font></div><div><font size="2">    };</font></div><div><font size="2">    dazuo 10;</font></div><div><font size="2">};</font></div><div></div>
再来一个任务加深一下印象:
挑水任务:
fzs_sbl别名快速走路到石板路;
延迟1秒后利用event.Handle {GMCP.Move}关注每一步移动,并执行别名walk_time的内容检测这一步需要做的事情;
path.WalkSteps {$sbl_xmt} {#delay 1 {haha;arrive_then_tl};
延迟两秒后开始,开始使用path.WalkSteps去执行$sbl_xmt变量中的路径,到了之后大笑两声,开始执行别名arrive_then_tl中的内容;
<div><font size="2">#alias do_tiao {</font></div><div><font size="2">    #var quest_now 挑水;</font></div><div><font size="2">    #var quest_status 进行中;</font></div><div><font size="2">    fzs_sbl;</font></div><div><font size="2">    #delay 1 {event.Handle {GMCP.Move} {do_tiao} {$MODULE} {walk_time};};</font></div><div><font size="2">    #delay 2 {path.WalkSteps {$sbl_xmt} {#delay 1 {haha;arrive_then_tl}}};</font></div><div><font size="2">};</font></div>
这里arrive_then_tl可以根据实际要做的事情去定义,比如挑水就写:
<div><font size="2">#alias arrive_then_tl {</font></div><div><font size="2">    if {"$quest_now" == "挑水"} {</font></div><div><font size="2">      #if {"$quest_status" == "进行中"} {</font></div><div><font size="2">            #nop 终点是洗马潭;</font></div><div><font size="2">            tiao;</font></div><div><font size="2">            #var quest_status 复命;</font></div><div><font size="2">            #delay 2 {path.WalkSteps {$xmt_sbl} {#delay 1 arrive_then_tl};};</font></div><div><font size="2">      };#elseif {"$quest_status" == "复命"} {</font></div><div><font size="2"><span style="white-space:pre">                </span> #nop 终点是石板路;</font></div><div><font size="2">            guan;</font></div><div><font size="2">            #var work_done[$shi_chen] 1;</font></div><div><font size="2">            #var quest_now 0;</font></div><div><font size="2">            event.UnHandle {GMCP.Move} {do_tiao};</font></div><div><font size="2">            #delay 2 {path.WalkSteps {$sbl_fzs} {#delay 1 do_yitian_finish};};</font></div><div><font size="2">      };</font></div><div><font size="2">};</font></div>
这两个任务段简单的背后是因为paotin帮我们做了大量工作,比如完成边走路边干活的path类,检查当前角色状态的char类;再次感叹作者的强大!

任务开始和结束的触发:
接到任务时重置任务完成情况;
<div><font size="2">#action {^沙弥说道:「你刚入本门,一切还不熟悉,应该尽快习惯天龙寺的生活。」} {</font></div><div><font size="2">    #var tl_yitian 1;</font></div><div><font size="2">    #var work_done {</font></div><div><font size="2">      {凌晨} {0}</font></div><div><font size="2">      {早晨} {0}</font></div><div><font size="2">      {晌午} {0}</font></div><div><font size="2">      {正午} {0}</font></div><div><font size="2">      {下午} {0}</font></div><div><font size="2">      {傍晚} {0}</font></div><div><font size="2">      {晚上} {0}</font></div><div><font size="2">    };</font></div><div><font size="2">};</font></div>
任务全部完成设置任务状态为0;
<div><font size="2">#action {^完成任务后,你被奖励了:} {</font></div><div><font size="2">#var tl_yitian 0;</font></div><div><font size="2">};</font></div>

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

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

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

#nop 触发移动步骤,开始走一遍地图;
<div>#action {%*决定开始跟随你一起行动。} {</div><div>    #var quest_status 进行中;</div><div>    #nop 移动到目的地;</div><div>};</div>

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

重温一遍path.WalkSteps的用法:
## 别名 path.WalkSteps <路径> [<回调代码>]
走一个自定义路径。行走完成后,执行回调代码。
比如:
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的判断即可完成;



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

举例:
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 实现跨城市移动并干活,比如:
path.WalkSteps {e;e;e} { xiaoyao.GotoThen 大理城 {ok}};就会在移动了e;e;e之后开启逍遥行到达大理城(如果已经站在逍遥行的移动节点上),并且在到达大理城之后执行ok的表情
你点了点头:好!

理解了map.FocusNPC、xiaoyao的用法,做送经书任务就手到擒来了;
<div><font size="2">#action {^沙弥说道:「%*前些日子在我寺捐了很多香火钱,你到{昆明|成都|大理城|天龙}%*把这本佛经送(song)给他吧。」} {</font></div><div><font size="2">    #var quest_now 送经书;</font></div><div><font size="2">    #var quest_status 开始;</font></div><div><font size="2">    #var npc_name %1;</font></div><div><font size="2">    map.FocusNPC {{name} {$npc_name}} command {songjingshu};</font></div><div><font size="2">    #var bl_path_name %2;#nop 地图名称;</font></div><div><font size="2">    #nop 出发去天龙池,到达之后自动xy,并开始遍历;</font></div><div><font size="2">};</font></div>
map.FocusNPC不增加关注信息时就是取消所有关注列表
<div><font size="2">#action {^你恭恭敬敬地把一卷佛经送给了$npc_name。} {</font></div><div><font size="2">      map.FocusNPC;</font></div><div><font size="2">      event.UnHandle {GMCP.Move} {qtl};</font></div><div><font size="2">      okLog 开始返回天龙寺;</font></div><div><font size="2">      gobak_tls;</font></div><div><font size="2"> };</font></div>

xsxxj 发表于 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向什么方向移动的时候,记录下移动方向以及回去的方向,跟上去继续化缘;
<div>#action {^$npc_name往%*离开。} {</div><div>      #local dir_cname %%1;</div><div>      #local hy_dir $dir_list[%%1];</div><div>      #list {back_path} {insert} {1} {$dir_list[%%1]};</div><div>      okLog npc 移动方向是: $dir_cname;</div><div>      okLog 需要移动方向:$hy_dir , 返回方向: $back_path;</div><div>      busy.Wait {</div><div>            #send $dir_list[%%1];</div><div>            #delay 0.8 {huayuan;}</div><div>      };</div><div>    };</div>

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

页: [1] 2
查看完整版本: 【天龙寺】新手攻略-为了六脉神剑我出家了