|
一转眼玩北侠已经快3个月了,莎莉文也已经从一个对北侠一无所知的新手慢慢变成了30M+,整天和一堆BT一起做bxs。看着北侠变得越来越繁荣,每天都有新人涌入,还是挺开心的。但是号称最适合新手的武当的新手任务,特别是诵经,已经成为所有武当新人的怨念了。所以在这里分享一下当初我做武当新手任务诵经机器人的方法。
要完成诵经全自动,需要解决的问题如下:
1. 抓取诵经的位置,章节,页数
2. 走到指定诵经地点
3. 获取诵经内容
1. 抓取诵经的位置,章节,页数。这个有两种情况:
第一种是:“冲虚道长说道:「今天全派弟子要在后院熟读典籍,据说要诵唱庄子·外篇「上卷」的庄子·外篇·天地(15)”,这里我们需要用变量记录下诵经的地点,经书的名称,章节的名称和页数。
Pattern: 冲虚道长说道:「今天全派弟子要在(*)熟读典籍,据说要诵唱(*)的(*)~((%d)~)
Command: sj_pos=%1;sj_book=%2;sj_item=%3;sj_page=%4
第二种是:“冲虚道长说道:「今天全派弟子要在前院熟读典籍,据说要诵唱道德经「上卷」的第一十五章”这样的,这里需要把章节名由中文换算成数字。注意,这里的章节名有可能是个位数的情况,所以要用2条trigger。(中文转换成数字除此之外不知道还有什么好的方法,请各位高手帮忙)
Pattern: 冲虚道长说道:「今天全派弟子要在(*)熟读典籍,据说要诵唱(*)的第(*)十(*)章
Command:
sj_pos=%1;
sj_book=%2;
sj_item=%2;
#if %begins(%3,一) {sj_page=10};
#if %begins(%3,二) {sj_page=20};
#if %begins(%3,三) {sj_page=30};
#if %begins(%3,四) {sj_page=40};
#if %begins(%3,五) {sj_page=50};
#if %begins(%3,六) {sj_page=60};
#if %begins(%3,七) {sj_page=70};
#if %begins(%3,八) {sj_page=80};
#if %begins(%3,九) {sj_page=90};
#if %begins(%4,一) {#math sj_page @sj_page+1};
#if %begins(%4,二) {#math sj_page @sj_page+2};
#if %begins(%4,三) {#math sj_page @sj_page+3};
#if %begins(%4,四) {#math sj_page @sj_page+4};
#if %begins(%4,五) {#math sj_page @sj_page+5};
#if %begins(%4,六) {#math sj_page @sj_page+6};
#if %begins(%4,七) {#math sj_page @sj_page+7};
#if %begins(%4,八) {#math sj_page @sj_page+8};
#if %begins(%4,九) {#math sj_page @sj_page+9}
Pattern: 冲虚道长说道:「今天全派弟子要在(*)熟读典籍,据说要诵唱(*)的第(*)章
Command:
sj_pos=%1;
sj_book=%2;
sj_item=%2;
#if %len(%3)=1 { #if %begins(%3,一) {sj_page=1};
#if %begins(%3,二) {sj_page=2};
#if %begins(%3,三) {sj_page=3};
#if %begins(%3,四) {sj_page=4};
#if %begins(%3,五) {sj_page=5};
#if %begins(%3,六) {sj_page=6};
#if %begins(%3,七) {sj_page=7};
#if %begins(%3,八) {sj_page=8};
#if %begins(%3,九) {sj_page=9};
#if %begins(%3,十) {sj_page=10};
} {};
这样,我们就使用sj_pos记录了诵经的位置,sj_book记录了经书名称,sj_item记录了经文章节名,sj_page记录了页数,接下来就是去复真观二楼去借书,这个应该没什么问题,这里就不多写了。
2. 走到指定诵经地点。
这个使用path遍历,走到指定的房间名#stop即可,在这里不赘述了,希望各位武当新人借此学习学习使用path进行遍历的方法,论坛wiki上都有,对你以后做慕容,韩元外,萧峰,胡一刀等任务绝对好处多多。
3. 获取诵经内容。
诵经的书一共有9本,分别是庄子·外篇「上卷」,庄子·外篇「下卷」,庄子·内篇「上卷」,庄子·内篇「下卷」,庄子·杂篇「上卷」,庄子·杂篇「下卷」,道德经「上卷」,道德经「下卷」,阴符经。一般来说,诵经比较频繁的是前6本,它们每本经书的页数和章节名都不同,但是每个章节的起始页数是固定的,所以知道了章节名(之前已经用sj_item获得),获取到对应章节的起始页数,再加上相对的页数(之前已经用sj_page获得),就得到实际的页数了,在这里我做了一个alias来获取经书的实际页数并显示内容:
Alias name: checkjing
Commands:
sj_startpage=0;
#if %begins(@sj_book,庄子·外篇「上卷」) { #if %begins(@sj_item,庄子·外篇·骈拇) {#math sj_startpage @sj_page+0};
#if %begins(@sj_item,庄子·外篇·马蹄) {#math sj_startpage @sj_page+3};
#if %begins(@sj_item,庄子·外篇·胠箧) {#math sj_startpage @sj_page+11};
#if %begins(@sj_item,庄子·外篇·在宥) {#math sj_startpage @sj_page+30};
#if %begins(@sj_item,庄子·外篇·天地) {#math sj_startpage @sj_page+65};
#if %begins(@sj_item,庄子·外篇·天道) {#math sj_startpage @sj_page+115};
#if %begins(@sj_item,庄子·外篇·天运) {#math sj_startpage @sj_page+150};
#if %begins(@sj_item,庄子·外篇·刻意) {#math sj_startpage @sj_page+189};
#if %begins(@sj_item,庄子·外篇·缮性) {#math sj_startpage @sj_page+200};
} {};
#if %begins(@sj_book,庄子·外篇「下卷」) { #if %begins(@sj_item,庄子·外篇·秋水) {#math sj_startpage @sj_page+0};
#if %begins(@sj_item,庄子·外篇·至乐) {#math sj_startpage @sj_page+50};
#if %begins(@sj_item,庄子·外篇·达生) {#math sj_startpage @sj_page+68};
#if %begins(@sj_item,庄子·外篇·山木) {#math sj_startpage @sj_page+106};
#if %begins(@sj_item,庄子·外篇·田子方) {#math sj_startpage @sj_page+142};
#if %begins(@sj_item,庄子·外篇·知北游) {#math sj_startpage @sj_page+176};
} {};
#if %begins(@sj_book,庄子·内篇「上卷」) { #if %begins(@sj_item,庄子·内篇·逍遥游) {#math sj_startpage @sj_page+0};
#if %begins(@sj_item,庄子·内篇·齐物论) {#math sj_startpage @sj_page+20};
#if %begins(@sj_item,庄子·内篇·养生主) {#math sj_startpage @sj_page+68};
} {};
#if %begins(@sj_book,庄子·内篇「下卷」) { #if %begins(@sj_item,庄子·内篇·人间世) {#math sj_startpage @sj_page+0};
#if %begins(@sj_item,庄子·内篇·德充符) {#math sj_startpage @sj_page+45};
#if %begins(@sj_item,庄子·内篇·大宗师) {#math sj_startpage @sj_page+76};
#if %begins(@sj_item,庄子·内篇·应帝王) {#math sj_startpage @sj_page+123};
} {};
#if %begins(@sj_book,庄子·杂篇「上卷」) { #if %begins(@sj_item,庄子·杂篇·庚桑楚) {#math sj_startpage @sj_page+0};
#if %begins(@sj_item,庄子·杂篇·徐无鬼) {#math sj_startpage @sj_page+41};
#if %begins(@sj_item,庄子·杂篇·则阳) {#math sj_startpage @sj_page+97};
#if %begins(@sj_item,庄子·杂篇·外物) {#math sj_startpage @sj_page+140};
#if %begins(@sj_item,庄子·杂篇·寓言) {#math sj_startpage @sj_page+167};
} {};
#if %begins(@sj_book,庄子·杂篇「下卷」) { #if %begins(@sj_item,庄子·杂篇·让王) {#math sj_startpage @sj_page+0};
#if %begins(@sj_item,庄子·杂篇·盗跖) {#math sj_startpage @sj_page+46};
#if %begins(@sj_item,庄子·杂篇·说剑) {#math sj_startpage @sj_page+98};
#if %begins(@sj_item,庄子·杂篇·渔父) {#math sj_startpage @sj_page+113};
#if %begins(@sj_item,庄子·杂篇·列御寇) {#math sj_startpage @sj_page+138};
#if %begins(@sj_item,庄子·杂篇·天下) {#math sj_startpage @sj_page+164};
} {};
#if %begins(@sj_book,道德经「上卷」) {sj_startpage=@sj_page} {};
#if %begins(@sj_book,道德经「下卷」) {#math sj_startpage @sj_page-40} {};
#if %begins(@sj_book,阴符经) {sj_startpage=@sj_page} {};
sj_content="";
page @sj_startpage
在这里我偷了点小懒,因为对于道德经上下来说,一般都是一章一页的,但是中间有那么一两章占了两页,所以从那开始之后的页数都需要再加1,因为碰见的少,所以我也懒得做了,各位可以自行加上。
接下来用一个trigger来获取诵经内容,因为Zmud721获取诵经内容会有乱码,所以这个只对462有效。。。
Pattern: ==%s(%x)%s==
Command: sj_content=@sj_content%1
这样,sj_content就会记录下需要诵经的内容,没有空格,没有=,接下来只需要chanting @sj_startpage @sj_content就可以了。诵经结束之后用#step返回冲虚的地方,一次诵经就结束了。
北大侠客行MUD,中国最好的MUD |
|