[zMUD] 主要項目01、02、03
作者 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)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章