inventory.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 101 行

C
101
字号
// inventory.c// by Find.#include <ansi.h>inherit F_CLEAN_UP;string inventory_desc(object ob,object me);int main(object me, string arg){	object *inv, ob,*muti;	int n;	string output;	mixed groups;	if( wizardp(me) && arg ) {		ob = find_player(arg);		if( !ob ) ob = find_living(arg);		if( !ob ) ob = present(arg, environment(me));	}	if( !ob ) ob = me;	inv = all_inventory(ob);	if( !sizeof(inv) ) {		write((ob==me)? "目前你身上没有任何东西。\n"			: ob->name() + "身上没有携带任何东西。\n");		return 1;	}	output = sprintf("%s身上带著下列这些东西(负重 %d%%):\n",		(ob==me)? "你": ob->name(),		(int)ob->query_encumbrance() * 100 / (int)ob->query_max_encumbrance());	muti = filter_array(inv,(: !$1->is_character()&&!$1->query("equipped")&&!$1->query_amount() :));	if(sizeof(muti))	{		inv -= muti;		groups = unique_array(muti,(: sprintf("%s%s",base_name($1),$1->name()) :));	}	n = sizeof(inv);	for(int i=0;i<n;i++)	{		if(inv[i]->is_character())			output += sprintf("  %s\n",inv[i]->short());		else if(inv[i]->query("equipped") || inv[i]->query_amount())			output += inventory_desc(inv[i],ob);	}	if(sizeof(groups))	{		foreach(object *group in groups)		{			if( (n=sizeof(group)) == 1)				output += sprintf("  %s\n",group[0]->short());			else				output += sprintf("  %s%s%s\n",chinese_number(n),					group[0]->query("unit"),					group[0]->query("base_cname")?					sprintf("%s(%s)",group[0]->query("base_cname"),					capitalize(group[0]->query("id"))):					group[0]->short());		}	}	write(output);	return 1;}string inventory_desc(object ob,object me){	return sprintf("%s%s\n",		ob->query("equipped")?			((ob == me->query_temp("secondary_weapon"))?			HIC "○" NOR:			HIC "□" NOR):			"  ",		ob->short()	);}int help (object me){        write(@HELP指令格式: inventory 可列出你目前身上所携带的所有物品。"□" 标记说明此物品为你已经装备     的兵器或者已穿戴的护甲。"○" 标记说明此兵器装备于你的左手。注 : 此指令可以 " i " 代替。 HELP);        return 1;}

⌨️ 快捷键说明

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