📄 help2.c
字号:
//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 + -