ZMUD5.55基础应用
作者: 玫儿
俗话说“欲善其事,必先利其器。”要想玩好mud,对zmud的功能一定要熟练,一个mud中的高手
,也一定是一个zmud的高手,让我们先来了解一下什么是zmud.
zMUD是zuggsoft公司出品的mud客户端程序,功能强大,应该是玩MUD的最好的软件。
下面先让我们对他有个大概的了解:
一、菜单说明
菜单中的功能大部分按下面的按钮就可以完成了,但有一些功能是下面按钮中所没有的。其中大
部分不实用的功能我们将一语带过。
1、文件(File)
Open: 进入连接向导,打开一个新的连线
Reconnect:将“当前窗口”重新连线
Close Window:将“当前窗口”断线
New log:载入一个新"记录文件"
Append log:载入一个旧记录文件并继续记录
Log:记录窗口中的内容
Save buffer: 保存援冲区
Print Setup:设置打印的
Print:打印
Exit:退出ZMUD
2、编辑(edit)
Cut:删除命令列中你所标记的内容
Copy:拷贝你标记的内容
Paste:粘贴你所拷贝的东西到命令列中
Copy DDE link:拷贝DDE 链接
Select All:标记命令列中的全部内容
Clear:清除命令列全部内容
Find:在窗口中搜寻
3、查看(View)
查看已设置好的按钮中的功能,和按下下面的图示按钮做用一样
4、设置(Settings)New:开启一个新设定档(***.mud)
Load:载入旧的设定档
Save:储存目前的设定
Save as:将目前的设定另存新档
Import: 把其他的设定中的设定导入到当前设定中
Export: 把设置导出成所有zmud版本通用的zsc文件
Parse: 分析
Enable triggers:打开关闭触发器,功能和#ig,及按下屏幕右下角的手枪图标一样。
5、操作(Actions)
大部分和按下下面的图标的功能一样,其中的Tick timer非常的有用。
Tick Timer:设定在多常时间以后你去做什么,用秒为时间单位,和现实中的时间一样。这
是我们
最常用到的一项功能了
例1:你想每隔100秒吃一口烤鸭和喝一口酒袋
Timer interval:100 在timer interval中输入你要设定的时间
Timeout Margin:0
Timeout Command:eat kaoya;he jiudai 当时间到了以后你要执行的命令。
我们可以用#ti命令来打开和关闭tick timer。
6、页面布局(Layout)
没有什么大的做用。
7、窗口(Windows)
Command history: 历史命令记录 查看输出过的命令
Editor:编辑
Starus:打开或关闭状态栏,内容用Action--Define Status Bar编写
Databast:数据库
Automapper: 自动编辑地图功能
8、帮助(Help)
Register:对zmud进行注册
二、主要功能说明
上图中共有12个按钮,分别为图符,类别,别名,变量,路径,触发器,宏键,按钮,常规,颜
色,地图,声音。其中我们常用到的主要为别名(Aliases),变量(Variables),触发器(Trigger
s)三项,所我们将着重讲这三项的使用。
一、别名(Aliases)是我们最长用到的功能,用较短的单词来替代一组指令,可以有变量。
当我们按下aliases图标后,会出现下图:
在这里你可以读出和存存你的设置文件,
按下New会新建,会出现下图。
在name中输入你要用的别名的名字,图中的别名为gomaster
在commands中输入你要执行的命令,二个命令中间应该用
分号隔开,或者直接按回车把命令按行分开,二者效果是
一样的.在图的左边你可以选择你要修改的内容或文件名.
在class(类别)中可以给你的aliases按后面的名称分类,所有在同一个class中的alias为一类.
右过的disable class为class的开关,可以同时打开或关闭同一类别的alias.
当把alias的名字和内容都输入好了以后,就可以在mud中使用了,不要忘记save一下。比如上个
例子,我们只要在mud中输入gomaster一个命令,就会执行commands中的所有命令,是不是很方便呢?
赶快把你常用的命令组都做成alias吧!
用#alias也可以做出上面的alias的,命令如下:
#alias gomaster {#var arriver;halt;n;w;w}
#alias后面的第一个英文为alias的名字,如果已经有了这个名字的alias,会将旧的覆盖掉,后面
跟的命令要用{}大括号括起来,命令与命令之间要用分号隔开。
在mud中输入gomaster 其结果和用上面图中的内容所作的做的alias作用是完全一样的,还有在一
个alias中是可以镶套其它的alias的。
二、触发器(triggers)
触发器,也就是我们常说的机器人了,玩MUD不用triggers可以说基本上就是在浪费时间
,这也是zmud最重要的功能了。如何运用triggers,用好triggers,对于节省时间,robot自动练功有
相当大的作用。用好triggers,就可以边抽着烟边练功,边泡着妹妹边练功,甚至边睡着觉边练功了。
但是,机器人虽然有用,也同时存在一定的危险性。做robot固然可以自动练功,但有些pker也可以利
用你的triggers来pk你。(湖北站曾经有玩家因为robot一晚被杀了几十次)所以做triggers必须相当
小心,玫儿见过也做过很多机器人,其中的佼佼者象泡志的自动压镖的机器人,天地宽的大理job的机
器人,火龙的大理job的机器人,工程量的浩大是你想象不到的。所以,当你拿到一个机器人的时候,
一定要注意,不要随随便便的就给了别人,这毕竟是别人的劳动成果,机器人如果被pk拿到的话,可
以很容量的就把用机器人的玩家flood晕,不管你的机器人有多严谨。也有一些人做好机器人以后会拿
出来和大家一起分享,这种人玫儿是很钦佩的。好了,下面我们进入正题。
先认我们区分开什么是mud命令,什么是zmud命令,mud命令是指在mud中已经设定好的命令,如eat,
drink等,而zmud命令为你对zmud所下的命令,如#ig, #ti等等,zmud命令前面都是需要加上#号的。
1、认识什么是机器人
机器人类似于一般编程结构中的IF...THEN结构。其中有三个主要的参数:Pattern
、Command、Enable/Disable。说的通俗一点,当接收到 Pattern 的时候,自动输入 Command。
而En/Disable可以另其活动或不活动。 另外Class可以为triggers定义一个类名,“#t+”、“#
t-”。这两个命令可以激发和取消某个特定类别triggers的状态。另外 #IG可以关闭或打开全部triggers。
其中的内容为:Pattern为“北面就是边陲重镇伊犁了。但见城郭之外,巍峨的天山,直插云天,
”
Command为“#if (@destn=5) {#var route 16;#var step 14;fn} {fse}"
其意义为当ZMUD接收到“北面就是边陲重镇伊犁了。但见城郭之外,巍峨的天
山,直插
云天,”这条信息以后,自动发出下面commands中的命令。
我们也可以用#gi命令来做简单的机器人,如:
#gi 天亮了 {knock grat;enter}
其意思为当zmud接收到"天亮了"这条信息后,就会执行在括号中的命令。
在上面我们已经学会怎么去做机器人了,下面我们来更进一步的来了解机器人。
引用内部命令用 #
引用内部变量和函数用 %
引用自定义变量和函数用 @,命令行引用加 < >
引用数学运算用 [ ]
要想用好机器人,我们还要先来了解一下通配符(WILDCARDS)
我们只举出最常用的通配符
* 通配任何数字、字符或空白
? 通配任何单个字符
%s 通配任何空白(spaces, tabs)
%d 通配任何数字(0-9)
^ 强制pattern在行头时显示,triggers才有作用
$ 强制pattern在行尾时显示,triggers才有作用
~ 提示系统将~后字符当作字符而不是通配符
看了上面的通配符你可能更乱了,不要着急,让我们一步步的来,我们先来看下面的例子:
#trigger {你捡起*文铜钱} {put coin in yaodai}
上面的这个例子为,当zmud接收到"你捡起*文铜钱"以后就会执行后面command中的put coin in ya
odai命令,注意,本句中的“*文铜钱”可以是任意多的铜钱,比如十文。一千文等等。因为 * 可以通
配任何数字、字符或空白,所以不管捡起了多少文铜钱,zmud都会认为触发机器人的条件已经满足。
再认我们来看看下面的例子:
#trigger {你捡起??文铜钱} {put coin in yaodai}
这个例子和上面的例子差不多,只是把"*"改成了"??"二个问号,其它是完全一样的。
我们知道,在计算机中一个汉字相当于二个字节,zmud也同样是这样认为的,因为”? 通配任何
单个字符“所以上面的例子的意思就是当zmud收到你捡起一个汉字的铜钱就会触发机器人,也就是说
当你捡到十文以内的铜钱后,机器人才会触发,当捡到的铜钱数超过十文,需要用二个汉字来表示的
时候,机器人是不会被触发的。当我们把机器人改成
#trigger {你捡起????文铜钱} {put coin in yaodai}
这就表示当你捡起九十九文以内的铜钱,机器人才会被激发。如果我们把问号改为六个呢?....
...当然是以此类推了。
下面我们来学习一下%s和%d的用法。
%s 通配任何空白
%d 通配任意位的数字
我们来看下面的例子
#trigger {精:%s(%d)/%s(%d)} {#if (%1>200) {#10 du book} {sleep}}
在上面的例子中我们不光用了%s和%d二个新手通配符,还用到了#if语句,上面的例子的意思为
如果如果你的精大于200点,那么#10 du book(#10 du book的意思为同时执行10次du book的命令),
如果你的精不大于200点的话,就会执行第二个大括号中的命令sleep,在例子中我们把%d的值赋于给了
%1,在侠客行中对精的表于为 "精: 1350/ 1500"这种形式,也可以说是 "精:空格(当前精的数值)/
空格(最大精的数值)" 我们已经知道"%s 通配任何位的空格, %d 通配任意位的数字"所以我们要把
精表示为"精:%s(%d)/%s(%d)"
在例子中我们需要当前精的数值来做判断,因为空格不需要赋值,所以zmud会认为%1的值就是第一个
%d的值,同样%2就是第二个%d的值。
^ 强制pattern在行头时显示,triggers才有作用
^ 的作用为只有被用来做激发的语句顶在一行的最头,才会被激发。
让我们来看看下面的这二个例子
#trigger {^你捡起十文铜钱} {put coin in yaodai}
只有当"你捡起十文铜钱"顶在一行的最头,才会被激发,如果出现xx说道“你捡起十文铜钱”是
不会被激发的.
$ 强制pattern在行尾时显示,triggers才有作用,$的作用和^刚好相反.
知道了上面几个常用的通配符后,我们就可以做出一些复杂的机器人来了.
下面我们来了解一下常用的zmud命令.
#number command
这个命令向mud重复发送number次命令,number必须是一个常数。
实例:#10 du book
重复10次du book命令
如果在后面跟上%i,就会出现下面的结果:
实例: #4 fight bing %i
命令将被解释成fight bing 1;fight bing 2;...;fight bing 4并发往MUD
#AC pattern command [classname]
这是zMUD中最有用的特性之一。当从MUD中收到一条匹配的文本时,预先定义的命令将被执行。
这条命令的第一个参数是被匹配的文本,如果文本中包含空格,你需要将它用括号{}括起来。
#AC {你买下一件藤甲} {wear jia} 这样,无论何时只要你买了藤甲,立刻可以自动穿上。
#AD variable amount 这个例子允许你做一个简单的算术计算。amount可以是数值或变量。如果要
做减法,
可以使用负值。复杂一些的算术计算,请使用 #math 命令。
实例: #AD gold 1
给变量@gold加1
#AL为最常用的做别名的方法
实例:#AL fs {fill jiudai}
当执行fs时,fill jiudai将被送往MUD
#ALL command 发送一个命令到所有角色的窗口
实例: #ALL quit
发送 quit 命令到所有激活的角色窗口。 和:quit做用相同.
#BEEP 在pc机喇叭中发声
实例: #BEEP 16 播放windows 事件 16 的声音。
#BEEP;#WAIT 500;#BEEP beep两次,中间间隔0.5秒。
#BU number 触发一个自定义按钮,编号(从1至16)决定触发的按钮。number 可以是一个变量。
实例: #BU 1 触发第一个按钮,效果相当于在屏幕上按下这个按钮
#CAP 获取最后number行送到另一个窗口。
如果省略number,则只获取最后一行。 如果number是-1,所有的行将被拷贝。如果name省略,发送的
目标将是commandeditor window。
实例:#tr {火龙告诉你:大可你好吗} {#cap sara} 将带有火龙告诉你内容存入名为sara的窗口,避
免忽略。
clr 清除屏幕。如果要清空scrollback buffer并收回内存,请使用菜单命令Empty。
#CON 断开并重新连接到当前的MUD,与菜单命令File/Reconnect 相同
#CR 送一个空行到MUD
#DI 断开当前的连接
#EXEC command 执行一个命令,命令中可以包括变量
实例:#TRIGGER {^火龙告诉你(*)} {#EXEC %1} 执行火龙的指令。
#GAG [pattern]
如果pattern省略,命令将从屏幕上删除最后一行。
如果包括pattern, 将删除所有匹配行,
实例: #GAG 火龙
所有有火龙二个字的信息都被zmud删除掉.
#IF 执行条件分支,如果表达式为真,执行true-command,否则执行 falise-command(可选)。
表达式中可以包含变量和运算子。
实例:
#if (@qn>30) {learn_skills} 在战斗中如果潜能达到了30,执行别名learn_skills
#if (@hp>10) {dazuo 10} {yun recover} 如果气大于10就修炼内功10,否则补气。
#IG 打开或关闭所有触发,第一次执行#ig 关闭所有触发,第二次执行恢复正常。
#KILLALL 删除所有的别名、宏、触发、缩写 (用了以后后悔可别找我)
#REC [aliasname]
开始或停止记录别名。第一次键入#record时,zMUD开始记录送往 MUD的所有命令,你可以再次
键入#record查看已记录的命令,结束记录时,键入#rec加指定的别名保存。#rec off 将放弃记录别
名。
#T+ classname 激活触发类
#T- classname 关闭触发类,适当的运用以上两个命令可以避免机器人误动!
#T? 显示计时器(tick timer)的剩余时间
#TI 开关计时器(tick timer),对剩余时间没有影响。
#TS 设置计时器时间或重新计时, 指明以秒为单位的时间间隔, 如果省略,则重新计时
如 #ts 60 则是把tick timer中的时间改为60秒
#TZ 将计时器置零
#UNGAG 避免某行被忽略,通常用在触发中undo #gag命令。
实例: #tr {火龙告诉你} {#gag} #tr {大哥来救救我吧} {#ungag}
#VAR 删除一个变量
#URL 打开浏览器并在浏览器中打开一个网址。
实例: #URL http://www.zg169.net/~~czmud
注意需要两个~!参见通配符。
#VERSION 显示你正在使用的ZMUD版本
#WA [time] 暂停的处理直到从主机收到新的信息,如果指定time,
则暂停指定的时间,time以毫秒为单位。1秒=1000毫秒
别名中使用参数的例子 我们在解谜过程中向npc提出的问题通常是以: ask npc about here ask np
c about rumors
ask npc about name 这样三个命令开始的,把他们定义成别名可以节省一些时间,像这样:
#al askn {ask %1 about here;ask %1 about here;ask %1 about name}
可如果npc的名字有两个单词,或一堆同名的npc中你要问其中第二个,
就需要把别名中的参数改为%-1,此时执行askn bing 2或askn tian bing 就不会出错了。 为了更好
的理解参数的作用,试试执行下面的命令:
#al tt test1 %1 test2 %2 test3 %-1 test4 %-2
看看执行{tt a1 a2 a3 a4 a5}的结果,一切都清楚了吧?
颜色触发
zMUD的trigger允许在pattern中加入ANSI颜色代码,这样,引起触发不仅需要与从MUD中获
得的文本匹配,而且也需要颜色一致。这一特性在防止错误触发时非常有用。
例如:通常我们会在trigger中加入以下内容以防遭到NPC或PKer的毒手,
#tr {^(你已经陷入半昏迷状态,随时都可能摔倒晕去)} {quit}
注意:pattern中的符号(^)强制zMUD从一行的头部开始触发,不能省略,否则随便某人chat一句
你就得丢盔卸甲,狼狈退出,以后还怎么在江湖上混?
但是,由于某些我也不知道的原因,在一些机器上,符号(^)不能正常发挥作用,这时就要用到颜色
触发了。
按以下步骤建立颜色触发
1、在MUD输出窗口中选择需要引起触发的行;
2、在建立trigger窗口中单击new建立一个新的触发;
3、在options选项卡中的other options中选中color trigger;
4、返回trigger选项卡,在pattern字段中用用Ctrl-v粘贴在步骤一选择的行,然后在command字段填
入需要的命令,一个需要颜色匹配的触发就完成了。
注意:一定要用Ctrl-v粘贴,而不能使用鼠标右键的粘贴命令。
你也可以使用#color命令来建立一个颜色触发。
另外,ANSI颜色序列由字串“%e[xxm”定义,其中xx是ANSI颜色值,定义如下:
0 无属性 1 高亮 2 低亮 3斜体 4下划线 5闪烁 6快速闪烁 7反向显示 8 不可见;
前景颜色:
0黑 1兰blue 2绿 3蓝绿色 4红 5紫红 6棕 7灰 14黄 15白 128粗;
前景高亮加 8 背景加深为*16 粗体加128;
前景颜色:
30 黑 31红 32绿 33黄 34 兰 35深红 36深兰 37 白 ;
背景颜色:
40 黑 41红 42绿 43黄 44 兰 35深红 36深兰 37 白
因此,本文开头提到的逃命触发的例子现在可以写成:
#tr {你%e[31m已经陷入半昏迷状态,随时都可能摔倒晕去} {quit}
再也不用担心错误触发了。
(全文完)
|