2011-12-03 | #1 |
高级会员
注册: 08年04月11日
来自: 盘丝洞
帖子: 311
声望力: 20
声望:
50
现金:29两梁山币
资产:1245两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
无心跳处理办法
【 在 mudder (袖里乾坤) 的大作中提到: 】 问一个问题 如果遇到no heart beat的时候 除了update之外 有没有彻底解决的办法? 【 在 cloner (!!!!!!!) 的大作中提到: 】 set_heart_beat(1) 这是个efun. 所以要从外部打开一个ob的心跳,需要提供 一个接口.比如在NPC里这么写一段: void turn_heart_beat(int flag) { set_heart_beat(flag>0); return; } 以后要改变心跳状态就ob->turn_heart_beat(flag)了. ~~~~~可是还是必须有wiz在线才能做到呀 【 在 cloner (!!!!!!!) 的大作中提到: 】 你可以做个守护程序啊,hehe ~~~~那得每隔一段时间搜索一次 即浪费资源,又影响速度 很划不来的说hoho~~ 发信人: cloner (!!!!!!!), 信区: Mud_Builder 标 题: Re: 来来来,关税一篇 发信站: 一塌糊涂 BBS (Sun May 6 10:20:32 2001) 资源和速度的问题,看你怎么写代码了, 小心的话,不会有什么影响的。 npc的心跳不检查的话,光user_ob就少的 很了,一个children,再分几次进行处理, 玩家绝对感觉不到速度的变化。 如果你觉得守护程序call_out耗资源, 也可以用 room的reset()来执行这个, 这样只需要加入几行代码就可以了。 发信人: poet (消逝的回忆), 信区: Mud_Builder 标 题: Re: 来来来,关税一篇 发信站: 一塌糊涂 BBS (Sun May 6 16:24:36 2001) 一般都是某些代码有问题导致失去心跳的,直接给他心跳, 如果造成其没有心跳的问题并没有解决,岂不是成了死循环? children 是efun,在这里的使用方法, 是对 USER_OB 查找其复制出的所有物件, 因为一般的Mudlib中都有cron的,把这个代码加到cron中就可以了。 反正cron是要运行的,你加一点东西又不会占用更多的call_out资源。 至于NPC,就只好委屈一下了,如果你想累垮CPU,要检查也没关系的。 不过出现no_heart_beat的情况都有记录的,你把产生问题的原因从 程序上解决就可以,不用自动恢复其心跳。 |
|