談談一個比較少人研究的題目 ── scheme。
scheme 是 mud 內建的離線練系統,一般人認為它只能重複做一個簡單動作,那是完全低估了 scheme 的潛力及可玩性。
有興趣可以先看看兩個跟 scheme 有關的 help topics:help scheme、help schedule。
簡單說明一下。
首先是設定計劃方面,用「scheme edit」編輯計劃,寫好後輸入「.」儲存。然後找一個休息室,用「scheme start」執行,之後就可以斷線讓他自己跑。
執行期間會自動補水補食物,前提是你有錢~
需要停止scheme時可輸入「halt」。
zmud 用家注意,如果 scheme 內容有用到 zmud 的特別字符「:」,要先關閉 parsing,否則 zmud 會把該行特別處理導致無法輸入。
執行方面,基本上是把計劃內容順序執行,完結後 quit。如遇中途到特別指令,系統會做出相應的動作。
scheme 裡的特別指令:
REPEAT / LOOP
BREAK
CONTINUE
RETRY
REPEAT / LOOP
這是比較簡單的循環指令,用的時候要成雙成對,缺一不可,兩者中間的內容會被重覆執行。最多可以嵌套 12 層。
先看一個簡單的練功 scheme:
計劃開始後會先 wield sword,之後掉進循環,不停執行 do touch battery,practice sword 200,exert recover。
BREAK
BREAK 必需寫在 REPEAT / LOOP 裡面,用來跳出循環。
practice sword 後面的冒號,意指如果前者 practice sword 失敗,就執行後者 BREAK,即是跳出循環。指令失敗與否由系統判定。practice 失敗原因有很多,體力內力不夠、武器拿不對、技能等級到上限諸如此類,任何一個失敗原因都會導致系統執行冒號後面的 BREAK。
由於我們的 scheme 裡有回氣血有回內力,我們可以假設 practice sword 失敗原因是技能到了基本劍法上限。所以這個 scheme 跟上一個不同之處,是練到上限之後,會自動把劍收拾回包包,跟別的角色打個招呼,然後停止 scheme。如果停止 scheme 時是離線狀態,角色會被強制下線。
順帶說一下冒號的另一種用法。
冒號後面不一定要用特別指令,也可以用任何 mud 裡的指令。
如上例,原來的劍法練滿後改為練華山劍法。再花多一點心思,就可以寫到把所有技能練滿。
CONTINUE
CONTINUE 也是必需寫在 REPEAT / LOOP 裡面,用來跳過循環裡餘下的指令,直接回到循環起點。
上例,l curl 失敗後回到循環起點,直到 curl 出現在房間就執行 slap curl,一直slap 到他離開。(想例子苦手 avert)
RETRY
RETRY 是把冒號前的指令一直重試試到成功,這個不需要寫在 REPEAT / LOOP 裡面。
這裡等到 curl 出現,slap 他一下然後就完結了。
指令介紹到這裡就差不多了,再來說一下用 scheme 有什麼好~
離線執行,不佔IP不用電(感謝 system)
重啟後自動歸位,如果是打雜用途角色就跟npc沒兩樣,寫好了就不用管,每幾個月給他點錢買食物就行了。
指令有 busy 就會在 busy 完結後自動執行下一個指令,不用自己算 #wa。
因為是跟 system clock 執行,沒有 lag 到爆指令的危險。
那 scheme 有什麼不好~
計劃上限 400 字符,但搭配 alias / do 使用還是可以寫出長長滿滿的 scheme。
只能做簡單動作,不能移動,限制甚多。這是缺點,但也是寫 scheme 好玩的地方。在有嚴格限制的空間可以創造出什麼有趣的 scheme 呢?
下面是一些 scheme 可以做的事情,拋個磚:
練功(這不用說了吧)
製藥
fuse
鑰匙包包管理員
借 emblem 機器人:四種 emblem 放地上,偵測到某種消失後開始計時,逾時自動召回再丟回地上。
san 十兵:四幫手離線 eat puti zi → san → 交給下一人,主號在線負責分派菩提子 → san → imbue。因為離線關係無法看到內力要用幾顆菩提子補滿,但通過計算還是有辦法把消耗減到最低的。進階級可以挑戰五隻一起離線 scheme san 喔。