该段代码没有明显的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;
	}
MUD游戏代码分析:检测Bug与逻辑运行情况

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

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