|
| 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 inte |
|
| rval中输入你要设定的时间 |
|
| 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),触发器( |
|
| Triggers)三项,所我们将着重讲这三项的使用。 |
|
|
|
|
|
|
|
|
| 一、别名(Aliases)是我们最长用到的功能,用较短的单词来替代一组指令,可以有 |
|
| 变量。当我们按下aliases图标后,会出现下图: |
|
|
|
|
|
| 在这里你可以读出和存存你的设置文件,
|
|
| 按下New会新建,会出现下图。
|
|
| 在name中输入你要用的别名的名字,图中的别名为gomaster
|
|
| 在commands中输入你要执行的命令,二个命令中间应该用
|
|
| 分号隔开,或者直接按回车把命令按行分开,二者效果是
|
|
| 一样的.在图的左边你可以选择你要修改的内容或文件名.
|
|
|
|
|
|
|
|
| 在class(类别)中可以给你的aliases按后面的名称分类,所有在同一个class中的ali |
|
| as为一类. |
|
| 右过的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等等,zmu |
|
| d命令前面都是需要加上#号的。 |
|
|
|
| 1、认识什么是机器人
|
|
| 机器人类似于一般编程结构中的IF...THEN结构。其中有三个主要的参数:Pa |
|
| ttern、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中的pu |
|
| t coin in yaodai命令,注意,本句中的“*文铜钱”可以是任意多的铜钱,比如十文。一 |
|
| 千文等等。因为 * 可以通配任何数字、字符或空白,所以不管捡起了多少文铜钱,zmud都会认为触发 |
|
| 机器人的条件已经满足。 |
|
|
|
| 再认我们来看看下面的例子:
|
|
| #trigger {你捡起??文铜钱} {put coin in yaodai}
|
|
| 这个例子和上面的例子差不多,只是把"*"改成了"??"二个问号,其它是完全一样的。
|
|
| 我们知道,在计算机中一个汉字相当于二个字节,zmud也同样是这样认为的,因为”? 通配任 |
|
| 何单个字符“所以上面的例子的意思就是当zmud收到你捡起一个汉字的铜钱就会触发机器人,也就是说当 |
|
| 你捡到十文以内的铜钱后,机器人才会触发,当捡到的铜钱数超过十文,需要用二个汉字来表示的时候,机器 |
|
| 人是不会被触发的。当我们把机器人改成 |
|
| #trigger {你捡起????文铜钱} {put coin in yaod |
|
| ai} |
|
| 这就表示当你捡起九十九文以内的铜钱,机器人才会被激发。如果我们把问号改为六个呢?.... |
|
| ...当然是以此类推了。 |
|
|
|
| 下面我们来学习一下%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点的话,就会执行第二个大括号中的命令sle |
|
| ep,在例子中我们把%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} 将带有火龙告诉你内容存入名为s |
|
| ara的窗口,避免忽略。 |
|
|
|
| clr 清除屏幕。如果要清空scrollback buffer并收回内存,请使用菜单命令Empt |
|
| y。 |
|
|
|
| #CON 断开并重新连接到当前的MUD,与菜单命令File/Reconnect 相同
|
|
|
|
| #CR 送一个空行到MUD
|
|
|
|
| #DI 断开当前的连接
|
|
|
|
| #EXEC command 执行一个命令,命令中可以包括变量
|
|
| 实例:#TRIGGER {^火龙告诉你(*)} {#EXEC %1} 执行火龙的指令。
|
|
|
|
|
|
| #GAG [pattern]
|
|
| 如果pattern省略,命令将从屏幕上删除最后一行。
|
|
| 如果包括pattern, 将删除所有匹配行,
|
|
| 实例: #GAG 火龙
|
|
| 所有有火龙二个字的信息都被zmud删除掉.
|
|
|
|
| #IF 执行条件分支,如果表达式为真,执行true-command,否则执行 falise-co |
|
| mmand(可选)。 |
|
| 表达式中可以包含变量和运算子。
|
|
| 实例:
|
|
| #if (@qn>30) {learn_skills} 在战斗中如果潜能达到了30,执行别名le |
|
| arn_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 npc about rumors |
|
| ask npc about name 这样三个命令开始的,把他们定义成别名可以节省一些时间,像这 |
|
| 样: |
|
| #al askn {ask %1 about here;ask %1 about here;as |
|
| k %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颜色代码,这样,引起触发不仅需要与从M |
|
| UD中获得的文本匹配,而且也需要颜色一致。这一特性在防止错误触发时非常有用。 |
|
|
|
| 例如:通常我们会在trigger中加入以下内容以防遭到NPC或PKer的毒手,
|
|
| #tr {^(你已经陷入半昏迷状态,随时都可能摔倒晕去)} {quit}
|
|
|
|
| 注意:pattern中的符号(^)强制zMUD从一行的头部开始触发,不能省略,否则随便某人cha |
|
| t一句你就得丢盔卸甲,狼狈退出,以后还怎么在江湖上混? |
|
|
|
| 但是,由于某些我也不知道的原因,在一些机器上,符号(^)不能正常发挥作用,这时就要用到颜色触发了 |
|
| 。 |
|
|
|
| 按以下步骤建立颜色触发
|
|
|
|
| 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}
|
|
| 再也不用担心错误触发了。
|
|
|
|
| (全文完) |
|