[MUSH小技巧] 关于触发的扳机
在MUSH中,所有的触发不是在文字匹配后立即就触发执行的,而是在文字匹配后,并且整行结束换到新行时,触发才被执行。举个小例子:
假设已经做好一个Trigger匹配文字:“你将剩下的烤鸡腿吃得干干净净。”,执行 "drop bone"
在MUD中输入如下命令,测试触发的反应:
.Simulate("你将剩下的烤鸡腿吃得干干净净。")
.Simulate("你将剩下的烤鸡腿吃得干干净净。\n")你会发现,显示第一句的时候,触发不会被执行,但按下回车后触发就会被执行了;而第二句的时候触发会立即被执行。
这里\n也就是“回车”,就是触发的扳机。
今天看到hba的帖子,问到一个问题:
一些大段输出的文字,MUD中需要做翻屏处理,如:
== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)
但此时行末由于没有\n(也就是回车),该触发不能被执行,去Gammon的网站上查了一下,发现Gammon原来早有解决办法——插件。
以下代码是我根据Gammon论坛上的帖子修改的(原帖地址:http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=8583):function OnPluginPacketReceived (s)
return (string.gsub (s, "未完继续.*$", "%1\n"))
end -- function OnPluginPacketReceived其核心是OnPluginPacketReceived () 可以在MUSH处理接收到的包之前,对该包进行处理。
有了这个函数,就可以在接收到类似“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”的包后,自动为其增加一个“回车”做为触发的扳机了。
对于其它的类似情况,可以把MUSH的“Debug Packets”模式打开,抓取其原始包后,分析一下,再在以上代码中把“未完继续.*$”修改一下即可。
附件是完整的针对“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”自动增加触发扳机的插件。
不过这个插件仍然有个小问题,就是当输出文字过多,SERVER发过来的包会被自动截断,如果正好截断的位置是“未完继续”几个字,换行就不会出现了。
[ 本帖最后由 ddid 于 2010-5-4 05:05 PM 编辑 ] 第 13 行: Plugin requires MUSHclient version 4.51 or above (problem in this file)
额,mushclient要升级了。。。 yct23 进来学习 原帖由 hba 于 2010-5-4 05:24 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
第 13 行: Plugin requires MUSHclient version 4.51 or above (problem in this file)
额,mushclient要升级了。。。
直接把
requires="4.51"
这行改成你的版本号就行了ttk_03 在设置里面的appearance----output里面勾选“convert iac eor/ga to new line”
这样可以解决“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”的问题。
经测试下面这个触发一切正常。
<triggers>
<trigger
enabled="y"
match=".+未完继续.+"
regexp="y"
sequence="100"
>
<send>a</send>
</trigger>
</triggers> 原帖由 vase 于 2010-5-4 07:04 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
直接把
这行改成你的版本号就行了ttk_03
。。。刚安装了451了ttk_13 原帖由 hba 于 2010-5-4 19:53 发表 http://pkuxkx.com/forum/images/common/back.gif
。。。刚安装了451了ttk_13
嘿嘿,阴谋得逞了,4.51有画地图的模块,好好研究一下吧…… 原帖由 maper 于 2010-5-4 07:25 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
在设置里面的appearance----output里面勾选“convert iac eor/ga to new line”
这样可以解决“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”的问题。
经测试下面这个触发一切正常。
a
额,昨晚试了半天,咋没留意这个选项,确实没问题了。ttk_01
帝德的也行,只是还有很小几率断句,当然仅限于“== 未完继续”的语句,但这个思路很有启发性。
再次鸣谢三位老师。 原帖由 hba 于 2010-5-4 07:53 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
。。。刚安装了451了ttk_13
太新的东西不一定好用呀...... 原帖由 ddid 于 2010-5-4 07:56 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
嘿嘿,阴谋得逞了,4.51有画地图的模块,好好研究一下吧……
哦哦,研究研究。不过我英文水平仅限于代码编程级别,而看文章就有点吃力了,还望诸位老师多多翻译一些精彩文章顺便讲讲心得。
页:
[1]
2