shadow() 说明: shadow 直接翻译过来的意思为“影子”、“投影”, 但是这个函数的功能很难用这个意思解释明白,因此 改用“阻隔”这个词来描述更接近此函数的功能。 名称: shadow() - 设定自己的阻隔物件。 语法: int shadow( object ob ); 整数 shadow( 物件 ob ); 用法: 将物件 ob 设定为 this_object() 的阻隔物件。 传回值为 1,则阻隔设定成功,0 设定失败。 valid_shadow() 函数由 MASTER_OB 物件定义。如果 valid_shadow() 传回 1, 则阻隔被允许, 否则阻隔设 定失败。 如果物件 b 是物件 a 的阻隔物件,物件 a 叫做 物件 b 的原物件。所有对原物件 a 的 call_other(func) 函数呼叫,都会被都会被重定向到首先尝试呼叫物件 b 中的函数 func,如果物件 b 中不存在名为 func的 函数,才会再尝试呼叫物件 a 中的名为 func 的函数。 只有阻隔物件才能用 call_other(func) 直接呼叫原物 件的函数。原物件无法以 call_other() 直接呼叫自己 中的函数,原物件中的内部函数呼叫都会被限定在物件 内部本身。 摧毁原物件,其阻隔物件会自动被摧毁。阻隔物件可以 单独摧毁,这时原物件就相当于没有设定过阻隔物件。 利用这个函数,可以在不增加一个物件代码的情况下, 扩展一些其他的功能。尤其可以在运行过程中,灵活的 增加、去除一些特殊的功能。 不过,非要利用“阻隔”其他方法无法替代的情况是很 少的。 说明: 由于原 MudOS 的 shadow 部分有些不合理,使用不 方便,而且存在安全隐患,因此这部分的程序重新写 过,shadow 部分的函数的使用和原 MudOS 提供的函 数有很大的不同,如要在其它 MudOS 支持的游戏中 使用 shadow 请参考它的 MudOS 的说明。 相关函数: query_shadowed(), query_shadowing() by 发现号(Find@tx)