触发器被认为是不诚实的行为,但它是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 coins} 但有时我们并不想总是这样做,那么我们可以给这个触发器选个名字,通过名字来控制他。如 #TRIGGER {(%w)tell you} {tell %1 I am busy now.} autotell 那么我们以后就可以用#T+ autotell #T- autotell 来打开(turn on)或关闭(turn off)这个触发器。如果再把他们定义在两个快捷键或建立的按纽上,那你就可以很容易的控制他了。