作者laechan (小太保)
看板mud_sanc
標題Re: [wizs] 問題╳問題2
時間Wed Mar 30 17:15:34 2011
※ 引述《justinj (黑旋風)》之銘言:
: 假如我想要#define顯示的...這個要怎麼寫
: 例如 check GUILD ----->顯示 /std/guild
: check HIR ----->顯示 "[1;31m" 之類的
: 這個是為的要有下列這種情況的
: setp HIR"設定" ----->顯示出 設定
: 也就是說可以設個顏色進去(又可以用內定的變數)
我寫了一個暫時可以用的。
:::::::::::::: /open/laechan.c ::::::::::::::
// Laechan@Sanc add in 2011/03/30
// check xx.h 的 define 變數
#include <daemons.h>
#include <config.h>
#include <race.h>
inherit ROOM;
void init()
{
add_action("check_xxx","check");
}
int check_xxx(string str)
{
object ob;
string tmp;
if(!str || str=="")
return notify_fail("check: 你要輸入東西喔.\n");
tmp=@LONG
inherit ROOM;
mixed return_check()
{
LONG
+
"#ifdef "+str+"\n"+
" return \"check: "+str+" = \"+identify("+str+")+\"\\n\";\n"+
"#else\n"+
" return \"check: 沒有 "+str+" 這個定義喔.\\n\";\n"+
"#endif\n"+
"}\n";
write(tmp);
write_file("/open/check_tmp_room.c",tmp);
if(!catch(ob=find_object_or_load("/open/check_tmp_room")))
write(ob->return_check());
else
write("沒有 "+str+" 這個定義喔.\n");
rm("/open/check_tmp_room.c");
"/cmds/wiz/_update.c"->cmd_update("/open/check_tmp_room");
return 1;
}
一、把幾個常用到的 .h 檔先 include 進來
(聖殿則預設會先 include mudlib.h 以及 color.h)
二、再用 check 指令去 show 結果
> check ROOM
=======它會先產生 /open/check_tmp_room.c 如下========
inherit ROOM;
mixed return_check()
{
#ifdef ROOM
return "check: ROOM = "+identify(ROOM)+"\n";
#else
return "check: 沒有 ROOM 這個定義喔.\n";
#endif
}
=====================================================
// 然後去 call 上面的檔案做 return_check 的動作
check: ROOM = "/std/ob/room"
Update: /open/check_tmp_room.c 不存在.
載入 的檔案從記憶體中移除.
// 然後將上面的檔案順手再移除
底下是實驗結果..
> check OBJECT
check: OBJECT = "/std/ob/object"
> check GUILD
check: GUILD = "/std/guild"
> check XXX
check: 沒有 XXX 這個定義喔.
寫更複雜一點則可以把顯示結果裡頭的 ESC 控制碼拿掉,
或換成別的字元,更動一下上面的檔案即可,我已經更動
了,你可以自行實驗..
> check HIR
check: HIR = "*[1;31m"
這也是 godware 的應用,不過不熟的話不建議使用。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.80.169.63
推 justinj :...也就是我最近問的都是同一種用法..wa~~ 03/30 17:52
→ laechan :理論上應該存在著 matlab 所用的那種方法,不過我不會 03/30 20:50
→ laechan :事實上如果 mud 是架在 win 下的話, 可以切一塊記憶 03/30 20:51
→ laechan :體來當放 mud 的地方, 這樣 write_file/read_file 就 03/30 20:51
→ laechan :可以盡情使用 03/30 20:51