推 dannielz :推 14.216.22.192 07/01 09:11
推 caselook :推熱心~~ 210.59.67.8 07/01 09:40
推 dannielz :more只能接路徑不能接物件名嗎? 14.216.19.125 07/01 13:04
> more /cmds/std/_more.c
inherit "/cmds/file/_more.c";
所以它實際的本體是 /cmds/file/_more.c
> more /cmds/file/_more.c
int cmd_more(string str) {
seteuid( geteuid( this_player() ) );
return (int)this_player()->more(str);
seteuid( getuid() ); // This line isn't reached?
}
所以關鍵就是寫在 user.c 或相關繼承檔裡面的 more 函數,它是
寫在 /std/body/more.c 裡面。
然後它的 more 函數寫的落落長,跟各位分享我一般的思考做法:
1.改 /cmds/file/_more.c
因為最終 me->more(裡面塞的是檔案)
2.改 more 裡面跟 str 有關的段落
然後後者太麻煩了,所以改前者,使用我最近新學到的 get_object
int cmd_more(string str) {
object ob;
seteuid( geteuid( this_player() ) );
if(ob=get_object(str))
return (int)this_player()->more(base_name(ob)+".c");
return (int)this_player()->more(str);
seteuid( getuid() ); // This line isn't reached?
}
加上這三行,然後
> update -R /cmds/std/_more.c
/std/cmd_m.c: Updated and loaded.
/cmds/file/_more.c: Updated and loaded.
/cmds/std/_more: Updated and loaded.
因為 more 我已經讓它在 /cmds/std 下也有指令檔(繼承 file 的),
所以要 update -R 才會 /cmds/std 下的以及 /cmds/file 下的才會
一起更新。
> look
[/d/area/wiz ]
神之國度
這裡是神居住的地方,在這裡遍佈著許多美麗的花園,裡頭
開滿了漂亮的花,還有幾隻蝴蝶在花叢裡飛舞著。中間有一條小
河流,潺潺的流水聲使你忘卻了心頭的煩悶!另外,還有幾位天
神正在坐在一旁的石頭上聊著天!
明顯出口有: whitetile, quad, shadow, 和 newbie.
神之僕人(servant)
> i
You are carrying 2 objects. (Total bulk: 0 Total weight 18)
格鬥匕首(fight dagger).
小盾牌(shield).
測試 more servant、more dagger、more me、more here 都能執行。
新的版本會使用這個 more,目前使用者已拿到的版本,就改
/cmds/file/_more.c 加上那三行,然後 update -R /cmds/std/_more.c
就可使用新的版本。
※ 編輯: laechan (210.61.157.53), 07/01/2014 13:50:11
推 dannielz :感謝! body/more真的長到我頭痛XDD 14.216.19.125 07/01 13:53
→ laechan :metoo 210.61.157.53 07/01 15:04