【 在 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~~
资源和速度的问题,看你怎么写代码了,
小心的话,不会有什么影响的。
npc的心跳不检查的话,光user_ob就少的
很了,一个children,再分几次进行处理,
玩家绝对感觉不到速度的变化。
如果你觉得守护程序call_out耗资源,
也可以用 room的reset()来执行这个,
这样只需要加入几行代码就可以了。
一般都是某些代码有问题导致失去心跳的,直接给他心跳,
如果造成其没有心跳的问题并没有解决,岂不是成了死循环?
children 是efun,在这里的使用方法,
是对 USER_OB 查找其复制出的所有物件,
因为一般的Mudlib中都有cron的,把这个代码加到cron中就可以了。
反正cron是要运行的,你加一点东西又不会占用更多的call_out资源。
至于NPC,就只好委屈一下了,如果你想累垮CPU,要检查也没关系的。
不过出现no_heart_beat的情况都有记录的,你把产生问题的原因从
程序上解决就可以,不用自动恢复其心跳。
尊重作者 转载请注明出处52mud.com