北大侠客行MUD论坛

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

如何让一个coroutine异常终止

[复制链接]
发表于 2010-12-8 15:32:06 | 显示全部楼层 |阅读模式
有关coroutine的函数:
   create , wrap, yield, resume,status,running
怎么就没有一个函数,可以从外部强制某个正在挂起的coroutine静悄悄地消亡呢。
这个很重要,当然可以按那个重载的快捷键,也可以执行DoCommand("ReloadScriptFile"),但这样做,影响面大,且不好控制。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-12-8 16:08:23 | 显示全部楼层
如果楼主在研究wait在mush中的实现,可以参考我的脚本环境。
1、线程法wait,不太方便(我也不清楚,用过几次,经常出现楼主的问题。)
2、时间timer法,受到网速问题影响很大。
3、自定义触发方式,目前我采用的方法。还算稳定。
如果想单存的关闭触发群,也有帖子参考。

至于强行关闭线程,估计得调用api吧?不懂,关注。。。

[ 本帖最后由 littleknife 于 2010-12-8 04:11 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-12-8 16:10:47 | 显示全部楼层
楼上修正了wait的bug?我学习一下
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-12-8 16:12:42 | 显示全部楼层
wait我由于没有深入研究线程,所以放弃了采用线程方法解决wait的问题。
目前的方法是自定义触发的方式解决。

楼主说的wait,bug指的是什么意思?是mush自己提供的wait.lua吗?(我没用它,所以不了解。)
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-12-8 16:13:36 | 显示全部楼层
litteknife,你的自定义触发方式,是个什么思想?学习一下
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-12-8 16:15:21 | 显示全部楼层
wait.lua,确实存在bug,当一个mc只打开一个窗口时没有问题,打开多个窗口就会发生线程丢失的情况
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-12-8 16:15:56 | 显示全部楼层
其实也不是我的发明,是前辈们的杰作。核心思想就是用set命令自己设计触发,比如wait
激活:set no_more walkgo,"设置环境变量....";当我见到这个触发再进行动作。比如行走,比如暂停。再次见到这个触发,调用函数行走。

wait功能,就是用DoAfterSpecial(waittime,"set no_more walkgo",12)

[ 本帖最后由 littleknife 于 2010-12-8 04:18 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-12-8 16:23:22 | 显示全部楼层
如果可以理解成普通的象zmud式的触发的话,行是可行的,zmud rbt也是采用这种方式。只是这样会丧失协程wait伟大的功能。有了wait,事件的处理才会如行云流水,才能保证功能模块的多聚合少耦合,使得复杂的事件处理变得简单封闭和独立。我宁愿一个mc只打开一个窗口,也不愿意抛弃wait啊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-12-8 16:29:41 | 显示全部楼层
原帖由 myu 于 2010-12-8 04:23 PM 发表
如果可以理解成普通的象zmud式的触发的话,行是可行的,zmud rbt也是采用这种方式。只是这样会丧失协程wait伟大的功能。有了wait,事件的处理才会如行云流水,才能保证功能模块的多聚合少耦合,使得复杂的事件处理变 ...


这种自定义触发方式完全可以用于zmud(当然由于zmud的wait使得它被忽视了。)
需深入剖析wait的作用:zmud中的wait,无非是1、一个命令后wait然后在另一个命令罢了。2、自写程序中对各个动作的间断(比如ask后的wait 等等。)

这样理解后即可发现,mush完全可以胜任。1。wait后执行的命令完全可以用自定义触发后在执行(比如npc是否在场等等)。2、自定义动作后的间断,由于mush的强大脚本支持,完全可以解决,当然可以自定义触发解决此类问题。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-12-8 16:34:19 | 显示全部楼层
zmud式的触发,缺陷就是使各功能模块纠缠不清,缺乏独立性和封闭性。当机器人很复杂时,容易出BUG,不便于维护,不便于扩充。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 09:57 PM , Processed in 0.012384 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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