作者 hmml (hmml) 看板 mud_sanc
标题 [zMUD] 主要项目01、02、03
时间 Sat Oct 13 12:56:43 2012
───────────────────────────────────────
回圈:Loop Structures
01-01 #number
中文:重复number次。
原文:repeat following text number times
格式:#number commands
范例:#2 bless
连续执行两次bless,在圣殿里,第二次可以取得下次bless的准备时间。
#2 #say %i
将执行次数带入%i,并用#say 显示出来。
01-02 REPEAT
中文:重复给定次数。
原文:repeat commands a given number of times
格式:#repeat n {commands}
范例:#repeat 2 {bless}
执行bless两次,效果跟上一个相同,不过5.55版用不出来。
01-03 LOOP
中文:执行指令数次。
原文:execute command several times in a loop
格式:#loop range {commands}
范例:#loop 5 {#say hi}
效果同前两个,执行五次#say hi。
#loop 2,5 {#say %i}
这个是loop的精髓,loop的真实效果是执行从第一个指定数字到最後一个
指定数字之间,有几个数字来决定要执行几次,没指定起始数字,预设为
1,本例为2-5,共有2、3、4、5四数字,所以会执行四次指令,指定范围
内的数字,可以使用%i带入指令中使用。7.21版支援正序数,倒序数;而
5.55只支援正序数,且当范围含负数,必须明确指定起始或结尾。本例将
执行:#say 2
#say 3
#say 4
#say 5
01-04 FORALL
中文:以列表(list)的内容跑一遍。
原文:loop through a string list and execute command for each item
格式:#forall {word1|word2|word3|...} {commands}
范例:#forall {hi|hello|iori|iori2} {say hi}
当list里有几个字串存在,就会执行几次say hi,这并未发挥forall的效
果。
#forall {hi|hello|iori|iori2} {say %i}
将字串带入%i,依序显示在画面上,这才是forall的真正用法。
semote={hi|hello|iori|ior2}
#forall @semote {%i}
字串可以先写在变数里,再将变数的名称安在list的位置,当list过长或
内容会变动时使用。
01-05 UNTIL
中文:执行指令直到条件为真(true)。
原文:execute commands until expression is true
格式:#until expression {commands}
范例:#var a 1
#until a>10 {#var a %eval(@a+1)
#say hi @a}
在a>10前,会一直执行#say hi @a。这是一道不小心使用便当机的指令,
请小心使用,条件最好设在变数里,万一不慎无限回圈了,可以用#var手
动让条件满足结束回圈。
01-06 WHILE
中文:在条件还为真(true)时执行指令。
原文:execute command while expression is true
格式:#while expression {commands}
范例:#var a 0
#while @a<10 {#var a %eval(@a+1)
#say hi @a}
在a<10前,会一直执行#say hi @a。这是一道不小心使用便当机的指令,
请小心使用,和上一个概念相反,条件设错的话,不像until那麽容易解
开。
01-07 LOOPDB
中文:以资料库的键值绕回圈。
原文:loops through key values in a database record
格式:#loopdb database-rec {commands}
范例:
在这里说明也不会明白,它是为资料库型变数存在的,不知道这是什麽
的话,举例也看不懂。後面类别还会有说明-
《资料库变数:Database Variable Commands》
01-08 LMAP
中文:以地图上的房间绕回圈。
原文:loop through rooms on the map
格式:#LM path command
范例:#LMAP "3sn" {#SHOW %roomname(%i)}
未用过。
01-09 PRIORITY
中文:暂停mud的输入下执行指令。
原文:execute list of commands without processing MUD input
格式:#priority {commands}
范例:
未用过,当有指令段不想被新的触发影响时,可以用这个,如此一来,
在这段指令未完成前,不会执行别的指令。
01-10 ABORT
中文:停止之後的命令。
原文:abort further parsing of the current loop or program block
格式:#abort
范例:#say hi
#abort
#say hello
本段指令只会执行到#say hi为止,#say hello不会执行。当有指令段
只完成一部份,尚未峻工前,可以使用。常用在指令内容改版时,又希
望它仍然作用时。
条件判断:Conditionals
02-01 IF
中文:条件测试。
原文:perform a conditional test
格式:#if (expression) {true-value commands} {false-value commands}
范例:#if (@a=1) {#say ture
#var a 0} {#say false
#var a 1}
当a=1,执行#say ture,并将a改成0;a=0,执行#say false,并将a改
成1。当使用者谋求强大的机器人时,必定要学会的指令。它允许使用
者只设定ture时,要做的事。但建议写完整为佳,可以用{#noop}。有并
列式和树枝状两种写法,一个耗资源好管理,另一个相对省资源但比较
杂乱。
02-02 CASE
中文:从清单选择指令。
原文:select a command from a list
格式:#case expression {commands} {commands} ......
范例:#case @a {#say number @a
#var a 2} {#say number @a
#var a 3} {#say number @a
#var a 1} {#say command error
#var a 1}
当a分别为1,2,3时,分别执行前三项指令。和if相比,case是个效果更
强大的指令,它提供节省资源并好管理的途径-扁平的结构;不过,当
判断式的结果超过给定的选项时,它会选择最後一项来执行,在本例,
可以看到有四个选项,第四个项目就会为了避免预期外结果而增加的防
错项目。
触发:Triggers
03-01 ACTION
中文:建立或显示触发。
原文:create or display a trigger action
格式:#action {pattarn} {commands} classnames
范例:#action {你技能中的祝福术~(Bless~)值是} {#say 再加油!}
建立一个触发,这是一个从别的MUD client程式移稙过来的指令,好让
使用者能无痛跳槽。
03-02 TRIGGER
中文:建立或显示触发。
原文:create or display a trigger action
格式:#trigger {pattarn} {commands} classnames
范例:#trigger {你技能中的祝福术~(Bless~)值是} {#say 再加油!}
建立一个触发,效果跟action一模一样。不过不常用,通常是打开编辑
视窗来建立,大概只有大团有触发想一只角色建立一次,这时就会有用
。
03-03 CONDITION
中文:增加多重状态(multistate)触发的状态(state)。
原文:add a new state to a trigger
格式:#condition ID {pattern} {commands} class
范例:
没用过,可能5.55版也没这个。
03-04 ALARM
中文:建立时间触发。
原文:create an alarm trigger
格式:#alarm timepattern {commands} classnames
范例:#alarm *1 {#say hi}
每秒执行一次#say hi。常用的指令,使用方式多元,配合特定字元*,
+,-等呈现不同的效果,详情另见《alarm 设定方式部份解析》。建议
所有的#wa,都使用#alarm -time {commands}。
03-05 TEMP
中文:建立暂时触发。
原文:create a temporary trigger
格式:#temp {pattarn} {commands} classnames
范例:#temp {你技能中的祝福术~(Bless~)值是} {#say 再加油!}
这个触发被使用後会自我删除,在#trigger里,就像在结尾加上:
#untrigger {你技能中的祝福术~(Bless~)值是}
一样。
03-06 ONINPUT
中文:建立命令列触发。
原文:create a command input trigger
格式:#ONINPUT [id] pattern commands [classname] [options]
范例:#ONINPUT {^h$} {cast 'heal'}
#ONINPUT {^~'(%*)} {say %1}
没用过也不会用。
03-07 MXPTRIG
中文:建立MXP触发。
原文:create a MXP trigger
格式:#MXPTRIG [id] pattern commands [class] [options]
范例:#MXPTRIG {color red} {%mxp.fore=Blue} "" "Prompt|NoCr"
没用过也不会用。
03-08 REGEX
中文:建立正规表示式(regular expression)触发。
原文:create a unix regular expression trigger
格式:#REGEX [id] {pattern} {commands} {classname} {options}
范例:
没用过,格式可能和指令trigger相同,差别在於pattern部份,
regex或许是依正规表示式规则来做判断。5.55版似乎无此指令。
03-09 SET
中文:设定触发状态。
原文:set a trigger state
格式:#SET [id] state [value]
范例:#SET 0
设最後一个触发的第一个state为true
没用过也不会用。
03-10 STATE
中文:改变触发状态。
原文:change the current trigger state
格式:#STATE [id] [state]
范例:#STATE 0
没用过也不会用。
※ 编辑: hmml 来自: 220.132.196.45 (10/13 12:46)
※ 编辑: hmml 来自: 220.132.196.45 (10/13 12:59)
※ 编辑: hmml 来自: 220.132.196.45 (10/13 13:02)