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

📄 drop.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// drop.c// 星星2000/6/14修正buginherit F_CLEAN_UP;#include <ansi.h>int do_drop(object me, object obj);void create() { seteuid(getuid()); }int main(object me, string arg){	object obj, *inv, obj2;	int i, amount;	string item;string wiz_status;	if(!arg) return notify_fail("你要丢下什么东西?\n");	if(sscanf(arg, "%d %s", amount, item)==2) {		if( !objectp(obj = present(item, me)) )			return notify_fail("你身上没有这样东西。\n");		if( stringp(obj->query("no_drop")) )			return notify_fail( (string)obj->query("no_drop") );        if (userp(me) && !query_heart_beat(me))        {         "/cmds/usr/quithy"->main(me);         write("由于你没有心跳,请重新登陆!!\n");        }        if( me->is_busy() )        return notify_fail("你上一个动作还没有完成,不能丢东西!\n");      if( !environment(me) )        return notify_fail("这里不准扔东西。\n");      if( environment(me)->query("no_drop1") )        return notify_fail("这里不准扔东西。\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_drop(me, obj);		else {			obj->set_amount( (int)obj->query_amount() - amount );			obj2 = new(base_name(obj));			obj2->set_amount(amount);			return do_drop(me, obj2);		}	}	if(arg=="all") {		inv = all_inventory(me);		for(i=0; i<sizeof(inv); i++) {			do_drop(me, inv[i]);		}		write("Ok.\n");		return 1;	}	if(!objectp(obj = present(arg, me)))		return notify_fail("你身上没有这样东西。\n");	return do_drop(me, obj);}int do_drop(object me, object obj){string wiz_status;    object *inv;	mixed no_drop;	if( obj->query_temp("is_rided_by") == me->query("id"))		return notify_fail( obj->name() + "不是正被你骑着。\n");        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( no_drop = obj->query("no_drop") )		return notify_fail( stringp(no_drop) ? no_drop : "这样东西不能随意丢弃。\n");	inv = all_inventory(environment(me));          if (sizeof(inv)>49)            return notify_fail("地上已经那么多东西了,你想干嘛?\n");/*        if( me->is_busy() )                return notify_fail("你上一个动作还没有完成,不能丢东西!\n");*/	if( no_drop = environment(me)->query("no_drop") )		return notify_fail( stringp(no_drop) ? no_drop : "这里东西丢弃下去也看不见。\n");if (userp(obj) &&!environment(me)->query("no_fight"))                        return notify_fail("要放下昏了的玩家,得找一个安全的地方!\n");	wiz_status = SECURITY_D->get_status(me);	if( wiz_status != "(admin)" 	&& userp(me) && wizardp(me))message("channel:chat", HIC"【玩家监督】"+me->name() + "扔下了" +                   obj->query("name")+HIC"!"NOR"。\n", users());	if (obj->move(environment(me))) {		if( obj->is_character() ) if (!me->is_ghost()){			message_vision("$N将$n从背上放了下来,躺在地上。\n", me, obj);}else 			message_vision("$n从$N身上掉了下来,躺在地上。\n", me, obj);		else {			message_vision( sprintf("$N丢下一%s$n。\n",	obj->query("unit")),				me, obj );			if( !obj->query("value") && !obj->value() ) {				write("因为这样东西并不值钱,所以人们并不会注意到它的存在。\n");				destruct(obj);			}/*			if( obj->query("id")=="coin" && !userp(obj)			&& obj->query("money_id")=="coin" ) {				write("因为这样东西并不值钱,所以人们并不会注意到它的存在。\n");				destruct(obj);			}*/		}		me->save();		return 1;	}	return 0;}int help(object me){	write(@HELP指令格式 : drop <物品名称> 这个指令可以让你丢下你所携带的物品. HELP    );    return 1;} 

⌨️ 快捷键说明

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