这段代码用于处理玩家丢下物品的逻辑,其中包含了检测bug的部分。我们来看一下:

  1. 第一段代码是处理玩家丢下所有物品的逻辑,但是只有巫师可以这样操作。这里需要注意的是,如果玩家不是巫师,应该返回一个错误提示,而不是直接退出函数。

  2. 第二段代码是处理玩家丢下指定物品的逻辑,其中需要检测玩家身上是否有这个物品。这里需要注意的是,如果玩家身上没有这个物品,应该返回一个错误提示,而不是直接退出函数。

  3. 最后一段代码是处理玩家丢下物品的具体逻辑,其中需要注意的是,如果玩家正在骑乘物品,需要先下马再丢下物品。但是,这段代码中并没有检测玩家是否正在骑乘物品。这里需要加上一个检测,如果玩家正在骑乘物品,应该先下马再丢下物品。

综上所述,这段代码中需要加上一些错误处理和检测逻辑,以确保玩家的操作是合法的,并且不会出现bug。

{
	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;
	}

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

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