             Hell 虚拟仿真函数(simul_efun)说明文件

以下按字母顺序列出 hell 代码中 /adm/simul_efun/ 目录下提供的
所有 simul_efun 的说明，其最终解释权属于这些函数的原作者及修
改者。

其中类似“users(3)”中的 3 表示此函数为 efun，4 则表示此函数
为 mudlib 内置的与 MudOS 连接的函数，如 receive_message 等。
而 5 就表示虚拟仿真函数(simul_efun)。

------------------------------------------------------------
all_interactive(5)      HellCode.2001          (23 Feb 2002)
------------------------------------------------------------
名称：
        all_interactive() - 返回所有可互动(interactive)玩家
                            的数组
语法：
        object *all_interactive(void)
        物件 *all_interactive(无参数)
用法：
        考虑到原来的 efun::users() 名不副实，返回的是所有未
        断线(link dead)的玩家列表而非所有的玩家列表，Hell中
        用 simul_efun users() 来替换了 efun users()，而原来
        efun users() 的功能，则留给这个 all_interactive()来
        完成。即返回一个包括所有可互动玩家的物件数组。
        例如：object *obs = all_interactive() 可能得到
              obs 为 ({ "clone/user/user#1 ("阿福")", });
参考：
        users(3), users(5), playerp(5)
文件：
        /adm/simul_efun/user.c
------------------------------------------------------------

------------------------------------------------------------
append_color(5)         HellCode.2001          (23 Feb 2002)
------------------------------------------------------------
名称：
        append_color() - 在名称标示符后面加上应有的颜色
语法：
        string append_color(string arg, string default_color)
        字符串 append_color(字符串 arg, 字符串 default_color)
用法：
        在一段 message_vision、message_sort 或者 message_com
        bat 等信息中会使用到 $N、$n 和 $w 这样的转义字符以代
        表将被替换的人名或者物品名，当这段消息本身带有颜色，
        而被替换的名称也带有颜色，这段消息的颜色就将因为被替
        换名称最后的 NOR 而无法继续下去。 因此，这个函数就是
        在 $N、$n 和 $w 后面加上这段信息应有的颜色以保证整段
        的外观不受影响。例如：
        append_color("$N点了点头。", HIC) = "$N" HIC "点了点
        头。"。
        尽管如此，我们还是建议你养成良好的编码习惯，在各类名
        称标示符后面自觉加上原句应有的颜色，而不是使用这个显
        得有点冗长的函数。
参考：
        replace_string(3)
文件：
        /adm/simul_efun/util.c
------------------------------------------------------------

------------------------------------------------------------
appromix_time(5)        HellCode.2001          (23 Feb 2002)
------------------------------------------------------------
名称：
        appromix_time() - 用文字描述一段按秒计算的时间
语法：
        string appromix_time(int n, int flag)
        字符串 appromix_time(整数 n, 整数 flag)
用法：
        appromix_time() 用于将一段按秒计的时间转换为文字描述，
        例如：
        string s = appromix_time(0)，将得到 s 为“马上”；
        string s = appromix_time(1)，将得到 s 为“一秒钟”。
        但要注意的是，当时间不能被 6 * 10 ^ n 整除时，将仅仅
        返回下一级的时间，例如 appromix_time(3661) = "一小时
        零一分钟" 而不是 "一小时零一分钟零一秒钟"。
        当使用了 flag 时，返回的内容会更像与人对话的形式，在
        返回的最后加上“之后”或“就”这样的词。例如：
        appromix_time(0, 1) = "马上就"，
        appromix_time(1, 1) = "一秒钟以后"。
参考：
        chinese_number(5)
文件：
        /adm/simul_efun/util.c
------------------------------------------------------------

------------------------------------------------------------
atoi(5)                 HellCode.2001          (23 Feb 2002)
------------------------------------------------------------
名称：
        atoi() - 将字符串(string)形式的数字转换为整数(int)形
                 式
语法：
        int atoi(string str);
        整数 atoi(字符串 str);
用法：
        atoi()  仅仅是为了将用 sscanf() 来转换的语句简化而写，
        它将传入的字符串参数解析为数字，例如：
        int i = atoi("123")，将得到 i 为 123。
        如果传入的非字符串或者此字符串为一无法解析的字符串，
        将返回 0。例如：
        int i = atoi("str")，将得到 i 为 0。
参考：
        sscanf(3)
文件：
        /adm/simul_efun/atoi.c
------------------------------------------------------------

------------------------------------------------------------
assure_file(5)          HellCode.2001          (07 Apr 2002)
------------------------------------------------------------
名称：
        assure_file() - 确认指定文件所需目录的存在
语法：
        void assure_file(string file)
        无返回值 assure_file(字符串 file)
用法：
        因为无法在一个并不存在的目录下创建新的文件，所以在新
        文件创建前， 常使用 assure_file() 采用递归的方法检查
        是否存在指定文件所需的路径。例如：
        assure_file("/u/jjgod/workroom.c")，将检查是否存在“
        /u/”目录，否则就新建此目录，然后检查是否存在“jjgod”
        目录，若不存在亦新建这一目录。 直至达到了 workroom.c
        所在的目录为止。
参考：
        mkdir(3), file_size(3)
文件：
        /adm/simul_efun/file.c
------------------------------------------------------------

------------------------------------------------------------
author_file(5)          HellCode.2001          (07 Apr 2002)
------------------------------------------------------------
名称：
        author_file() - 获得 /u/ 目录下文件的作者
语法：
        string author_file(string file)
        字符串 author_file(字符串 file)
用法：
        author_file() 的使用在目前似乎已经荒废，考虑到这段程
        序实际上非常简单，大多数巫师宁愿自己重新写一行程序来
        代替这个函数。 而事实上因为通常的 mudlib 的 /u/ 下目
        录都已经不用字母首字来分开不同巫师的工作目录了，所以
        这个函数也变得形同鸡肋。例如：
        string name = author_file("/u/j/jjgod/workroom.c")，
        将得到 name 为 jjgod。
参考：
        sscanf(3), creator_file(5)
文件：
        /adm/simul_efun/object.c
------------------------------------------------------------

------------------------------------------------------------
base_name(5)            HellCode.2001          (07 Apr 2002)
------------------------------------------------------------
名称：
        base_name() - 获得物件的实际文件名
语法：
        string base_name(object ob)
        字符串 base_name(物件 ob)
用法：
        考虑到复制 (clonep)的物件使用 file_name() 获得的文件
        名为 /clone/food/jitui.c#123 的形式， base_name() 可
        以用于获得 # 前面的实际文件名。例如：
        string file = base_name(clone/user/user#1 ("阿福"))，
        将得到 file 为 /clone/user/user.c。
参考：
        file_name(3)
文件：
        /adm/simul_efun/object.c
------------------------------------------------------------
