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

📄 lookold.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 3 页
字号:
// 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)//#define TIME_TICK1 (time()*60-900000000)//#define TIME_TICK1 ((time()-900000000)*24)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,BLU"新学乍练"NOR,BLU"勉勉强强"NOR,BLU"初窥门径"NOR,BLU"初出茅庐"NOR,BLU"略知一二"NOR,BLU"普普通通"NOR,BLU"平平淡淡"NOR,HIB"平淡无奇"NOR,HIB"粗通皮毛"NOR,HIB"半生不熟"NOR,HIB"马马虎虎"NOR,HIB"略有小成"NOR,HIB"已有小成"NOR,HIB"渐入佳境"NOR,HIB"登堂入室"NOR,HIB"挥洒自如"NOR,HIB"融会贯通"NOR, CYN"心领神会"NOR,CYN"炉火纯青"NOR,CYN"了然於胸"NOR,CYN"略有大成"NOR,CYN"已有大成"NOR,CYN"豁然贯通"NOR,CYN"出类拔萃"NOR,CYN"无可匹敌"NOR,CYN"技冠群雄"NOR,CYN"神乎其技"NOR,HIC"出神入化"NOR,HIC"非同凡响"NOR,HIC"傲视群雄"NOR,HIC"登峰造极"NOR,HIC"无与伦比"NOR,HIC"所向披靡"NOR,HIC"一代宗师"NOR,HIC"精深奥妙"NOR,HIC"神功盖世"NOR,HIC"举世无双"NOR,HIR"惊世骇俗"NOR,HIR"撼天动地"NOR,HIR"震古铄今"NOR,HIR"超凡入圣"NOR,HIR"威镇寰宇"NOR,HIR"空前绝后"NOR,HIR"天人合一"NOR,HIR"深藏不露"NOR,HIR"横扫江湖"NOR,HIR"深不可测"NOR,HIY"威不可挡"NOR,HIY"技惊四座"NOR,HIR"强绝天下"NOR,HIY"威镇武林"NOR,HIR"前无古人"NOR,HIY"返璞归真"NOR,HIY"独步天下"NOR,HIY"旷古绝伦"NOR,HIY"天下无敌"NOR,HIY"天下第一"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;}void realtime_map(object me,object env){        object room_obj;        mapping exits;    int i;        string map_room, map_room2,jiantou;     string *dirs;        mapping alldirs=([                              "northwest" : "          ",                        "north"     : "          ",                        "northup"   : "          ",                        "northeast" : "          ",                        "west"      : "          ",                        "east"      : "          ",                        "southeast" : "          ",                        "south"     : "          ",                        "southwest" : "          ",                        "southdown" : "          ",                        "eastup" : "          ",                        "southup" : "          ",                        "northdown" : "          ",                        "eastdown" : "          ",                        "westup" : "          ",                        "westdown" : "          ",                        "enter" : "          ",                        "out" : "          ",                        "up" : "          ",                        "down" : "          ",                        "left" : "          ",                        "right" : "          ",                        ]);         if( mapp(exits = env->query("exits")) )         {                                       dirs=keys(exits);                for(i=0;i< sizeof(dirs);i++)                {                        if(!room_obj=find_object(exits[dirs[i]]))                                room_obj=load_object(exits[dirs[i]]);                        if(room_obj){                                                                if (room_obj->query("short"))                                alldirs[dirs[i]]=room_obj->query("short");                              ;                                }                        }                        jiantou="  ";                map_room2=alldirs["enter"];                if(alldirs["enter"]!="          "){                        map_room2=alldirs["enter"];                        jiantou=HIR+"∧"+NOR;                        }                if(alldirs["up"]!="          "){                        map_room2=alldirs["up"];                        jiantou=HIC+"〓"+NOR;                        }                if(alldirs["northdown"]!="          "){                        map_room2=alldirs["northdown"];                        jiantou="↓";                        }                if(alldirs["northup"]!="          "){                        map_room2=alldirs["northup"];                        jiantou="↑";                        }                if(alldirs["north"]!="          "){                        map_room2=alldirs["north"];                        jiantou="|";                        }                map_room=map_room2;                for(i=0;i<(10-strlen(map_room2))/2;i++)                        {                                map_room =map_room+" ";                                map_room =" "+map_room;                        }                printf("             %10s  %-10s  %-10s\n",                alldirs["northwest"],map_room,alldirs["northeast"]);                                printf("                        %s   %s   %s\n",                alldirs["northwest"]=="          " ? "  ":"\",                jiantou,                alldirs["northeast"]=="          " ? "  ":"/");                                jiantou="  ";                map_room2=alldirs["westdown"];                if(map_room2!="          ")                                jiantou="→";                if(alldirs["left"]!="          "){                        map_room2=alldirs["left"];                        jiantou="〈";                        }                if(alldirs["westup"]!="          "){                        map_room2=alldirs["westup"];                        jiantou="←";                        }                if(alldirs["west"]!="          "){                        map_room2=alldirs["west"];                        jiantou="--";                        }                printf("             %10s%s",map_room2,jiantou);                        map_room2=env->query("short") ? env->query("short"): "----------";                map_room=HIG+map_room2+NOR;                for(i=0;i<(10-strlen(map_room2))/2;i++)                        {                                if(alldirs["east"]=="          ")                                map_room =map_room + " ";                                else map_room=map_room + "-";                                if(alldirs["west"]=="          ")                                map_room =" "+ map_room;                                else map_room ="-"+map_room;                        }                printf("%s",map_room);                                jiantou="  ";                map_room2=alldirs["eastup"];                if(map_room2!="          ")                                jiantou="→";                if(alldirs["right"]!="          "){                        map_room2=alldirs["right"];                        jiantou="〉";                        }                if(alldirs["eastdown"]!="          "){                        map_room2=alldirs["eastdown"];                        jiantou="←";                        }                if(alldirs["east"]!="          "){                        map_room2=alldirs["east"];                        jiantou="--";                        }                                printf("%s%-10s\n",jiantou,map_room2);                                jiantou="  ";                map_room2=alldirs["out"];                if(alldirs["out"]!="          "){                        map_room2=alldirs["out"];                        jiantou=HIR+"∨"+NOR;                        }                if(alldirs["down"]!="          "){                        map_room2=alldirs["down"];                        jiantou=HIC+"〓"+NOR;                        }                                if(alldirs["southdown"]!="          "){                                map_room2=alldirs["southdown"];                                jiantou="↑";                                }                if(alldirs["southup"]!="          "){                        map_room2=alldirs["southup"];                        jiantou="↓";                        }                if(alldirs["south"]!="          "){                        map_room2=alldirs["south"];                        jiantou="|";                        }                map_room=map_room2;                for(i=0;i<(10-strlen(map_room2))/2;i++)                        {                                map_room =map_room + " ";                                map_room =" "+map_room;                        }                printf("                        %s   %s   %s\n",                alldirs["southwest"]=="          " ? "  ":"/",                jiantou,                alldirs["southeast"]=="          " ? "  ":"\");                printf("             %10s  %-10s  %-10s\n",                alldirs["southwest"],map_room,alldirs["southeast"]);                                                }               else        {                map_room2=env->query("short") ? env->query("short"): "----------";                map_room=HIG+map_room2+NOR;                for(i=0;i<(10-strlen(map_room2))/2;i++)                        {                                if(alldirs["east"]=="          ")                                map_room =map_room + " ";                                else map_room=map_room + "-";                                if(alldirs["west"]=="          ")                                map_room =" "+ map_room;                                else map_room ="-"+map_room;                        }                printf("\n                            %s\n",map_room);                        }        return;}int look_room(object me, object env){    int i,amount,j, k, l;            object *inv;    object obj,room;        mixed *cmds;    mapping exits,my,*data;    string str, *dirs,message,str2,modify;    if( !env ) {        write("你的四周灰蒙蒙地一片,什麽也没有。\n");        return 1;    }        k = 0;	data = allocate(3000);    reset_eval_cost();    if (!objectp(present("fire", me))  && environment(me)->query("outdoors")     && !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 = sprintf( "%s"+NOR+BLU+"\n    夜晚了,你虽然睁大了眼睛仔细观看,可还是看不清楚周围的事物。\n"+			"一切都被夜色所笼罩,连脚下的道路都模糊不清了...\n"+NOR+"",        env->query("short"));    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( sizeof(dirs)==0 )            str += HIR + "    这里没有任何明显的出路。\n"NOR;    else if (!objectp(present("fire", me))  && environment(me)->query("outdoors")     && !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)==1 )                        str += YEL + "    这里唯一的出口是 " + BOLD + dirs[0] + NOR + "。\n";        else{            dirs = sort_array(dirs,"sort_exits");                        str += sprintf(  HIG + "    这里明显的"+ HIC +"【出口】"+ HIG +"是" + BOLD + "%s" + NOR + " " + HIG + "和  " + BOLD + "%s" + NOR + "。\n",                              implode(dirs[0..sizeof(dirs)-2], "、"), dirs[sizeof(dirs)-1]);        }      }else            str += "  这里没有任何明显的出路。\n";        write(str);        return 1;    }        if(env->query("outdoors",1))                str2 = NOR+HIC"室外"NOR;        if(!env->query("outdoors",1))                str2 = NOR+HIC"室内"NOR;    if (wizardp(me) && !me->query("env/show_room"))    str = sprintf( HIC"〖"HIW"%s"HIC"〗 %s"+NOR+" - "+RED+"%s\n"+NOR+"    %s",        env->query("short"),str2,        SECURITY_D->valid_read(file_name(env),me)? file_name(env): "",        env->query("long"));    else     str = sprintf(  HIC"〖"HIW"%s"HIC"〗  %s"+NOR+"\n    %s",env->query("short"),str2,env->query("long"));

⌨️ 快捷键说明

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