mud开发之绑定物品

设想前提

最近在负责侠客行100封装移植的一些工作,发现重复的物件和写法相当的多,实际上发现bug还是蛮多的,特别是可能是由于时代技术变化的原因各种不符合目前开发原则也比较多,一个实现玩家死亡后清除自身所有的物品的功能居然写在了8个不同的地点。 最近的需求是生成物品可以绑定的功能。 我观察了许许多多的mud,例如a是一个物品,要生成a的绑定物品,它们的写法是复制一个a的文件,并在文件中set一堆属性。这样明显是繁杂的,并且当a的功能改变是。还需要去改变这个绑定的文件。

做出改变

开发思路

由于目前mud都是需要上下线的,所有的物品都是单独从文件拎出来,生成到内存,并放入到环境中的,所有关于绑定物品的设定不能够直接以虚拟物件的形式保留,应当让需要绑定的物品以新的文件形式存起来,也就是说需要文件b继承于a,建立一个obj_bind目录用于存放绑定文件。用new_bind接口生成或建立绑定物品。

代码测试

//生成一个绑定物品 输入的路径不需要改变,但是开头必须要带/
object new_bind(string path)
{
    string new_path = "/common/bind_obj" + path + ".c"; 
    object obj;
    if (file_size(new_path) == -1)
    {
        string str;
        assure_file(new_path);
        str = read_file("/common/bind_obj/reference");
        str = replace_string(str,"path",path);
        write_file(new_path,str,1);
    }

    obj = new(new_path);
    return obj;
}

继承模板

inherit "path";

void create()
{
    ::create();
    set("no_sell",1);
    set("no_give",1);
    set("no_drop",1);
    set("bind_obj",1);
    set("name",this_object()->query("name") + "[绑]");
}
京ICP备13031296号-4