这段代码看起来没有明显的 Bug,并且逻辑也比较清晰。首先判断输入参数是否为'all',如果是,则需要判断玩家是否为巫师,然后将玩家身上所有的物品都丢掉,并给出相应的提示。如果输入参数不是'all',则需要判断玩家身上是否有这个物品,然后将其丢掉,并给出相应的提示。

在 do_drop 函数中,首先判断玩家是否正在骑乘,如果是,则需要让玩家先下马,然后再进行丢弃操作。如果玩家没有骑乘,直接将物品丢弃到当前环境中即可。

需要注意的是,这段代码没有考虑到物品的权限问题。如果某个物品设置了不可丢弃的权限,玩家仍然可以通过这段代码将其丢掉,这可能会导致一些问题。因此,在实际使用中需要注意这一点,并且根据实际需要进行相应的修改。

 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");
		object->delete_temp("is_rided_by");
		object->move(environment(me));
		return 1;
	}
MUD 游戏代码分析:检测 Bug 和逻辑是否正常运行

原文地址: http://www.cveoy.top/t/topic/m5N3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录