精華區beta mud 關於我們 聯絡資訊
作者 jjchen.bbs@csie.nctu.edu.tw (jjchen), 看板 MUD 標題 edemote.c 時間 交大資工鳳凰城資訊站 (Wed Jul 8 23:59:28 1998) 來源 SimFarm!news.ntu!news.mcu!news.cs.nthu!news.csie.nctu!phoenix ─────────────────────────────────────── // /cmds/arch/edemote.c // 本檔案改自 es2 mudlib // 本檔案歡迎流傳, 但請保留本說明 // wade 1998/7/10 inherit F_CLEAN_UP; int in_use; int main(object me, string arg) { mapping emote; if( !arg ) return notify_fail("你要編輯什麼 emote﹖\n"); if( sscanf(arg, "-d %s", arg) ) { write("刪除 emote﹕" + arg + "\n"); EMOTE_D->delete_emote(arg); return 1; } if( sscanf(arg, "-p %s", arg) ) { emote = EMOTE_D->query_emote(arg); write ("短訊息:"+emote["short"]+"\n"); write ("─────────────────────────────── \n"); printf ("自己:%s\n其他人:%s\n看給自己:%s\n他人看給自己:%s\n看給他人:%s\n", emote["myself"], emote["others"], emote["myself_self"], emote["others_self"], emote["myself_target"]); printf ("他人看給他:%s\n其他:%s\n", emote["target"], emote["others_target"]); return 1; } emote = EMOTE_D->query_emote(arg); write("編輯 emote﹕" + arg + "\n"); write("訊息可以有好幾行﹐用 . 表示結束,用 ~q 取消編輯。\n"); write("訊息中可使用的參數有以下幾種﹕\n"); write(" $N 自己的名字。\n"); write(" $n 使用對象的名字。\n"); write(" $P 自己的人稱代名詞﹐如你、妳、他、她、牠、它。\n"); write(" $p 使用對象的人稱代名詞﹐如你、妳、他、她、牠、它。\n"); write("────────────────────────────────\n"); write("短訊息:"); input_to("get_short", emote, arg); return 1; } int get_short (string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } emote["short"] = msg; write("不指定對象使用這個 emote 時﹐你自己看到的訊息﹕\n->"); input_to("get_msg_myself", emote, pattern); return 1; } int get_msg_myself(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["myself"]) ) emote["myself"] += "\n"; write("不指定對象使用這個 emote 時﹐其他人看到的訊息﹕\n->"); input_to("get_msg_others", emote, pattern); return 1; } if( !undefinedp(emote["myself"]) ) emote["myself"] += msg + "\n"; else emote["myself"] = msg; write("->"); input_to("get_msg_myself", emote, pattern); return 1; } int get_msg_others(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["others"]) ) emote["others"] += "\n"; write("對自己使用這個 emote 時﹐自己看到的訊息﹕\n->"); input_to("get_msg_myself_self", emote, pattern); return 1; } if( !undefinedp(emote["others"]) ) emote["others"] += msg + "\n"; else emote["others"] = msg; write("->"); input_to("get_msg_others", emote, pattern); return 1; } int get_msg_myself_self(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["myself_self"]) ) emote["myself_self"] += "\n"; write("對自己使用這個 emote 時﹐其他人看到的訊息﹕\n->"); input_to("get_msg_others_self", emote, pattern); return 1; } if( !undefinedp(emote["myself_self"]) ) emote["myself_self"] += msg + "\n"; else emote["myself_self"] = msg; write("->"); input_to("get_msg_myself_self", emote, pattern); return 1; } int get_msg_others_self(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["others_self"]) ) emote["others_self"] += "\n"; write("對別人使用這個 emote 時﹐自己看到的訊息﹕\n->"); input_to("get_msg_myself_target", emote, pattern); return 1; } if( !undefinedp(emote["others_self"]) ) emote["others_self"] += msg + "\n"; else emote["others_self"] = msg; write("->"); input_to("get_msg_others_self", emote, pattern); return 1; } int get_msg_myself_target(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["myself_target"]) ) emote["myself_target"] += "\n"; write("對別人使用這個 emote 時﹐使用對象看到的訊息﹕\n->"); input_to("get_msg_target", emote, pattern); return 1; } if( !undefinedp(emote["myself_target"]) ) emote["myself_target"] += msg + "\n"; else emote["myself_target"] = msg; write("->"); input_to("get_msg_myself_target", emote, pattern); return 1; } int get_msg_target(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["target"]) ) emote["target"] += "\n"; write("對別人使用這個 emote 時﹐除你自己和使用對象外﹐其他人看到的訊息﹕ \n-> "); input_to("get_msg_others_target", emote, pattern); return 1; } if( !undefinedp(emote["target"]) ) emote["target"] += msg + "\n"; else emote["target"] = msg; write("->"); input_to("get_msg_target", emote, pattern); return 1; } int get_msg_others_target(string msg, mapping emote, string pattern) { if (msg == "~q") { write ("取消。\n"); return 1; } if (msg==".") { if( !undefinedp(emote["others_target"]) ) emote["others_target"] += "\n"; EMOTE_D->set_emote(pattern, emote); write("Emote 編輯結束。\n"); return 1; } if( !undefinedp(emote["others_target"]) ) emote["others_target"] += msg + "\n"; else emote["others_target"] = msg; write("->"); input_to("get_msg_others_target", emote, pattern); return 1; } int help(object me) { write(@HELP 指令格式 : edemote [-d|-p] <emote> 這個指令可以修改, 刪除 emote 或列出其內容. 加上 -d 參數會刪除 指定的 emote, -p 參數則會列出指定 emote 的內容. 列出的順序與編 輯 emote 時相同. 輸入 emote 訊息時有三個項目: 沒有目標, 指定目標或是對自己. 若 不想有某項訊息, 則直接在空白行輸入 '.' 跳過. 一個 emote 訊息可以有很多行, 在空白行輸入 '.' 結束輸入該項 emote. 編輯 emote 時可以用以下的符號來表示: $N : 自己的名字. $n : 目標的名字. $P : 自己的人稱代名詞. $p : 目標的人稱代名詞. HELP ); return 1; }