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

📄 wizgive.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// give.c// 星星2000/6/14修正bug#include <ansi.h>inherit F_CLEAN_UP;int do_give(object me, object obj, object who);void create() { seteuid(getuid()); }int main(object me, string arg){	string target, item;	object obj, who, *inv, obj2;	int i, amount;	if(!arg) return notify_fail("你要给谁什么东西?\n");	if( sscanf(arg, "%s to %s", item, target)==2	|| sscanf(arg, "%s %s", target, item)==2 );	else return notify_fail("你要给谁什么东西?\n");	if(!objectp(who = present(target, environment(me))) || !living(who))		return notify_fail("这里没有这个人。\n");	if( me->is_busy() )		return notify_fail("你上一个动作还没有完成!\n");//	if( who->query("env/no_accept") )//		return notify_fail("人家现在不想要什么东西。\n");	if(sscanf(item, "%d %s", amount, item)==2) {		if( !objectp(obj = present(item, me)) )				return notify_fail("你身上没有这样东西。\n");	if( obj->query_temp("is_rided_by") == me->query("id"))		return notify_fail( obj->name() + "正被你骑着,不能给人。\n");//		if( obj->query("no_drop") )//			return notify_fail("这样东西不能随便给人。\n");		if( !obj->query_amount() )				return notify_fail( 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_give(me, obj, who);		else {			obj->set_amount( (int)obj->query_amount() - amount );			obj2 = new(base_name(obj));			obj2->set_amount(amount);			if (do_give(me, obj2, who))				return 1;			else {				obj->set_amount((int)obj->query_amount() + amount);				return 0;			}		}	}	if(arg=="all") {		inv = all_inventory(me);		for(i=0; i<sizeof(inv); i++) {			do_give(me, inv[i], who);		}		write("Ok.\n");		return 1;	}	if(!objectp(obj = present(item, me)))		return notify_fail("你身上没有这样东西。\n");	return do_give(me, obj, who);}int do_give(object me, object obj, object who){//       if( obj->query("no_drop") )//		return notify_fail("这样东西不能随便给人。\n");// Add by Java 	if( userp(obj) )		return notify_fail("你只能卖玩家。\n");// on June 3.1998	if( obj->query_temp("is_rided_by") == me->query("id"))		return notify_fail( obj->name() + "不是正被你骑着。\n");	if( me->is_busy() )		return notify_fail("你上一个动作还没有完成!\n");		// check for dynamic_quests        if(obj->query("dynamic_quest"))        if(TASK_D->quest_reward(me,who,obj))        return 1;	if( !interactive(who) && !who->accept_object(me, obj) )//		return notify_fail("你想给,可是人家还不想要你的这样东西。\n");		return notify_fail("对方不接受这样东西。\n");/*        //给东西记录到/log/cmds/give   星星(lywin)	log_file("cmds/give",	sprintf("%s(%s) 在%s把一个(%s) 给了%s(%s)on %s\n",	me->name(),  //记录使用命令的人名	geteuid(me), //记录使用命令的ID	(string)environment(me)->query("short"), //记录复制物品所在的房间	obj->name(1), //记录给的物品的名称	who->name(),  //记录使用对象的人名	geteuid(who), //记录使用对象的ID	ctime(time()) ) ); //记录使用命令的时间*/	if( !userp(who) && obj->value() ) {		message_vision("$N拿出" + obj->short() + "给$n。\n", me, who);		destruct(obj);        me->save();        if (userp(who)) who->save();		return 1;	} else if( obj->move(who) ) {		printf("你给%s一%s%s。\n", who->name(), obj->query("unit"),			obj->name());		message("vision", sprintf("%s给你一%s%s。\n", me->name(),			obj->query("unit"), obj->name()), who );		message("vision", sprintf("%s给%s一%s%s。\n", me->name(), who->name(),			obj->query("unit"), obj->name()), environment(me), ({me, who}) );		me->save();		if (userp(who)) who->save();		return 1;	}	else return 0;}int help(object me){write(@HELP指令格式 : give <物品名称> to <某人>      或 : give <某人> <物品名称> 这个指令可以让你将某样物品给别人,当然,首先你要拥有这样物品。 HELP    );    return 1;}

⌨️ 快捷键说明

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