Re: [問題] go 有問題
※ 引述《neca (尋找一片海洋)》之銘言:
: 當我去查看 /cmds/std/go.c這個檔案的時候,
: 這訊息是這樣的:
你可以在這裡加一行..
write("有執行到這裡.\n");
: if( !(dest = env->query("exits/" + arg)) ) {
: write("這個方向沒有出路。\n");
: return 1;
: }
然後 update /cmds/std/go.c 再執行一次 north 或 south,
看看是否有跑出「有執行到這裡」。
另外,我覺得用 if(!dest=env->query("exits/"+arg)) 就夠
了。
: 很明顯的它是要去query 現在這個房間裡,"exits"這個字串的值,
: 在/d/snow/river1.c這個檔案有這樣定義:
: set("exits", ([ /* sizeof() == 1 */
: "south" : "/d/snow/npath3",
: "north" : "/d/chixiao/river2",
: ]));
一般 lpmud 都是這樣設定出口的。
: 我想應該會被query到正確的值才是,但是系統卻一直跟我說這個方向沒有出路,
: 請問各位先進有何方法可以解決,或是有什麼debug的方向?
: 關於第二目標是,我用roommaker可以創建一個新的房間,
: 可以設定short、long,但是在saveroom的時候出現錯誤,
: 它會呼叫到
: prop = env->query_entire_dbase();
: 然後跑進 /feature/dbase.c
: foreach(ob in previous_object(-1)) {
: if( (geteuid(ob) == ROOT_UID)
: || (geteuid(ob) == getuid(this_object()))
: || master()->valid_write( base_name(this_object()), ob, "write_file"
: ) )
: continue;
: error("Permission denied.\n");
: }
: 大意是說,我的euid不對,權限自然就不對了。
: 另外,在log檔有看到很多類似這樣的警告
一般來說我的習慣是,比方我要設定一個物件是可以做 save_object
的,我有三種做法..
1.直接 save_object 到與該物件相同的目錄或其子目錄下
(因為權限相同)
2.若該物件有宣告 create 的話,就在裡頭加上
void create()
{
seteuid(getuid(this_object()));
.
.
3.或將要 save_object 的目錄權限設為 [rw]。
因為通常 valid_write 後面接 "write_file" 這樣八成是
在判定該目錄是不是可寫,一般來說就會先呼叫 access.c
來判斷。
: /std/room.c line 15: Warning: Unknown #pragma, ignored.
: 我不曉得是不是有什麼影響,凡是有用到#pragma的部份全部都會出現Warning
: 還請有經驗的前輩們給點方向
: 謝謝:)
你可以試試拿掉 #pragma 再 try try。
一般後面接 optimize 或 save_binary,可能 fluffos 對
這方面已經有預設處理這樣,純猜測。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.165.192.117
※ 編輯: laechan 來自: 1.165.192.117 (02/24 08:26)
討論串 (同標題文章)
mud 近期熱門文章
PTT遊戲區 即時熱門文章
28
63