作者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)
1F:推 bahatest :推不保证有效 08/30 12:32
2F:推 mishaer :推int值500以下..:D 08/30 13:38
3F:推 Layase1 :7.21不能用还是推 08/30 13:49
4F:推 Layase1 :#if { !%match( %line, "{xxx}" ) } {#cap chat} 08/30 13:55
5F:→ Layase1 :commands加入这行 XX就是想黑名单的keyword了 08/30 13:56
6F:→ hmml :做血肉recall判断触发挺合适的! 08/31 02:02
7F:推 Layase1 :顺便PO一下用CON算MOB血量的触发吧 08/31 22:22