MUD游戏代码分析:检测Bug与逻辑运行情况
该段代码没有明显的bug,逻辑也能够正常运行。当输入参数为'all'时,会将当前玩家身上的所有物品都丢掉;当输入参数为具体物品名称时,会将该物品丢掉。在丢掉物品的过程中,如果当前玩家正在骑乘物品,会先从该物品上跳下来再进行丢弃操作。
if (arg == 'all')
{
if(!wizardp(me))
return notify_fail("只有巫师可以这样操作。\n");
inv = all_inventory(me);
for(amount = 0, i = 0; i < sizeof(inv); i++)
{
if (! living(me)) break;
amount += do_drop(me, inv[i], 1);
}
if (! amount)
{
write("你什么都没有丢掉。\n");
return 1;
}
message("vision", me->name() + "丢下了一堆东西。\n", environment(me), ({ me }));
write("丢完了。\n");
return 1;
}
if (! objectp(obj = present(arg, me)))
return notify_fail("你身上没有这样东西。\n");
do_drop(me, obj, 0);
return 1;
}
int do_drop(object me, object obj, int raw)
{
mixed no_drop;
object riding;
if (obj == (riding = me->query_temp("is_riding")))
{
message_vision("$N从$n背上飞身跳下。\n", me, riding);
me->delete_temp("is_riding");
obj->delete_temp("is_rided_by");
obj->move(environment(me));
return 1;
}
原文地址: http://www.cveoy.top/t/topic/m5Om 著作权归作者所有。请勿转载和采集!