level 1
coorabcoorab
楼主
最近玩的书剑,刚开始学源代码,有些东西晦涩不清楚,请高手指点
下面是华山思过崖siguoya.c文件的编码中的一段
set("exits", ([
"eastdown" : __DIR__"xiaolu2",
"enter" : __DIR__"hole",
]));
set("objects", ([
__DIR__"npc/linghuchong" : 1,
]));
int valid_leave(object me, string dir)
{
object *inv = deep_inventory(me);
object *obj;
obj = filter_array(inv,(:get_object:));
if( sizeof(obj) && dir =="enter" )
return notify_fail("你负重过多,行动过于笨拙,脑门一下撞在山壁上。\n");
if (me->query("fengset") && dir=="enter" ) {
me->move(__DIR__"jiabi");
return notify_fail("你循着高速的捷径一下子进入了夹山壁。\n");
}
return ::valid_leave(me, dir);
}
还有就是上面提到的出口xiaolu2的代码中的init函数
void init()
{
object me = this_player();
if( me->query("family")
&& me->query("family/family_name") != "华山派"
&& me->query("fengset")){
me->delete("fengset");
}
}
"fengset"应该是与风清扬相关的一个标记,quest成功是会赋值为1。
此时,玩家可直接在思过崖enter进夹山壁去拜风为师。
疑问如下:1)me->query("fengset")这个标记会不会在玩家quit时,系统delete掉?
2) if( me->query("family")
&& me->query("family/family_name") != "华山派"
&& me->query("fengset")){
me->delete("fengset");
这段代码不是很理解。
第一个条件me->query("family")是说玩家是否已经有师门,有的话判断为真?
第二个条件me->query("family/family_name") != "华山派"
是说玩家的师门是否不是华山,有的话判断为真?
第三个条件me->query("fengset")
是说玩家的"fengset"标记是否不为0?不为0的话判断为真?
特别是第三个条件,要是"fengset"不为0的话,后面的执行语句me->delete("fengset")岂不是把这个标记删掉了。那风弟子下次岂不是进不了夹山壁了?
2014年10月17日 01点10分
1
下面是华山思过崖siguoya.c文件的编码中的一段
set("exits", ([
"eastdown" : __DIR__"xiaolu2",
"enter" : __DIR__"hole",
]));
set("objects", ([
__DIR__"npc/linghuchong" : 1,
]));
int valid_leave(object me, string dir)
{
object *inv = deep_inventory(me);
object *obj;
obj = filter_array(inv,(:get_object:));
if( sizeof(obj) && dir =="enter" )
return notify_fail("你负重过多,行动过于笨拙,脑门一下撞在山壁上。\n");
if (me->query("fengset") && dir=="enter" ) {
me->move(__DIR__"jiabi");
return notify_fail("你循着高速的捷径一下子进入了夹山壁。\n");
}
return ::valid_leave(me, dir);
}
还有就是上面提到的出口xiaolu2的代码中的init函数
void init()
{
object me = this_player();
if( me->query("family")
&& me->query("family/family_name") != "华山派"
&& me->query("fengset")){
me->delete("fengset");
}
}
"fengset"应该是与风清扬相关的一个标记,quest成功是会赋值为1。
此时,玩家可直接在思过崖enter进夹山壁去拜风为师。
疑问如下:1)me->query("fengset")这个标记会不会在玩家quit时,系统delete掉?
2) if( me->query("family")
&& me->query("family/family_name") != "华山派"
&& me->query("fengset")){
me->delete("fengset");
这段代码不是很理解。
第一个条件me->query("family")是说玩家是否已经有师门,有的话判断为真?
第二个条件me->query("family/family_name") != "华山派"
是说玩家的师门是否不是华山,有的话判断为真?
第三个条件me->query("fengset")
是说玩家的"fengset"标记是否不为0?不为0的话判断为真?
特别是第三个条件,要是"fengset"不为0的话,后面的执行语句me->delete("fengset")岂不是把这个标记删掉了。那风弟子下次岂不是进不了夹山壁了?