北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 19429|回复: 15

[MUSH小技巧] 关于触发的扳机

[复制链接]
发表于 2010-5-4 17:03:25 | 显示全部楼层 |阅读模式
在MUSH中,所有的触发不是在文字匹配后立即就触发执行的,而是在文字匹配后,并且整行结束换到新行时,触发才被执行。

举个小例子:
假设已经做好一个Trigger匹配文字:“你将剩下的烤鸡腿吃得干干净净。”,执行 "drop bone"
在MUD中输入如下命令,测试触发的反应:

  1. .Simulate("你将剩下的烤鸡腿吃得干干净净。")
复制代码

  1. .Simulate("你将剩下的烤鸡腿吃得干干净净。\n")
复制代码
你会发现,显示第一句的时候,触发不会被执行,但按下回车后触发就会被执行了;而第二句的时候触发会立即被执行。

这里\n也就是“回车”,就是触发的扳机。

今天看到hba的帖子,问到一个问题:
一些大段输出的文字,MUD中需要做翻屏处理,如:

== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)

但此时行末由于没有\n(也就是回车),该触发不能被执行,去Gammon的网站上查了一下,发现Gammon原来早有解决办法——插件。

以下代码是我根据Gammon论坛上的帖子修改的(原帖地址:http://www.gammon.com.au/forum/bbshowpost.php?bbsubject_id=8583):
  1. function OnPluginPacketReceived (s)
  2.   return (string.gsub (s, "未完继续.*$", "%1\n"))
  3. end -- function OnPluginPacketReceived
复制代码
其核心是OnPluginPacketReceived () 可以在MUSH处理接收到的包之前,对该包进行处理。

有了这个函数,就可以在接收到类似“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”的包后,自动为其增加一个“回车”做为触发的扳机了。

对于其它的类似情况,可以把MUSH的“Debug Packets”模式打开,抓取其原始包后,分析一下,再在以上代码中把“未完继续.*$”修改一下即可。



附件是完整的针对“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”自动增加触发扳机的插件。


不过这个插件仍然有个小问题,就是当输出文字过多,SERVER发过来的包会被自动截断,如果正好截断的位置是“未完继续”几个字,换行就不会出现了。

[ 本帖最后由 ddid 于 2010-5-4 05:05 PM 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 17:24:53 | 显示全部楼层
第 13 行: Plugin requires MUSHclient version 4.51 or above (problem in this file)
额,mushclient要升级了。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 17:27:45 | 显示全部楼层
进来学习
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 19:04:11 | 显示全部楼层
原帖由 hba 于 2010-5-4 05:24 PM 发表
第 13 行: Plugin requires MUSHclient version 4.51 or above (problem in this file)
额,mushclient要升级了。。。


直接把

   requires="4.51"


这行改成你的版本号就行了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 19:25:18 | 显示全部楼层
在设置里面的appearance----output里面勾选“convert iac eor/ga to new line”
这样可以解决“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”的问题。
经测试下面这个触发一切正常。

      enabled="y"
   match=".+未完继续.+"
   regexp="y"
   sequence="100"
  >
  a
  
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 19:53:18 | 显示全部楼层
原帖由 vase 于 2010-5-4 07:04 PM 发表


直接把



这行改成你的版本号就行了


。。。刚安装了451了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-5-4 19:56:15 | 显示全部楼层
原帖由 hba 于 2010-5-4 19:53 发表


。。。刚安装了451了


嘿嘿,阴谋得逞了,4.51有画地图的模块,好好研究一下吧……
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 19:59:27 | 显示全部楼层
原帖由 maper 于 2010-5-4 07:25 PM 发表
在设置里面的appearance----output里面勾选“convert iac eor/ga to new line”
这样可以解决“== 未完继续 46% == (q 离开,b 前一页,其他继续下一页)”的问题。
经测试下面这个触发一切正常。

  
  a
  


额,昨晚试了半天,咋没留意这个选项,确实没问题了。
帝德的也行,只是还有很小几率断句,当然仅限于“== 未完继续”的语句,但这个思路很有启发性。
再次鸣谢三位老师。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 19:59:52 | 显示全部楼层
原帖由 hba 于 2010-5-4 07:53 PM 发表


。。。刚安装了451了


太新的东西不一定好用呀......
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-4 20:02:08 | 显示全部楼层
原帖由 ddid 于 2010-5-4 07:56 PM 发表


嘿嘿,阴谋得逞了,4.51有画地图的模块,好好研究一下吧……


哦哦,研究研究。不过我英文水平仅限于代码编程级别,而看文章就有点吃力了,还望诸位老师多多翻译一些精彩文章顺便讲讲心得。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-25 05:18 AM , Processed in 0.013967 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表