hasea 发表于 2013-11-28 16:26:06

Mushclient中wait.lua模块的扩展

本帖最后由 hasea 于 2013-11-28 04:31 PM 编辑

这些时间在mushclient玩lua。相对无数回调函数的恶心,mushclient中的wait.lua模块还是包装得很爽快的。但总还是有些不如意的地方。所以便动手作了如下扩展。我对这个扩展做个简单的说明。这种小众的东西,估计也就放在这里才能引起别人的兴趣了。
代码示例用的是图片,这里的论坛代码显示功能大差。

1、wait.regexp可以使用多行触发,正则字符串可以用列表table的格式给出。
使用方式如下:



2、增加一种类似于子线程的实现对象
A、一般来说,在mush中,如果想要实现子线程,大约可以如下这样写。当然你也可以使用一堆乱七八糟的回调函数来实现类似功能。


但是这样有个问题。就是主线程关闭后,子线程无法关闭。很多时候这是很讨厌的。

B、扩展模块中的子线程使用方式。主线程中可以关闭自己创建的子线程了。



以下为使用示例。




3、该模块兼容原有模块。

在下学lua和mushclient并没有多久,大约玩了不到1个月。很多东西并不熟悉,如果有错误或是更好的方式的话,请指出。

模块文件,直接覆盖原有文件即可。复制和修改请保留个人信息。



北大侠客行MUD,中国最好的MUD

emyt 发表于 2013-11-28 17:31:25

好东西,看看实际应用效果,mush的一个缺点要被客服了么?

hasea 发表于 2013-11-28 18:27:11

回复 2# yhzzyahoo

hzy

谢谢师父。

hasea 发表于 2013-11-28 18:42:53

本帖最后由 hasea 于 2013-11-28 06:48 PM 编辑

回复 6# huacuoh

这个。。确实是模拟实现。。总不能想让它支持利用多核cpu吧。

只要它的表现行为和子线程差不多。也就行了吧。脚本而已,能有多少要求呢。只为了能在写脚本的时候更方便。

原来wait是利用触发和定时器及lua的协程写的。每个wait.make会有一组对应的触发和定时器。

事实上模块主要的扩展实现目标是使wait.make创造的其中一组触发、定时器、lua的协程对象可以在需要的时候的关闭。

这样便相当于每个wait.make创造一个线程,每个线程的工作互不干扰。然后可以调用close方法来清除一个线程。

nsonline 发表于 2013-11-28 21:44:56

编辑器的着色挺不错,用的什么编辑器?

hasea 发表于 2013-11-28 22:09:06

回复 13# nsonline

SublimeText2。这东西其实我就喜欢那个配色好看。要是vim也弄个这样的配色多好。

nsonline 发表于 2013-11-28 22:18:31

哦~SublimeText啊,传说中土豪专用的编辑器啊!

when 发表于 2013-11-28 22:29:27

学习一下
看sublime2 有免费无限制无限期的试用权,功能有缩水么

hahh 发表于 2013-11-29 03:38:44

高手hzk

cangshu 发表于 2013-11-29 09:12:04

.............完全看不懂。
页: [1] 2 3
查看完整版本: Mushclient中wait.lua模块的扩展