![]() |
![]() |
#1 |
中级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 05年03月12日
帖子: 99
声望力: 21
声望:
10
![]() 现金:11两梁山币
资产:66两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
zMUD从入门到精通 之 入门篇
zMUD从入门到精通 之 入门篇 摘自: 泥巴城堡 (http://www.justmud.com ) 作者:过儿 (guoer@126.com) 如果你想让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:当你断线时,将会自动执行。 ===================================================================== 变 量 ===================================================================== 变量是一个和别名十分类似的东西,但他们最大的不同是,别名必须放在输入栏最前,而变量可以放在任何地方。你只需要在定义的变量前面加个@就可以了。要注意的是在某些系统里如: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 里。 这里仍然有一些系统内定的变量不能被使用: 所有用%开头的变量!而你在输入栏里临时改变的变量并不能改变你的配置文件,因此在退出时,你不会被提醒储存这些变动。这些系统内定的变量都是很规则的,除了用%代替@;完成一个延时的命令行时你可以用%%代替@@。 =================================================================== 关于别名和变量的补充: 你可以使用#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最有力的工具。 触发器(在有的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约定的符号来代替某些文本。如: * 代替任何数量的字符或空格 ?代替一个字符 |
![]() |
![]() |