北大侠客行MUD论坛

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

Zmud462武当新手任务诵经机器人的制作

[复制链接]
发表于 2012-1-5 17:33:05 | 显示全部楼层 |阅读模式
一转眼玩北侠已经快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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 17:54:11 | 显示全部楼层
7.21的诵经触发可以参照我这个帖子,解决了提取经文和乱码的问题
http://pkuxkx.net/forum/thread-25223-1-1.html
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 18:34:53 | 显示全部楼层
本帖最后由 lequn 于 2012-1-5 06:38 PM 编辑

把破解fullme的贴上来吧。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 18:49:03 | 显示全部楼层
3个月30M+,我三个月才3M+
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 19:13:29 | 显示全部楼层
一转眼玩北侠已经快3个月了,莎莉文也已经从一个对北侠一无所知的新手慢慢变成了30M+,整天和一堆BT一起做b ...
mfan 发表于 2012-1-5 05:33 PM


贴个721通用的中文数字转阿拉伯数字的,不解释,自己看

#CLASS {math}
#ALIAS change {#if %1=一 {%2=1};#if %1=二 {%2=2};#if %1=三 {%2=3};#if %1=四 {%2=4};#if %1=五 {%2=5};#if %1=六 {%2=6};#if %1=七 {%2=7};#if %1=八 {%2=8};#if %1=九 {%2=9};#if %1=十 {%2=10}}
#ALIAS change_num {#var temporary1 0;#var temporary2 0;#var temporary3 0;#var temporary4 0;#var temporary5 0;#if %pos(万,%1) {change %left(%1,%pos(万,%1)-1) temporary1};#if %pos(千,%1) {change %rightback(%left(%1,%pos(千,%1)-1),2) temporary2};#if %pos(百,%1) {change %rightback(%left(%1,%pos(百,%1)-1),2) temporary3};#if %pos(十,%1) {change %rightback(%left(%1,%pos(十,%1)-1),2) temporary4};#if %pos(十,%1) {change %rightback(%1,2) temporary5};#if (@temporary5>9) {temporary5=0};#if (%begins(%1,十)) {temporary4=1};#math result 10000*@temporary1+1000*@temporary2+100*@temporary3+10*@temporary4+@temporary5;#if @result=0 {change %1 result}}
#ALIAS math {#if %pos(零,%1) {change_num %right(%1,%pos(零,%1)+1);gain=@result;change_num %left(%1,%pos(零,%1)-1);#math gain @gain+@result} {change_num %1;gain=@result}}
#VAR gain {0} {0}
#VAR result {0} {0}
#VAR temporary1 {0} {0}
#VAR temporary2 {0} {0}
#VAR temporary3 {0} {0}
#VAR temporary4 {0} {0}
#VAR temporary5 {0} {0}
#CLASS 0
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 19:14:39 | 显示全部楼层
3个月30M+,我三个月才3M+
lequn 发表于 2012-1-5 06:49 PM



也是三个月3M的飘过
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 19:14:50 | 显示全部楼层
我比你迟了16天,也是武当,才4M+,介绍下经验啊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-1-5 22:27:59 | 显示全部楼层
回复 8# roing


    经验就是:找一份清闲的工作,哈哈
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-5 22:37:39 | 显示全部楼层
此贴,该经典!

精华吧!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-1-8 18:31:04 | 显示全部楼层
人才啊,居然把所有书的章节给记录了。。我比较懒,直接把变量页数加10进行检查,章节对才计算正确页数
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 06:27 PM , Processed in 0.011886 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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