Mud 游戏代码分析:检测 bug 和逻辑问题
该段代码似乎没有明显的 bug,但需要注意以下几点:
-
第一行的判断条件应该是
if (clonep(obj)),即如果 obj 是个 clone 对象,则执行下面的代码。 -
第二个 if 语句中,
no_drop应该是个变量,需要加上=进行赋值操作。 -
最后一个 if 语句中,应该将
obj->query("equipped")的返回值转换为字符串再进行判断,即switch (to_string(obj->query("equipped")))。 -
可以考虑在第二个 if 语句中添加一个 else 分支,返回一个成功的信息。
-
可以考虑在最后一个 if 语句中添加一个 else 分支,返回一个成功的信息。
{
write(obj->query('name') + '化作一道流光消失了!!\n');
destruct(obj);
return 1;
}
if (wiz_level(me) < 3 && obj->query('no_drop'))
return notify_fail( obj->name() + '不能被丢弃。\n');
if (no_drop = environment(me)->query('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->name() + '必须脱下来才能丢掉。\n');
return 0;
case 'wielded':
tell_object(me, obj->name() + '必须解除装备才能丢掉。\n');
return 0;
}
}
原文地址: https://www.cveoy.top/t/topic/m5PH 著作权归作者所有。请勿转载和采集!