⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 put.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// put.c//星星lywin 2000/6/14日修正buginherit F_CLEAN_UP;int do_put(object me, object obj, object dest);void create() { seteuid(getuid()); }int main(object me, string arg){	string target, item;	object obj, dest, *inv, obj2;	int i, amount;	if(!arg) return notify_fail("你要将什么东西放进哪里?\n");	if( me->is_busy() )		return notify_fail("你上一个动作还没有完成!\n");			if( sscanf(arg, "%s in %s", item, target)!=2 )		return notify_fail("你要给谁什么东西?\n");	dest = present(target, me);	if( !dest || living(dest) ) dest = present(target, environment(me));	if( !dest || living(dest) )		return notify_fail("这里没有这样东西。\n");	if(sscanf(item, "%d %s", amount, item)==2) {		if( !objectp(obj = present(item, me)) )			return notify_fail("你身上没有这样东西。\n");	        if (obj==dest )			return notify_fail("自己放进自己?\n");		if( !obj->query_amount() )			return notify_fail( obj->name() + "不能被分开。\n");         	if( obj->query("dynamic_quest") )			return notify_fail("这个东西不能放?\n");         	if( obj->query("no_put") )			return notify_fail("这个东西不能放?\n");                if( obj->query("weapon_prop") && me->is_exert() &&                        obj == me->query_temp("weapon"))                if( obj->query("weapon_prop") && me->is_perform() &&                        obj == me->query_temp("weapon"))                               return notify_fail("你正在使用"+me->query_perform()+",无法给出"+obj->name()+"。\n");		if( amount < 1 )			return notify_fail("东西的数量至少是一个。\n");		if( amount > obj->query_amount() )			return notify_fail("你没有那么多的" + obj->name() + "。\n");		else if( amount == (int)obj->query_amount() )			return do_put(me, obj, dest);		else {			obj->set_amount( (int)obj->query_amount() - amount );			obj2 = new(base_name(obj));			obj2->set_amount(amount);			return do_put(me, obj2, dest);		}	}	if(item=="all") {		inv = all_inventory(me);		for(i=0; i<sizeof(inv); i++)			if( inv[i] != dest ) do_put(me, inv[i], dest);		write("Ok.\n");		return 1;	}	if(!objectp(obj = present(item, me)))		return notify_fail("你身上没有这样东西。\n");if (!obj) 		return notify_fail("你身上没有这样东西。\n");if (!me) 		return notify_fail("你身上没有这样东西。\n");	        if (obj==dest )			return notify_fail("自己放进自己?\n");//	        if (obj->is_container() )//			return notify_fail("容器不能再放进容器。\n");//	        if (dest->is_container() )//			return notify_fail("容器不能再放进容器。\n");	return do_put(me, obj, dest);}int do_put(object me, object obj, object dest){	if (!dest->is_container() )	{		tell_object(me, dest->name()+"不是容器。你不能把东西放进去。\n");		return 1;	}        if (dest->is_character() &&            sizeof(filter_array(all_inventory(dest), (: ! $1->query("equipped") :))) >= 30)        {                tell_object(me, dest->name() + "里面的东西实在"                            "是太多了,你没法再放东西了。\n");                return 1;        } else        if (dest->is_container() && sizeof(all_inventory(dest)) >= 30)        {                tell_object(me, dest->name() + "里面的东西实在"                            "是太多了,你先好好整理整理吧。\n");                return 1;        }        if( obj->query("winner") )	{		tell_object(me, "你不能把"+obj->name()+"放进去。\n");		return 1;	}	if( obj->query("no_get") )	{		tell_object(me, "你不能把"+obj->name()+"放进去。\n");		return 1;	}	if( obj->query("dynamic_quest") )	{		tell_object(me, "你不能把"+obj->name()+"放进去。\n");		return 1;	}	if( obj->query("no_put") )	{		tell_object(me, "你不能把"+obj->name()+"放进去。\n");		return 1;	}	if( obj->query("id") == "corpse" )	{		tell_object(me, "你不能把"+obj->name()+"塞进去。\n");		return 1;	}        if(obj->is_character())	{		tell_object(me, "你不能把"+obj->name()+"塞进去。\n");		return 1;	}	if( userp(obj) )	{		tell_object(me, "你不能把"+obj->name()+"塞进去。\n");		return 1;	}        if( obj->query("weapon_prop") && me->is_exert() &&            obj == me->query_temp("weapon"))                 return notify_fail("你正在使用"+me->query_exert()+",无法给出"+obj->name()+"。\n");        if( obj->query("weapon_prop") && me->is_perform() &&            obj == me->query_temp("weapon"))                 return notify_fail("你正在使用"+me->query_perform()+",无法给出"+obj->name()+"。\n");	if( obj->move(dest) ) {		message_vision( sprintf("$N将一%s%s放进%s。\n",			obj->query("unit"), obj->name(), dest->name()),			me );		me->save();		return 1;	}	else return 0;}int help(object me){write(@HELP指令格式 : put <物品名称> in <某容器> 这个指令可以让你将某样物品放进一个容器,当然,首先你要拥有这样物品。 HELP    );    return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -