scheme 離線練功

311 views
Skip to first unread message

pokki

unread,
Mar 22, 2020, 2:23:04 AM3/22/20
to jymude...@googlegroups.com

談談一個比較少人研究的題目 ── scheme。


schememud 內建的離線練系統,一般人認為它只能重複做一個簡單動作,那是完全低估了 scheme 的潛力及可玩性。


有興趣可以先看看兩個跟 scheme 有關的 help topicshelp schemehelp 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

REPEAT

do touch battery,practice sword 200,exert recover

LOOP


計劃開始後會先 wield sword,之後掉進循環,不停執行 do touch battery,practice sword 200,exert recover



BREAK


BREAK 必需寫在 REPEAT / LOOP 裡面,用來跳出循環。


wield sword

REPEAT

do touch battery,exert recover

practice sword:BREAK

LOOP

do unwield sword,summon cruise ob,store sword,tell curl finished


practice sword 後面的冒號,意指如果前者 practice sword 失敗,就執行後者 BREAK,即是跳出循環。指令失敗與否由系統判定。practice 失敗原因有很多,體力內力不夠、武器拿不對、技能等級到上限諸如此類,任何一個失敗原因都會導致系統執行冒號後面的 BREAK


由於我們的 scheme 裡有回氣血有回內力,我們可以假設 practice sword 失敗原因是技能到了基本劍法上限。所以這個 scheme 跟上一個不同之處,是練到上限之後,會自動把劍收拾回包包,跟別的角色打個招呼,然後停止 scheme。如果停止 scheme 時是離線狀態,角色會被強制下線。


順帶說一下冒號的另一種用法。


wield sword

REPEAT

do touch battery,exert recover

practice sword:enable sword huashan-jianfa

LOOP


冒號後面不一定要用特別指令,也可以用任何 mud 裡的指令。


如上例,原來的劍法練滿後改為練華山劍法。再花多一點心思,就可以寫到把所有技能練滿。



CONTINUE


CONTINUE 也是必需寫在 REPEAT / LOOP 裡面,用來跳過循環裡餘下的指令,直接回到循環起點。


REPEAT

l curl:CONTINUE

slap curl

LOOP


上例,l curl 失敗後回到循環起點,直到 curl 出現在房間就執行 slap curl,一直slap 到他離開。(想例子苦手 avert)



RETRY


RETRY 是把冒號前的指令一直重試試到成功,這個不需要寫在 REPEAT / LOOP 裡面。


l curl:RETRY

slap curl


這裡等到 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 zisan → 交給下一人,主號在線負責分派菩提子 → sanimbue。因為離線關係無法看到內力要用幾顆菩提子補滿,但通過計算還是有辦法把消耗減到最低的。進階級可以挑戰五隻一起離線 scheme san 喔。



咕喱

unread,
Mar 22, 2020, 10:03:48 AM3/22/20
to 金庸修真錄交易所
試過用scheme 做個練功bot,
用內建alias, 能穿裝除裝,
不過由於每次cmd 隔格都1秒以上, 所以效率不太好
XDDDD

pokki於 2020年3月22日星期日 UTC+8下午2時23分04秒寫道:

pokki

unread,
Mar 23, 2020, 6:31:54 AM3/23/20
to jymude...@googlegroups.com
*bow 咕神

效率方面,每行(包括REPEAT和LOOP)需要一秒執行,如果是連續的練功那剛剛好cooldown的時間 XD

REPEAT

do research dodge 200,practice dodge 200

LOOP


以上花3秒練1下。

REPEAT do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 LOOP


這樣是花11秒練9下 = 1.22秒一下。

REPEAT 和 LOOP 必需消耗一秒,他們之間執行內容越多,每次練功的平均耗時就越少。如果選用單字符的 alias,每趟 loop 可以跑近二百幾次才有2秒的overhead,這樣效率還不算太差 =D

另外一個小 trick:

REPEAT do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200 do research dodge 200,practice dodge 200:COUNTINUE LOOP


這裡放個 COUNTINUE 會跟最後一句同時執行,可以跳過 LOOP ,省一秒 *avert

一秒跑一行有個例外,就是 RETRY 好像要等個4秒(?)才再次執行,要求效率的話請盡量迴避……

咕喱

unread,
Mar 24, 2020, 12:56:37 PM3/24/20
to 金庸修真錄交易所
貓神我有問題!!!

請問可以

REPEAT
action a:break
LOOP
REPEAT
action b:break
LOOP

這樣的嗎?



pokki於 2020年3月23日星期一 UTC+8下午6時31分54秒寫道:

pokki

unread,
Mar 24, 2020, 5:27:23 PM3/24/20
to 金庸修真錄交易所
回咕神,可以啊!不過 break 要寫uppercase XD

這樣會一直做 action a 做到失敗就轉做 action b,action b 做到失敗就完結了~

Kiven

unread,
Sep 23, 2020, 5:50:44 AM9/23/20
to 金庸修真錄交易所
貓神態神啦!
不知道冒號後面可以接一般指令
所以一度覺得scheme很難用 avert
不過我比較好奇 計時 是怎麼搞定的
我想到是repeat、loop跟retry這些都會固定消耗時間
所以原來地上的emblem是你的呀!想說為啥用著用著就飛走了XD
感謝貓神!讚嘆貓神!XDDD

pokki於 2020年3月22日星期日 UTC+8下午2時23分04秒寫道:

Kiven

unread,
Sep 23, 2020, 6:08:33 AM9/23/20
to 金庸修真錄交易所
請問不知道吃喝要花多少錢?
用bigu dan會不會也不錯。
可惜不能沒錢的時候叫他tell我...
我怎麼記得以前有個trigger還是triggers指令能用
不知有沒有幫助
或者已經被關掉了...


pokki於 2020年3月22日星期日 UTC+8下午2時23分04秒寫道:

pokki

unread,
Sep 27, 2020, 7:22:55 PM9/27/20
to 金庸修真錄交易所
吃喝不會花很多錢,幾兩銀子吃到飽的樣子,有 higgling 可以減價
但這種吃喝會 busy 很久,有 bigu dan 當然最好,沒有也可以 scheme 裡自己吃喝
交給系統包辦效率不好,但好處是省心
錢可以從銀號扣除,裡面放個一千金就可以吃很久了

pokki

unread,
Oct 11, 2020, 8:04:15 PM10/11/20
to 金庸修真錄交易所
咦剛剛才發現之前沒有看到這個 post *avert

計時喔,這邊的 scheme 大概是一秒執行一行指令,挺穩定的,所以算好行數做一個簡單的計時不會很難
要做精密的可能就不行了,例如會有肚餓吃飯的時間,每次吃飯都呆很久,還有些特別指令會消耗比一般更長的時間,沒記錯 RETRY 也是會呆很久

再說我貓神什麼啦,我是太無聊才找這些有的沒的玩
等你們寫出來後,curl 就可以退休了 XD
加油!

Kiven

unread,
Oct 11, 2020, 9:33:25 PM10/11/20
to 金庸修真錄交易所
想再請問 能不能類似這樣
practice dodge 1750:practice dodge 200:quit
也就是冒號後面還能用冒號?
這樣我就有兩次嘗試不同做法的機會
感謝
pokki 在 2020年10月12日 星期一上午8:04:15 [UTC+8] 的信中寫道:

pokki

unread,
Oct 12, 2020, 3:40:43 AM10/12/20
to 金庸修真錄交易所
好像不行喔,你可以試一下

如果怕次數錯誤,可以暴力 do practice dodge 1750,practice dodge 200
但用 do 不能分辨成功與否,至於怎樣可以 practice 200 失敗時 quit,就要另外寫了 =P
Reply all
Reply to author
Forward
0 new messages