![]() |
zmud入门到精通高级篇 经典
zMUD从入门到精通-入门篇
如果你想让zmud做的更多,第一步是:定义命令行为你键盘上的一个键。 要定义一个快捷键首先你要按下ctrl-k,或在action 菜单上选择define key的选项。你将被提示按下你要定义为命令行的组合键。几乎键盘上所有的键都可以被定义,但是你不能与zmud 内定义的热键重复,如ctrl-k ,如果你定义的快捷键与window的快捷键重复,那么window的快捷键将被屏蔽掉。同时zmud 会自动激活numlock模式,以便于你可以使用小键盘来定义快捷键。 当你按下快捷键后,你就需要定义一个命令行来执行。比如,你按下数字8,然后在text栏键入north,那么现在每当你按下数字8,指令north(向北走)将会被发送到mud 里。一个常用的做法是:当有一个敌人在你的北方,而你必须在他出手之前杀死他,你可以先键入kill 指令在你的命令输入栏内,然后按下数字8紧接着按下回车键。而这样的命令在lpmud,dikumud 里通常要输入2个命令行。 如果你只是想在按下快捷键时,其所代表的命令行只是出现在屏幕下方的命令输入栏里而不是直接发往mud ,你可以在text的末尾使用~的符号,比如你定义alt+4为get all from~ ,那么当你发现尸体上有东西可拿时,按下alt+4,然后补全命令行为get all from corpse;而如果你看到寺庙里的功德箱里有东西可拿时:按下alt+4,然后补全为get all from box。 定义别名(aliases)是另一个使你的mud 人生更简单的方法。实际上,定义别名使你可以定义任何一个命令行为一个短小的缩写。 最简单的定义一个别名的方法是在先输入你想定义的命令行或单词,然后按下ctrl-a或在action 菜单选择alias。你将被提示输入一个缩写给你要定义的命令行或单词,这就是你定义的别名。比如你输入 fill jiudai(给酒袋灌满请水) 然后按下ctrl-a,然后输入fj 选择ok!,现在你在命令行里输入fj,命令行fill jiudai 就会被发送到mud 里了。 这里要说明的是:别名仅仅是一种翻译,因此你必须保证它在命令行首输入,比如你输入say fj ,程序发到mud 里的不会是say fill jiudai ,而是say fj 另一个定义别名的方式是在屏幕的命令输入栏里输入#ALIAS 别名 '要定义的内容' 你也可以用输入#ALIAS 的方法查看当前所有的别名。 别名的定义可以带参数,参数可以从%1--%9 ,比如你可以定义pt 这个别名为put %1 in %2 ;那么当你输入pt jitui bag 时, put jitui in bag 就会被发送到mud 里。另外一个常用的用法是比如我们#ALIAS kk 'kick %1;kill %1' ,那么如果我们输入kk kid,那么kick kid和kill kid会被发送到mud 里去。 最后要说明的一点是几个特殊的别名: atconnect : 当你连接到mud里时,别名代表的命令行将会自动执行。 atexit: 当你退出mud 时,将会自动执行。 atdisconnect:当你断线时,将会自动执行。 |
回复: zmud入门到精通高级篇 经典
变 量
变量是一个和别名十分类似的东西,但他们最大的不同是,别名必须放在输入栏最前,而变量可以放在任何地方。你只需要在定义的变量前面加个@就可以了。要注意的是在某些系统里如:TINTIN,变量是以$开始的,当然你可以在参数对话栏里改变它。 定义一个变量你仍然可以用#VARIABLE 变量名 要定义内容,这种命令行格式如:#VAR jian sword ,那么以后你输入wield @jian 时,wield sword 将被发往mud。定义了一个变量后,你随时可以在输入栏里用变量名=赋值内容来改变他。 另外一个重要的语法要被注意。在大多数程序语言里,变量可以互相赋值;所有的变量作为80个字符长的字符串储存在系统里。这点和别名一样,你可以定义的最长度为80字符长。所以,在zmud 里,变量1=变量2+1 是容许的。 比如#VAR contain jiudai;然后#ALIAS fs 'fill @contain' ,这样你输入fs时,fill jiudai 就会发送到mud 里。 这里仍然有一些系统内定的变量不能被使用: 所有用%开头的变量!而你在输入栏里临时改变的变量并不能改变你的配置文件,因此在退出时,你不会被提醒储存这些变动。这些系统内定的变量都是很规则的,除了用%代替@;完成一个延时的命令行时你可以用%%代替@@。 |
回复: zmud入门到精通高级篇 经典
关于别名和变量的补充: 你可以使用#AL 别名 {命令行} 的格式定义别名。如:#AL fs {fill jiudai} 再如:#AL make {#ALIAS %1 {buy %1 from %%1] 这个一个略现复杂的定义,他的作用是定义另外一个别名,当我们键入make leg时,#ALIAS leg {buy leg from %1} 将会被执行。同样你可以用#VA 变量名 变量 来定义一个变量。如:#VA coins 1000 就是将1000赋值给coins 这个变量,当然你也可以写成:coins=1000 或 coins:=1000 。 用别名来简化一段命令,而变量则可以在其中起到扩充的作用。如果想延缓变量的扩充,使用两个变量字符就是了@@。如果ALIAS 后面没有跟任何参数,所有的别名将会被列出。如果ALIAS后面仅仅跟了一个字母,那么用这个字母开头的别名将会被列出。 跟随在别名后的文本将会被当作参数处理,一共有%1-%99可以用于别名的限定。但同时一些特殊的别名%-1 到%-99也被定义了。比如%-1 包括在别名后所键入的所有文本,%-2则是别名所有的参数中的最后一个,如此类推。例如:pt leg bag(pt我们已经定义好是: put %1 in %2) 那么leg 就是%1,bag就是%2, leg bag 就是%-1,bag 就是%-2
==================================================================== 定义路名(paths)是一个非常有用的工具,它容许你将走过的一段路定义为一个路名,然后在路的起点与终点间你可以高速短时的行走。在其他mud程序里也叫:speedwalking 。他不但可以让你高速行走,而且可以使你有足够的速度通过某危险区域而不会被敌人攻击。 定义一个路名你可以键入#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入门到精通高级篇 经典
触发器被认为是不诚实的行为,但它是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)这个触发器。如果再把他们定义在两个快捷键或建立的按纽上,那你就可以很容易的控制他了。
|
回复: zmud入门到精通高级篇 经典
建立一个按钮: 按钮兼有别名、变量和触发器的功能,他不但可以使一个新手在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 命令的一部分. 现在举个例子:我们刚才建立了一个触发器叫autotell,现在我们使他变的更友好些.我们在off caption 里填入autotell,在on command field里填入#t+ autotell,在off command field 里填入#t- autotell在variable field 里填入autotell,然后点击ok,现在在窗口上我们就得到了一个按钮叫autotell,他的默认状态是off。点击按钮,触发器autotell就被启动了。我们可以看到按钮呈按下的状态,再点击一下按钮,按钮将会弹起,触发器autotell转入禁止状态。好了,现在你不在需要费神去敲击键盘或寻找菜单去激发和禁止你的触发器了,按钮为你提供了一个直观又直接的方式来完成他,去试试吧。 在按钮的高级标签里,你可以控制按钮的许多属性,比如颜色,大小,所在位置,甚至可以将一副bmp图片放在按钮上,这一切使你的按钮变得更合你的使用。
|
回复: zmud入门到精通高级篇 经典
多谢多谢!偶是新手,跟大家学习来了~
|
回复: zmud入门到精通高级篇 经典
我要好好的看看,学习下!
|
回复: zmud入门到精通高级篇 经典
谢谢您的帖子,对于新人来说很有用
|
回复: zmud入门到精通高级篇 经典
thanks a lot, although i don't really like the way to limit the review of this
|
回复: zmud入门到精通高级篇 经典
我要好好的看看,学习下!
|
所有时间均为格林尼治时间 +9, 现在的时间是 20:14. |
Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号
站长 fengyue