[心得] zMUD將國家水和一般水監控寫成一行的方法
這個寫法是將一般水和國家水的監控寫成一行的方法之一,可以讓藥水相關觸發變成
一行,無須分成一般水和國家水兩行。
Pattern :
^特級藥水: (&drinklist).
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
紅色部份,為"^",前面加上這個,可以讓句子中的"特級藥水:",唯有在句首出現時
才會執行比對,由於這個句子比對部份稍短,利用這個字元,可以有效降低誤觸的機
率,最後的"."亦有這個效果。
(&drinklist)是設定變數的方法之一,zMUD555以上版本確定可用,效果同等#var的
寫法,不過因為聖殿藥水水量顯示的格式,讓zMUD555無法用#var的方式取得變數內
容,必須用這個寫法,基本上,兩種寫法互用,可以解決不少吃字的難題。
以國籍為star的角色為例,drinklist最後會得到以下類似的內容:
0罐, 魔法藥水: 33罐, 內力藥水: 0罐.風之小捲: 100罐, 寒雪冰丹: 0罐, 星爍光丹: 30
罐
再來就是後製部份。
Commands :
#var drinklist %replace(@drinklist,"罐",|)
#var drinklist %remove(", 魔法藥水: ",@drinklist)
#var drinklist %remove(", 內力藥水: ",@drinklist)
#var drinklist %remove(".風之小捲: ",@drinklist)
#var drinklist %remove(", 寒雪冰丹: ",@drinklist)
#var drinklist %remove(", 星爍光丹: ",@drinklist)
#if (%numwords(@drinklist,|)=3) {#var drinklist @drinklist"0|0|0"} {#noop}
#var drinklist2 HP:%word(@drinklist,1,|)|%word(@drinklist,4,|)_SP:
%word(@drinklist,2,|)|%word(@drinklist,5,|)_PP:%word(@drinklist,3,|)|
%word(@drinklist,6,|)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
金色部份,目的是將分隔字元置入,由於水量後接字都是"罐",因此用它來置入分隔字
元是恰恰好,分隔字元可以自行指定,這裡指定"|",如果想省一行,直接用"罐"亦
無不可,依個人習慣而定。用#say @drinklist輸出結果如下:
0|, 魔法藥水: 33|, 內力藥水: 0|.風之小捲: 100|, 寒雪冰丹: 0|, 星爍光丹: 30|
靛色部份,是為了將不需要的字元移除,讓資料更符合需求。輸出結果如下:
0|33|0|.風之小捲: 100|, 寒雪冰丹: 0|, 星爍光丹: 30|
亮綠色部份,目的與前段相同,不過國籍不同,指令多少會有些變動,請自行修改。輸
出結果如下:
0|33|0|100|0|30|
紅色部份,因為有時候角色不會買國家藥水,這時候國家藥水的明細就不會出現,那上
段的輸出結果就會變成:
0|33|0|
到時藥水監控畫面難免會差了一點,所以本行做個判斷來確認到底取得幾個數值,如果
數值只有三個,那就再後方補上三個數值:0|0|0,讓接下來的運作,仍能使用六個數。
黃色部分,就是再排列了,個人習慣編輯格式是:
HP:水|國水 SP:水|國水 PP:水|國水
所以就把drinklist裡的資料依格式編入新的變數:drinklist2,以HP部分來說即
HP:%word(@drinklist,1,|)|%word(@drinklist,4,|)
%word可以將指定字串中的資料取想要的部份出來用,所以字串的資料愈整齊乾淨愈好,
為此才寫了多行來整理字串,在drinklist中,代表HP一般藥水和國家藥水的是第一筆和
第四筆資料,分隔字元如前述是"|",寫法如上就能套入想要的資料。
再來以"_"代替空格來使用,因為空格無法正確顯示,僅此而已。
執行後,輸出結果如下:
HP:0|100_SP:33|0_PP:0|30
最後將drinklist2放到status bar就完成了。
若想加入判斷水量自動買水,同樣使用%word從drinklist裡取出資料來寫機即可。想把
黃色部分寫在status bar亦是可行,不過staus bar會比較亂,看個人喜好吧!
Commands -2:
#var drinklist %replace(@drinklist,"罐",|)
#var drinklist %replace(@drinklist,": ",|)
#if (%numwords(@drinklist,|)<8)
{#var drinklist @drinklist"khp|0|ksp|0|kpp|0|"} {#noop}
#var drinklist2 HP:%word(@drinklist,1,|)|%word(@drinklist,7,|)_SP:
%word(@drinklist,3,|)|%word(@drinklist,9,|)_PP:%word(@drinklist,5,|)|
%word(@drinklist,11,|)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
上方是另一個整理方式,使用的資料會比較凌亂,不過依然可用,輸出結果會變成:
0|, 魔法藥水|33|, 內力藥水|0|.風之小捲|100|, 寒雪冰丹|0|, 星爍光丹|30|
還是有規律的資料,之後亦只是小幅變動,結果不變。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.176.62
※ 編輯: hmml 來自: 220.133.176.62 (04/03 01:23)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19