定义路名(paths)是一个非常有用的工具,它容许你将走过的一段路定义为一个路名,然后在路的起点与终点间你可以高速短时的行走。
在其他mud程序里也叫:speedwal king 。他不但可以让你高速行走,而且可以使你有足够的速度通过某危险区域而不会被敌人攻击。定义一个路名你可以键入#MARK 命令行;或选择action 菜单的speedwalking 选项。然后按下start recording 的按钮。现在你每一步的移动都会被记录下来最后键入 #PATH 路名或通过选择stop recording 和输入路名的方法就定义了这段路程。被定义的路名会象一个别名一样被保存起来。在输入栏里,你可以用.路名来调用他。你也可以直接在.后面输入方向符号来高速行走,例如:.nees表示向north,east,east,south 方向高速行走。而且在大多时候你可以用数字来表示某方向重复的次数,比如刚才的路可以打为:.n2es当你正在一个路名的记录中时,你随时可以用#PATH 不带参数来检查当前正在记录的路径,如果你走错了方向,你可以用#BACKUP 来走回去。另一个paths的有用的函数是可以让你反方向行走,比如我们定义了从武当到扬州的路叫 wutoyang ,那么我们从武当去扬州时就可以键入.wutoyang然后我们就到了扬州,当我们又想从扬州回到武当时,我们不用在定义一段新的路名,而只要键入#REVERSE wutoyang 或..wutoyang 我们就可以回到武当了。如果你键入#REVERSE 而不带任何参数,那么最近的一次路名将会被自动作为参数使用。记住speedwalking 是建立在定义好的方向上的,如north 等,你可以增加这些定义让他做更多的事,比如你增加o 作为open door;那么你就可以在走动中开门入房了了.
触发器被认为是不诚实的行为,但它是zmud最有力的工具。
触发器(在有的mud程序里也叫机器人或actions)容许你在收到mud发出的一段特定的文本后执行一系列的指令。听起来,似乎很简单,但它的意义是深远的。定义一个触发器,你可以使用#TRIGGER (或#ACTION),格式是:#TRIGGER {特定的文本} {要执行的语句}。无论何时只要特定文本从mud发出,你的命令将会被执行。当然你一样可以通过 view/triggers 的菜单来编辑和显示触发器。现在让我们开始定义一个简单的触发器:在一个人很多的房间里,当大家都在chat和say 时,你很容易忽略别人对你讲的话;在战斗中更是如此,一排排的战斗场面的描写使你眼睛很容易疲劳,以致于忽略朋友的"helpme !" 的呼救。那么让我们定义一个触发器:#TRIGGER {告诉你} {#COLOR red}这样当有人对你说话时,该文本将会变成红色。这就是简单,但使你的mud生活更有力的触发器。另外一个常用的例子是:#TRIGGER {你渴了} {dr}当你已经在别名里定义好了#ALIAS dr {drink jiudai}时,那么每当你渴了,drink jiudai 的命令就会被发出,也就是说系统将会自动的喝水解渴,你再也不用为这事操心了。在输入一个特定的文本时,你可以使用一些zmud约定的符号来代替某些文本。如: * 代替任何数量的字符或空格 ?代替一个字符 %d 代替任何数量的数字 %w 代替任何数量的首字符(一个单词) %a 代替任何数量的字母数字(a-z,0-9) %s 代替一定数量的空格 %x 代替一定数量的非空格 [范围] 代替在范围内的一定数量的字符。 ^ 强行定义文本必须在一行之首出现 $ 强行定义文本必须在一行之尾出现 (文本) 储存匹配的文本在参数%1-%9里 ~ 引用下一个字符以避免失控 {val1|val2|val3|...}匹配任何一个特殊的字符串 {^字符串}不匹配一个特殊的字符串 说明一个范围,你可以用特别的字符如[abc]或[a-c],如果你使用一个太大的定义,你应该将~ 引用字符跟上。比如~[test~]将会匹配文本里的字符test而不作为一个太大的范围被执行。而且引用字符可以在参数选择时改变。匹配一个空行,使用$就可以了。你也可以使用一个变量,变量的赋值将会在接受文本前执行。你所匹配的文本有些可以做为特别的参数在命令行里使用。你可以用括号将这些文本储存起来做为参数使用。比如: #TRIGGER {(%W) tell you} {tell %1 I am busy now.}这样当某人对你说话时,你就可以自动告诉他我现在很忙。另一个例子是:#TRIGGER {你捡起(%d)个铜板}{drop %1 coin s}但有时我们并不想总是这样做,那么我们可以给这个触发器选个名字,通过名字来控制他。如#TRIGGER {(%w)tell you} {tell %1 I am busy now.} autotell那么我们以后就可以用#T+ autotell #T- autotell 来打开(turn on)或关闭(turn off)这个触发器。如果再把他们定义在两个快捷键或建立的按纽上,那你就可以很容易的控制他了。 =========================================================== 建立一个按钮:按钮兼有别名、变量和触发器的功能,他不但可以使一个新手在mud 里生活的更容易,而且他也具有非常重要的功能。按钮被点击后会执行一系列指令,按钮的标题可以是一个变量值,而且他可以象墙上的开关一样双向的控制。建立一个按钮你可以通过在一个现存的按钮上点击右键或在action菜单里选择Make Button 。按钮有两种类型,单向按钮(push buttons)和双向按钮(toggle buttons)。单向按钮在你按下执行的同时也就结束了他的使命,而双向则不,一个双向按钮可以在off(up...)和on( down...)等之间选择,这有一个重要的地方是按钮的类型是由一个变量栏控制的,如果你将一个变量赋给这个栏,,那么他就成为双向按钮,同时变量值必须含有按钮的状态( 0表示 off/up,1表示on/down)。现在我们在off caption 里填入按钮没被执行时我们想显示在按钮上的话,在旁边的栏里填上按钮被执行时按钮所显示的语句,记住语句长度不能超过10个字符,你可以放置一个变量在按钮上,按钮会显示变量的值。然后我们在on command 栏里填上当按钮被按下时你想按钮执行的指令;在off command栏里填上当按钮被释放时你想按钮执行的指令。value field(变量栏)常常被用来在外部控制按钮。你实际上可以用变量(variable) 来做到这点。如果你将1赋给一个变量在variable 栏里,那么按钮将在最初处于按下状态,反之,如果你赋0,按钮将在最初处于释放状态。,不过value field 变量栏可以使你可做的控制更多。在value field里你可以输入一个表达式,什么时候表达式成立,按钮就会被按下,当表达式不成立了,按钮就会被释放。Zmud 支持的表达式十分广泛,可以包括变量和所有的运算符,可以使用括号来改变运算的默认顺序,如果参与运算的都是数字,那么数学公式将会起作用,如果有字符串参加运算,那么下面的规则将会被使用: 注: v1和v2 表示一切可能的变量或其他表达式 v1 + v2 将v1的值增加到v2,如果是字符串,那么文本会连接起来。 v1 - v2 从 value1里减去value 2 v1 * v2 v1的值以v2的量倍增 v1 / v2 v1 以v2量平分,任何小数会被忽略 v1 \ v2 v1被v2除,同时返回一个模数 v1 & v2 逻辑加 v1 and v2 和上面一样 v1 | v2 逻辑或 v1 or v2 和上面一样 v1 xor v2 逻辑异或(即逻辑真反为假,逻辑假反为真) v1 = v2 如果相等返回值ture v1 > v2 如果value1大于value2返回ture v1 < v2 ..........小于 v1 >= v2..........大于等于 v1 <= v2..........小于等于 v1 <> v2..........不等于 v1 != v2..........不等于 v1 =~ v2如果v1里的文本被v2包括,返回ture v1 ~= v2..............和..相同........ -v1 返回v1的一个负数,(1就变-1) !v1 返回value1在逻辑上的相反数(ture==>false) 如果使用 匹配的文本=~表达式,那么任何一个被储存了的文本参数都可以用来判断真假,只要这段语句是if 命令的一部分.现在举个例子:我们刚才建立了一个触发器叫auto tell,现在我们使他变的更友好些.我们在off caption 里填入autotell,在on command fi eld里填入#t+ autotell,在off command field 里填入#t- autotell在variable field 里填入autotell,然后点击ok,现在在窗口上我们就得到了一个按钮叫autotell,他的默认状态是off。点击按钮,触发器autotell就被启动了。我们可以看到按钮呈按下的状态,再点击一下按钮,按钮将会弹起,触发器autotell转入禁止状态。好了,现在你不在需要费神去敲击键盘或寻找菜单去激发和禁止你的触发器了,按钮为你提供了一个直观又直接的方式来完成他,去试试吧。在按钮的高级标签里,你可以控制按钮的许多属性,比如颜色,大小,所在位置,甚至可以将一副bmp图片放在按钮上,这一切使你的按钮变得更合你的使用。