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

📄 help2.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 3 页
字号:
//help.c,具有部分bbs和超强的文件链接功能//created by hyee,看到Host的help系统受到启发//不同的mudlib请注意修正define的目录和valid_write()#include <mudlib.h>#include <ansi.h>#include <login.h>#include "/doc/help.h"/*定义其他文档的所在目录*/#define DIR "/doc/help/"/*定义本文件的存档所在的目录*/#define POST DIR"post.o"/*定义玩家register文件所在目录*/#define REGISTER DIR+"register/"/*定义各种留言板所在目录*/#define BOARD "/clone/board/"/*board的主存文件*/#define BOARDCENTER BOARD+"center.h"/*定义能对本系统进行修改的巫师等级*/#define WIZLEVEL "(arch)"inherit ITEM;inherit F_SAVE;varargs void display(object ob);void auto_load();void view_main();void view_main_1();void m_display();void u_display();void view6();void view7(string arg);void do_discard(object ob);void do_more(string arg,string *text,int line,object ob);void getname1(string arg);void getname3(string arg);void getname2(string str,string arg);void delfile(string arg);private void confirm_main_choice(string arg);private void confirm_p_choice(string arg,object ob);private void confirm_k_choice(string arg);private void confirm_l_choice(string arg);private void confirm_choice(string arg);private void a(string arg, string register);private void b(string arg, string register);private void c(string arg, string register);private void d(string arg, string register);private void e(string arg, string register);private void f(string arg, string register);private void g(string arg, string register);private void y(string arg, string register);private void confirm_u_choice(string arg);string *default_search = DEFAULT_SEARCH_PATHS;string age_string(int time);int do_post(string arg,object ob);int wizlist();int message();int message1();string query_save_file(){	return POST;}void create(){	set("name","江湖寄语");	mkdir(DIR);	mkdir(REGISTER);	restore();	rm(BOARDCENTER);	save();}int start_help(string msg,object ob){	if(!ob) ob=this_object();        do_more("d",explode(msg, "\n"),0,ob);}int main(object me, string arg){        int i;	string file, *search;	       	if( !arg ) {                me->set_temp("help",1);                m_display();                write(YEL"你现在的打算:"NOR);                input_to((:confirm_main_choice:),this_player());                return 1;         }          	seteuid(getuid());	if( stringp(file = me->find_command(arg)) ) {		notify_fail("有这个指令存在,但是并没有详细的说明文件。\n");		return file->help(me);	}       	if( pointerp(search = me->query("help_search_path")) ) {		i = sizeof(search);		while(i--) if( file_size(search[i] + arg)>0 ) {			me->start_more( read_file(search[i] + arg) );			return 1;		}	}	sscanf(arg, "%s()", arg);	if( pointerp(default_search) ) {		i = sizeof(default_search);		while(i--) if( file_size(default_search[i] + arg)>0 ) {			me->start_more( read_file(default_search[i] + arg) );			return 1;		}  	  }	return notify_fail("没有针对这项主题的说明文件。\n");}void view_main(){     object me;     string name,select;     me = this_player();     select = me->query_temp("select");     write(CLR"\n");     if(select== "main") name = "用户指南";     else if( select== "intro") name = "游戏概况";     else if( select== "depart") name = "门派介绍";     else if( select== "map") name = "地形指南";     else if( select== "user") name = "个人设定区";     else if( select== "board") name = "重要布告栏";     else if( select== "post") name = "江湖寄语";     else if( select== "leaveword") name= "其它留言板";     else if( select== "culture" ) name="墨缘";     else if( select== "other" ) name="其它";     else if( select== "xyz" ) name="系统设定区";          write(HIY"分类选单"HIW"                     【"+MUDLIB_NAME+"】                  "HIY"选单["+select+"]\n"NOR);          write("目前选择:[ "+name+" ]\n");     write(HIR"□——————————————┤ 公告版 ├——————————————□\n"NOR);     auto_load();     write(HIR"□——————————————————————————————————□\n"NOR);       write("\n");}void view_main_1(){     int i,ppl_cnt;     object *usr;     usr = users();     ppl_cnt=0;     for(i=0; i<sizeof(usr); i++)       {          ppl_cnt++;       }         write(YEL"_.-*```*-.__.-*```*-.__.-*```*-.__.-*```*-.__.-*```*-.__.-*```*-.__.-*\n"NOR);            write(HIY"TIME:["HIC""+ctime(time())+""HIY"]    ONLINE/PLAYER:["HIC""+ppl_cnt+""HIY"]    USER:["HIC""+wizhood(this_player())+""HIY"]\n"NOR,); }void view_main_k(){     object me;     string name,select;     me = this_player();     select = me->query_temp("select");     write(CLR"\n");     if(select== "main") name = "用户指南";     else if( select== "intro") name = "游戏概况";     else if( select== "depart") name = "门派介绍";     else if( select== "map") name = "地形指南";     else if( select== "user") name = "个人设定区";     else if( select== "board") name = "重要布告栏";     else if( select== "post") name = "江湖寄语";     write(HIY"分类选单"HIW"                     【"+MUD_NAME+"】                  "HIY"选单["+select+"]\n"NOR);          write("目前选择:[ "+name+" ]\n");     write(HIR"□——————————————┤ 公告版 ├——————————————□\n"NOR);    }void m_display() {     this_player()->set_temp("select","main");     view_main();     write("                        "HIY"(I)"NOR"ntro   〖  游戏概况  〗\n");     write("                        "HIY"(D)"NOR"epart  〖  门派介绍  〗\n");     write("                        "HIY"(M)"NOR"ap     〖  地形指南  〗\n");     write("                        "HIY"(U)"NOR"ser     〖 个人设定区 〗\n");     write("		        "HIY"(C)"NOR"ulture  〖   墨  缘   〗\n");     write("                        "HIY"(B)"NOR"board  〖 重要布告栏 〗\n");     write("                        "HIY"(L)"NOR"eaveword〖 其它留言板 〗\n");     write("     		        "HIY"(O)"NOR"ther    〖    其 它   〗\n");	     write("                        "HIY"(X)"NOR"yz      〖 系统设定区 〗\n");      write("	                "HIY"(P)"NOR"BBS     〖  江湖寄语  〗\n");   	     write("                        "HIY"(G)"NOR"oodbye  再别【帮助】,轻轻的我走了\n");     view_main_1();}void auto_load(){    if(random(10) > 5)    wizlist();    else if( random(20) >  10)    message();     else     message1();}int message1(){       object me;      int i;      me = this_player();      i = me->query("MKS")+me->query("PKS");      write(HIC"      "+me->name()+"啊, 您这次已经在这里待了"+age_string((int)me->query("mud_age"))+"罗!!\n");      write(HIW"      在您在本泥巴的分分秒秒中, 您已经累积了"+chinese_number(me->query("combat_exp"))+"点经验值\n");      write(HIW"      共击倒"+chinese_number(i)+"个对手\n");      write(HIC"                    加油喔!! \n");}string age_string(int time){        int month, day, hour, min, sec;        sec = time % 60;        time /= 60;        min = time % 60;        time /= 60;        hour = time % 24;        time /= 24;        day = time % 30;        month = time / 30;        return (month?month + "月":"") + (day?day + "天":"") +        (hour?hour + "小时":"") + min + "分";}int message(){ write(HIR"   ●    ( ● )  (●)      ●)     ●     (●)   □●□   (●\n"NOR); write(HIB" <|>   └|┘    (((   (|     (|)    |)     |      (□\n"NOR); write(HIY"  /\    <  □   (         / )    (□     ( \   □  □    <))\n"NOR); write(HIC""+this_player()->name()+",千万别挖泥太久喽,注意锻炼身体。迈步如婴之炯然,蓄势如日之初升。\n"NOR);}int wizlist(){        string *wizlist,*list,wiz_name,wiz_level,str,str1,str2,str3,str4;        int i,s1,s2,s3,s4;        str1="",str2="",str3="",str4="";        s1=0;s2=0;s3=0;s4=0;        list = sort_array(SECURITY_D->query_wizlist(),1);        wizlist = explode(read_file(WIZLIST), "\n");        for(i=0; i<sizeof(wizlist); i++)  {        sscanf(wizlist[i], "%s %s", wiz_name, wiz_level);                switch(wiz_level)                {                        case "(apprentice)":                                str1 += (s1?"\t":"")+wiz_name;                                s1++;                                if(s1%6==0) str1 += "\n \t\t ";                                break;                        case "(wizard)":                                str2 += (s2?"\t":"")+wiz_name;                                s2++;                                if(s2%6==0) str2 += "\n \t\t ";                                break;                        case "(arch)":                                str3 += (s3?"\t":"")+wiz_name;                                s3++;                                if(s3%6==0) str3 += "\n \t\t ";                                break;                        case "(admin)":                                str4 += (s4?"\t":"")+wiz_name;                                s4++;                                if(s4%6==0) str4 += "\n \t\t";                                break;                }        }        write(HIR"   【 散 仙 】: "NOR+str1+"\n");        write(HIY"   【 神 仙 】: "NOR+str2+"\n");        write(HIG"   【 大 神 】: "NOR+str3+"\n");        write(HIW"   【 天 神 】: "NOR+str4+"\n");}private void confirm_main_choice(string arg){		this_player()->delete_temp("memer"); 	switch(arg[0]){ 		case 'p':    	    	this_player()->set_temp("select","post");    	    	this_player()->set_temp("memer","post/page");    	     	display();             	             	return ;              	break;             	case 'd':             	this_player()->set_temp("select","depart");             	display();   	                      	return;             	break;             	case 'i':             	this_player()->set_temp("select","intro");             	display();   	                      	return;             	break;             	case 'm':             	this_player()->set_temp("select","map");             	display();   	                      	return;             	break;             	case 'o':             	this_player()->set_temp("select","other");             	display();               	return;             	break;             	case 'b':             	this_player()->set_temp("select","board");             	display();             	return;             	break;             	case 'c':             	this_player()->set_temp("select","culture");             	display();             	return;               	break;             	case 'x':             	this_player()->set_temp("select","xyz");             	display();             	return;             	break;             	case 'l':             	this_player()->set_temp("select","leaveword");             	display();             	return;             	break;             	case 'u':             	this_player()->set_temp("select","user");             	u_display();             	write(YEL"\r请输入您的选择:"NOR);             	input_to((:confirm_u_choice:),this_player());             	return;                          	break;    		case 'g':             	this_player()->delete_temp("select");             	this_player()->delete_temp("help");             	return;        }                m_display();        write(YEL"请输入您的选择:"NOR);        input_to((:confirm_main_choice:),this_player());                    	return;}/*留言板程序*/void view1(){	write(HIC"  (P)"NOR"发表 "HIC"(D)"NOR"删除 "HIC"(U)"NOR"上翻 "HIC"(O)"NOR"下翻" 	HIC" (B)"NOR"返回 "HIC"(E)"NOR"进入 "HIC"(K)"NOR"上移 "HIC"(J)"NOR"下移\n");	write(HIR"□——————————————————————————————————□\n"NOR);  	return;}string view_msg(int flag,object ob){	object me=this_player();	string memer=me->query_temp("memer");	mapping *notes=ob->query("notes");		string file;	int i,k,b,f;	file="";		k=sizeof(notes)-1;			if(!sizeof(notes)) return "没有任何留言。\n";	if(flag<0) flag=k;	if(flag>k) flag=0;	me->set(memer,flag);	b=flag-7;f=flag+7;	if(b<0) {f=f-b;b=0;}	if(f>k) {b=b-f+k;f=k;}	if(b<0) b=0;	if(f>k) f=k;		f++;			for(i=b;i<f;i++)	file += sprintf("%s["NOR+HIW +BRED"%3d"NOR"%s]  %-30s %12s (%s)(%s)\n"NOR,			(i==flag)?BRED +HIW:"",			i+1, (i==flag)?BRED +HIW:"",notes[i]["title"], notes[i]["author"],			notes[i]["authorid"],ctime(notes[i]["time"])[0..15] );	return file;		}private void confirm_p_choice(string arg,object ob){	object me=this_player();	int k=atoi(arg);	int p,num;	string memer=me->query_temp("memer");		mapping *notes;		     		if(k>0) 	{		me->set(memer,k-1);     		display(ob);     	}     	     	switch(arg)     	{     		case "p":     		do_post(0,ob);     		return;     		break;     		case "b":     		main(this_player(),0);     		return;     		     		case "j":     		     		me->set(memer,me->query(memer)+1);     		display(ob);     		return;     		break;     		case "k":     		me->set(memer,me->query(memer)-1);     		display(ob);     		return;     		break;     		case "u":     		me->set(memer,me->query(memer)-15);     		display(ob);     		return;     		break;     		case "o":     		me->set(memer,me->query(memer)+15);     		display(ob);     		return;     		break;     		     		case "d":     		do_discard(ob);     		display(ob);     	     		return;     		break;      		     		break;     		case "e":     		num=this_player()->query(memer);		notes=ob->query("notes");		if( !pointerp(notes) || !sizeof(notes) )		{			write("留言板上目前没有任何留言。\n");			display(ob);			return;		}			if(  num+1 > sizeof(notes) )		{			write("没有这张留言。\n");			display(ob);			return;		}					printf("["BBLU"%3d"NOR"] %-30s %s(%s)(%s)\n",		num + 1, notes[num]["title"], notes[num]["author"], notes[num]["authorid"],		ctime(notes[num]["time"])[0..9]);     		start_help(notes[num]["msg"],ob);     		return;     		break;     	}     	display(ob);     	     	return; }int edi(function callback){        write(HIC"    书写结束用'.',取消输入用 '^q',使用内建列编辑器用 '^e'。\n"NOR);        write(HIG"┌──—————————————————————————————┐\n│"NOR);        input_to("input_lines", "", callback);        return 1;}void input_lines(string line, string text, function callback){        if( line=="." ) {        	write(HIG"└──—————————————————————————————┘\n"NOR);                (*callback)(text);                return;        } else if( line=="^q" ) {                write("输入取消。\n");                main(this_player(),0);        } else if( line=="^e" ) {

⌨️ 快捷键说明

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