作者hmml (hmml)
看板mud_sanc
標題[心得] Zmud擷取訊息的編寫方式
時間Sat Aug 30 09:31:09 2008
嗯~最基本的做法如下:
#trig (關鍵詞) {#cap 視窗名}
#trig 是在命令列建立觸發的指令,當然寫在觸發內容中也可使用。
#cap 則是抓取訊息到指定視窗的意思。
而()內的文字會出現在Patten一欄,{}的部份會出現在Commands的欄位中。
例如:你要將標有聖潔龍族的訊息抓到名為CHAT的視窗中,方便瀏灠。語法就是
#trig (聖潔龍族) {#cap chat}
如上,有空格的地方都要空格。
然而,聖潔龍族的資訊只佔聖殿總聊天訊息量的一部份,要是一個一個設定,
會讓觸發數相當龐大不易整理。因此,相似格式的訊息,如公眾頻道,可以如此設定:
#trig (【%1】) {#cap chat}
以上語法中,%1可以套入任何字句,長度不限,起於【,結束於】,不管是
【閒聊】【聖潔龍族】【聖殿英雄傳說】【石頭家族】....等等,都在該語法的擷取
範圍,如此一來,就能節省不少設定相似觸發的心力。
注意:以上例子因族繁不及備載,只能簡略舉四例,排列順序與未列出者和編輯者個
人立場無相關。 (avert)
再來,【%1】是很方便簡潔的設定,但因為太簡潔了,所以也抓了不少額外資訊,
量少無妨,但連續性的訊息會造成洗頻,這樣為不漏看訊息而做的觸發就白費了。
洗頻情節重大者:
【F5】【F4】【F3】颶風三兄弟的戰鬥訊息。
Weapon的二天一流技能練功戰鬥訊息,如受流左,受流右等等招式名(avert weapon)
圍歐時寒的超大量戰鬥訊息,時寒的任一劍招都會。
因此,我們會希望能做個黑名單來阻擋這些戰鬥訊息流入擷取視窗,
由於寫法較長,所以直接到觸發編輯視窗寫入,做法大致如下:
patten欄:【(%1)】
與上例不同處在%1用括號括了起來,事實上和沒括應該沒什麼不同,保險起見而已。
(avert)
Commands欄:
#var hide {%1}
上句的目的在設定一個名為hide的變數,內容會填上【(%1)】中%1所抓出的任何內
容,{%1}中的{}是為了連空格也抓進變數中,zmud才不會亂做新變數出來。
使用格式如下:
#var 變數名 變數內容 變數預設值
因此,當%1的內容有空格,會導致部份字元跑到變數預設值一欄去,有時候zmud會因此
自行建一個新變數,觸發就會失敗,所以要加{}。
#var hide2 1
同樣也是做一個變數,名為hide2,但內容預設會填入1以備使用!(常常用)
要檢閱變數的內容,按下zmud上方Variable按鈕即可瀏灠。
#case @hide2 {#cap chat} {#noop}
#case 是一個類似寫選擇題的語法,格式如下:
#case 答案 {選項一} {選項二} {選項三}.....
如果你在答案中填下1,zmud會執行選項一的內容,填2則執行選項二的內容,依此類推。
而該語法的答案當然由zmud自己填,如果要自己填,那乾脆不要寫。所以在答案填下變數
hide2,前方要加上@,zmud才會知道你要用hide2的內容。基本上,hide2的值是1,故
zmud會執行選項一(#cap chat)的動作,在大部份的情況下,所有符合【%1】格式的訊息
都會擷取到chat視窗。
#noop則是什麼都不做的意思。如果hide2的值為2,本觸發將不會執行任何擷取的動作。
接著是設立黑名單了,如果不想抓【F5】,就如以下設定:
#if (@hide = "F5") {#var hide2 2}
#if意思很明確,即如果、假設之意,格式如下:
#if (符合條件) {指令一} {指令二}
如果()內的要求合格了,就做指令一,不合格就做指令二,原則上指令二可有可無。
因此本句的大意為:
如果hide的值是F5,就把hide2的值改為2。
F5左右的引號建議加上,以免節外生枝。
如此一來,當zmud執行到#case這句時,就會執行選項二{#noop},什麼都不做了!
整段語法組合順序如下:
patten:
【(%1)】
commands:
#var hide {%1} 將關鍵句所得內容寫入hide。
#var hide2 1 將hide2值寫上1。
#if (@hide = "F5") {#var hide2 2} 如果hide的值為F5,將hide2改成2。
#case @hide2 {#cap chat} {#noop} 依照hide2的答案來執行選項。
如果要增加黑名單,只要依#if那行格式不停增列即可,#case要擺最後。
最後,zmud都有吃中文字的問題,造成觸發失敗,但使用#var可以迴避這個問題,
除了抓到的字串正確率較高外(如閃華裂光拳,可以正確無誤地寫入變數值),
如果抓到的字串和原來的字串不相符,只要將寫入變數中的內容直接拿來使用,就能
讓觸發能正常地使用。
注意:
1.本篇所有內容依zmud 5.55版編輯規則編輯完成,不保證其它版本可以使用!
2.本篇各類zmud觸發指令列表使用方式參考自:
http://suzin.pixnet.net/blog/post/9225957 紅貓的重生世界
不保證使用方式的正確性。
3.本篇作者資質魯鈍,int值在500以下,跟石化人差不多,不保證本觸發的編法最完美,
最簡便,效果最好,使用前請三思!
4.本篇作法只保證對作者一帖見效,不保證其它人用了也有效。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.171.176
※ 編輯: hmml 來自: 218.163.171.176 (08/30 09:33)
推 bahatest :推不保證有效 08/30 12:32
推 mishaer :推int值500以下..:D 08/30 13:38
推 Layase1 :7.21不能用還是推 08/30 13:49
推 Layase1 :#if { !%match( %line, "{xxx}" ) } {#cap chat} 08/30 13:55
→ Layase1 :commands加入這行 XX就是想黑名單的keyword了 08/30 13:56
→ hmml :做血肉recall判斷觸發挺合適的! 08/31 02:02
推 Layase1 :順便PO一下用CON算MOB血量的觸發吧 08/31 22:22