精華區beta mud_sanc 關於我們 聯絡資訊
Commands: waylist1="north|south|east|west|up|down" waylist2="south|north|west|east|down|up" #var way %replace(@way,"out 和 ","") #var way %replace(@way,", 和 ",|) #var way %replace(@way," 和 ","|") #var way %replace(@way,", ",|) 可用#loop簡化為(對電腦而言,還是執行四次): #loop 1,4 {#var way %replace(@way,%item("out 和 |, 和 | 和 |, ",%i),%word("/|/|/|",%i,"/"))} #if (%numwords(@way,|)=1) {#alarm +1 {@way #var wayhistory %item(@waylist2,%ismember(@way,@waylist1))}} {#noop #alarm +1 {#var way %delitem(@wayhistory,@way) @way #var wayhistory %item(@waylist2,%ismember(@way,@waylist1))}} ====================================== 01.Pattern:將出口方向存到名為way的欄位裡,可以在樹狀目錄的       Variables裡找到它。 02.暗黃色行是一條名為waylist1的資料表,內含血肉會用到的出口方向,不含out。 03.暗紫色行是一條名為waylist2的資料表,出口位置和waylist1完全相反,做為寫出   倒回方向用。 04.靛色同樣用來整理出口的資料,使它整齊好用,當然out也直接刪去。 05.(%numwords(@way,|)=1):判斷房間出口有幾個的判斷式,一個出口執行亮紅色指令   集,否則執行亮藍色指令集。 06.紅色部分:{#alarm +1 {@way 即房間出口只有一個時,就直接執行@way裡的方向,   時間設定一秒後執行。下一行紅色段則是判斷下個房間的倒走方向用: 假設在某一方間走往west的方向   %ismember(@way,@waylist1):此函式會算出@way的資料在waylist1是第幾筆資料。   @way裡是west,west在waylist1裡是第四筆,得到4的結果。代入上一層式子裡:   %item(@waylist2,4):此函式會應要求抓出waylist2裡資料,依上個式子,要求取   出第四筆資料,即east。最後並放入wayhistory的欄位裡。做為下一格房間比對用。 07.亮藍色部份:當房間出口為複數,即執行這段指令集。沿續06的例子,往西走到新房   間,出口有兩個:east和north。並紀錄在way欄位裡並整理完成。   %delitem(@wayhistory,@way):用來刪去way欄位裡不必要的資料,現在way裡有east 和north兩筆資料,wayhistory有east這筆資料,經比對,刪除掉way裡east這筆資料 後,最後重新放回way裡,現在way裡僅剩north這筆資料。   @way:無須說明,走這道方向就是正確的路。   最後一行同06說明,求出回頭路後放進wayhistory準備下個房間使用。 08.#noop:無意義指令,可以拿來斷行用,主要用來塞#if中沒事做的部份。 09.血肉長城會常常遇到戰鬥,所以要另外搭配其它觸發開閉使用。否則不要下look指令