作者laechan (小太保)
看板mud
标题Re: [问题] go 有问题
时间Sun Feb 24 08:25:18 2013
※ 引述《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)