检测Bug !clonepobj writeobj-queryname+化作一道流光消失了!!n; destructobj; return 1; if wiz_levelme 3 && obj-queryno_drop return notify_fail obj-name + 不能被丢弃。n; if no_drop = environmentme-queryno_drop ret
可能的Bug:
-
第一行代码中的"!"符号可能是多余的,因为clonep()函数返回的是一个布尔值,应该不需要再取反。
-
第三行中的"obj->name()"可能会导致错误,因为如果obj已经被析构了,那么调用其name()函数就会报错。
-
第四行中的"no_drop"应该是一个赋值操作,而不是一个比较操作,应该改为"no_drop = environment(me)->query("no_drop");"。
-
最后一段代码中,应该在每个case语句的末尾加上"break;",否则会继续执行下一个case语句中的代码。
修改建议:
-
第一行代码中的"!"符号可以去掉。
-
第三行代码中的"obj->name()"可以改为"obj->query("name")",这样即使obj已经被析构了也不会报错。
-
第四行代码中的"no_drop"应该改为一个赋值操作,即"no_drop = environment(me)->query("no_drop");"。
-
最后一段代码中,每个case语句末尾加上"break;",以避免执行下一个case语句中的代码。
修改后的代码:
if (clonep(obj)) { write(obj->query("name")+"化作一道流光消失了!!\n"); destruct(obj); return 1; }
if (wiz_level(me) < 3 && obj->query("no_drop"))
return notify_fail( obj->query("name") + "不能被丢弃。\n");
no_drop = environment(me)->query("no_drop");
if (no_drop)
return notify_fail(stringp(no_drop) ? no_drop : "这里东西丢弃下去也看不见。\n");
if(!wizardp(me)){
switch ((string)obj->query("equipped"))
{
case "worn":
tell_object(me, obj->query("name") + "必须脱下来才能丢掉。\n");
return 0;
break;
case "wielded":
tell_object(me, obj->query("name") + "必须解除装备才能丢掉。\n");
return 0;
break;
}
}
原文地址: https://www.cveoy.top/t/topic/bzTL 著作权归作者所有。请勿转载和采集!