【 在 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的情况都有记录的,你把产生问题的原因从
程序上解决就可以,不用自动恢复其心跳。