八卦自動行走觸發
* 撰寫者:doall
* 適用zMUD 7.21
* 觸發句:
明顯出口有: (&exit).
* 觸發撰寫內容:
#var temp 1
#wait 800
#var temp %random( %numwords( @exit))
#if (@temp = 0) {#var temp 1}
#until ((%word( @exit, @temp) != "和") & (%word( @exit, @temp) != "out") &
(@temp != 0)) {
#var temp %random( %numwords( @exit))
}
%word( @exit, @temp)
資料來源:聖殿英雄傳說非官方Wiki網站
http://funsanc.wikidot.com/
hmml補充解說:
Pattarn:明顯出口有: (&exit).
紅色字體相當於:#var exit %1,因此exit內的值是房間出口的字句。
01行:設定一個變數temp,值為1。
02行:等待0.8秒。
03行:先分成幾個部份來說明:
%numwords(@exit):求出exit裡有幾個字串,預設是以空白字元為分隔字元,
依照八卦迷陣的出口字句格式,最長會到3。在此計算出
的值先假定為A。
%random(A):隨機輸出一個值,由於內容只有A,所以範圍是0~A,在此計算
出的值假定為B。
#var temp B:將temp的值設定為B。
04行:分成幾個部份來說明:
(%word(@exit,@temp)!="和")
%word的功能是提取字串中所指定的單詞,本句可以解釋為:
取出exit內第temp個單詞出來,而這個單詞≠"和"
(%word(@exit,@temp)!="out")
取出exit內第temp個單詞出來,而這個單詞≠"out"
(@temp != 0)
temp≠0,因此,下行句子的意思即為:
#until ((%word(@exit,@temp)!="和")&(%word(@exit,@temp)!="out")
&(@temp!= 0)
取出exit內第temp個單詞出來,而這個單詞≠"和"&"out",且temp≠0,
當這些條件成立後執行:
{#var temp %random(%numwords(@exit))}
其意是為了將temp值限定為1與3,如果temp值指定的單詞是out,也會過濾掉。
05行:%word(@exit,@temp)
根據前述得到的temp,取出exit的單詞,這句就是執行得出的方向了。
結語:其實%word的完整格式為:%word(字串,數值,分隔字元),使用者能自行設定分隔
字元,如果完整使用%word的功能,整段觸發會簡潔很多,而%random的完整格式
為%random(mix,max),意即最大最小值可以自行設定,所以很多判斷是多餘的。
要注意的只有避免走向out即可,不過這觸發很有年代了,當時的中文化資源不
比現在....
精簡後如下:
#var temp 1
#until (%word(@exit,@temp," 和 ")!="out") {
#var temp %random(1,%numwords(@exit," 和 "))}
#alarm +1 {%word(@exit,@temp," 和 ")}