20
2017
02

系统刷新与内存清除分析

原作者:未知

       有关系统更新一直是玩家乃至于新巫师们关心的问题。比如,为何每隔15分钟大多数房间里杀死的NPC会重生?跑到别处或被玩家背到别处的NPC怎么会跑回去?为什么有的NPC跑不回去?什么有的东西会重生?为什么又有的东西只要别的玩家放在身上?等等。
  目前主流MUDLIB都是ES系列的。从ES系列沿袭下来的更新都是通过ROOM的更新实现的。而ROOM的更新则是由MUDOS里的设置每隔一定时间(一般是15分钟)调用一次所有的有reset()函数的房间。而这个reset()函数则写在ROOM的标准继承文件里面。下面我们则来看看ROOM是如何实现房间里的生物、物品的重生或更新:
  在写这篇文章之前,正好在网上看到darks兄写的《ROOM的结构》,于是我这篇文章的不少地方也就写得很顺畅了,有些直接引用了《ROOM》一文的一些内容。为了尊重原作者,凡是引用或出自darks兄的原文内容我都用“”与绿色标出:
  ROOM的标准文件由于MUDLIB的不同,放在目录路径也不同,但大多情况下也就是/inherit/room/下或者与/obj/room/下两种可能而已。反正不检查一下在/include/下的globals.h,看这个文件里ROOM是定义在哪里就可以了,下面来看一看room.c的程序详解:

«1»