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

📄 1225look.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 2 页
字号:
// look.c// colored by ReyGod in 1/10/1997 ----- I love colorful world :)// 星星6/16 以前辈发现号(find)在inventory.c中的记数方法改成现在// 这个look.c中极重要的一部份,特此感谢find,得罪得罪。#include <room.h>#include <ansi.h>#include <combat.h>#define TIME_TICK1 (time()*60-890000000)inherit F_CLEAN_UP;int look_room(object me, object env);int look_item(object me, object obj);int look_living(object me, object obj);int look_room_item(object me, string arg);string getper(object me, object obj);string tough_level(int power);string gettof(object me, object obj);string getdam(object me, object obj);string *tough_level_desc = ({        BLU "初学乍练" NOR,        BLU "初窥门径" NOR,        BLU "粗通皮毛" NOR,        HIB "略知一二" NOR,        HIB "半生不熟" NOR,        HIB "马马虎虎" NOR,        YEL "略有小成" NOR,        YEL "已有小成" NOR,        YEL "渐入佳境" NOR,        HIY "驾轻就熟" NOR,        HIY "了然于胸" NOR,        HIY "出类拔萃" NOR,        MAG "略有大成" NOR,        MAG "已有大成" NOR,        MAG "心领神会" NOR,        HIM "神乎其技" NOR,        HIM "出神入化" NOR,        HIM "豁然贯通" NOR,        RED "登峰造极" NOR,        RED "技冠群雄" NOR,        RED "举世无双" NOR,        HIR "一代宗师" NOR,        HIR "震古铄今" NOR,        HIR "傲视群雄" NOR,        WHT "所向披靡" NOR,        WHT "惊世骇俗" NOR,        HIW "无可匹敌" NOR,        HIW "独步天下" NOR,        HIY "深不"HIR"可测" NOR,        HIC "返朴" HIW "归真" NOR,         HIY "天" HIC "下" HIW "无" HIR "敌" NOR});string *heavy_level_desc= ({	"极轻",	"很轻",	"不重",	"不轻",	"很重",	"极重"	});void create() { seteuid(getuid()); }int main(object me, string arg){        object obj;        int result;        if( !arg ) result = look_room(me, environment(me));        else if( (obj = present(arg, me)) || (obj = present(arg, environment(me))))             {                if( obj->is_character() ) result = look_living(me, obj);                else result = look_item(me, obj);             } else result = look_room_item(me, arg);        return result;}int look_room(object me, object env){        int i, j, k, l;        object *inv;        mapping exits,*data;        string str, *dirs;                k = 0;	data = allocate(3000);        if( !env ) {                write("你的四周灰蒙蒙地一片,什么也没有。\n");                return 1;        }// 天气颜色        switch (NATURE_D->outdoor_room_outcolor())        {              case "BLK":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + BLK + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "RED":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + RED + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIR":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIR + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "GRN":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + GRN + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIG":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIG + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "YEL":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + YEL + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIY":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIY + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "BLU":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + BLU + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIB":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIB + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "MAG":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + MAG + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIM":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIM + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "CYN":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + CYN + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIC":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIC + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "WHT":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + WHT + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              case "HIW":        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIW + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;              default:        str = sprintf( HIC + "【"+ "%s"+"】"+ NOR + " - %s\n    %s" + HIG + "%s" + NOR,                env->query("short"),                wizardp(me)? file_name(env): "",                env->query("long"),                env->query("outdoors")? NATURE_D->outdoor_room_description():"");                   break;	}// 天气到此结束//        str = sprintf( HIC + "%s" + NOR + " - %s\n    %s" + HIY + "%s" + NOR,//                env->query("short"),//                wizardp(me)? file_name(env): "",//                env->query("long"),//                env->query("outdoors")? NATURE_D->outdoor_room_description():"");        if( mapp(exits = env->query("exits")) ) {                dirs = keys(exits);                for(i=0; i<sizeof(dirs); i++)                        if( (int)env->query_door(dirs[i], "status") & DOOR_CLOSED )                                dirs[i] = 0;                dirs -= ({ 0 });                if ( env->query("outdoors") &&                    !present("fire", this_player()) &&                    !wizardp(this_player()) &&                    ((strsrch(CHINESE_D->chinese_date(TIME_TICK1), "子时") >= 0) ||                     (strsrch(CHINESE_D->chinese_date(TIME_TICK1), "丑时") >= 0) ||                     (strsrch(CHINESE_D->chinese_date(TIME_TICK1), "寅时") >= 0) ||                     (strsrch(CHINESE_D->chinese_date(TIME_TICK1), "亥时") >= 0)))                        str += BLU + "    天色太黑了,你看不清明显的出路。\n"NOR;                else if( sizeof(dirs)==0 )                        str += HIR + "    这里没有任何明显的出路。\n"NOR;                else if( sizeof(dirs)==1 )                        str += YEL + "    这里唯一的出口是 " + BOLD + dirs[0] + NOR + "。\n";                else                        str += sprintf(  HIG + "    这里明显的"+ HIC +"【出口】"+ HIG +"是" + BOLD + "%s" + NOR + " " + HIG + "和  " + BOLD + "%s" + NOR + "。\n",                                implode(dirs[0..sizeof(dirs)-2], "、"), dirs[sizeof(dirs)-1]);        }//        str += env->door_description();        inv = all_inventory(env);		for (i = 0; i < sizeof(inv); i++) {			if (inv[i]!=me 			&&  me->visible(inv[i])			&&  !inv[i]->query("money_id")			&&  !inv[i]->query_temp("check_only"))			{				data[k]=([]);				for(j = i; j < sizeof(inv); j++ )				{					if ( inv[i]->query("name")==inv[j]->query("name")					&&   inv[i]->query("id")==inv[j]->query("id")					&&   !inv[j]->query_temp("check_only") )					{						data[k]["id"]=inv[i]->short();						data[k]["unit"]=inv[i]->query("unit");						data[k]["num"]= data[k]["num"] + 1;						inv[j]->set_temp("check_only", 1);					}					else continue;				}				k++;			}			else continue;		}		for (i = 0; i < sizeof(inv); i++) {			if ( !inv[i]->query_temp("check_only") && inv[i]!=me && me->visible(inv[i]) )			str += sprintf("%s%s\n", "  ", inv[i]->short());		}		for (i = 0; i < sizeof(inv); i++)			if ( inv[i]->query_temp("check_only") )				inv[i]->delete_temp("check_only");		if (k > 0)		{			for (l = 0; l < k; l++)				str = sprintf("%s%s%s\n", str,  (data[l]["num"]==1)? "  ":"  "+ chinese_number(data[l]["num"])+data[l]["unit"], data[l]["id"]);		}        write(str);        return 1;}int look_item(object me, object obj){        mixed *inv;        write(obj->long());        inv = all_inventory(obj);        if( sizeof(inv) ) {                inv = map_array(inv, "inventory_look", this_object() );                message("vision", sprintf("里面有:\n  %s\n",                        implode(inv, "\n  ") ), me);        }        return 1;}string gettof(object me, object ob){	object weapon;	string skill_type,parry_type;	int attack_points;        if( objectp(weapon = ob->query_temp("weapon")) )        {                skill_type = weapon->query("skill_type");                parry_type = "parry";        }        else        {                skill_type = "unarmed";                parry_type = "unarmed";        }        attack_points = COMBAT_D->skill_power(ob, skill_type, SKILL_USAGE_ATTACK);//        attack_points = ob->query_temp("apply/attack");	return tough_level((int)(attack_points/100));}int look_living(object me, object obj){        int per;        int spi;        int age;        int weight;        string str, limb_status, pro;        mixed *inv;        mapping my_fam, fam;        int me_shen, obj_shen;        int equip, wearornot;        me_shen = (int)me->query("shen");        obj_shen = (int)obj->query("shen");//      per = obj->query("per");        per = obj->query_per();        age = obj->query("age");        if( me!=obj )                message("vision", me->name() + "正盯著你看,不知道打些什么主意。\n", obj);        str = obj->long();        pro = (obj==me) ? gender_self(obj->query("gender")) : gender_pronoun(obj->query("gender"));	if (obj->query_temp("is_riding"))                str += sprintf("%s正骑在%s上,低头看着你。\n", pro, obj->query_temp("is_riding"));        if( (string)obj->query("race")=="人类"        &&      intp(obj->query("age")) )        {

⌨️ 快捷键说明

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