[wizs] 系統撰寫概要
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2009/02/03 14:58)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1/6 (看更多)
簡單的系統由一個房間組成,內容大致如下...
inherit ROOM;
void create()
{
::create();
seteuid(getuid(this_object()));
if(file_exists(__DIR__+"test.o"))
restore_object(__DIR__+"test");
else
{
set("short","一個系統測試房間");
set("long",@LONG
這裡是一個系統測試用房間.
LONG
);
}
}
int save_room()
{
save_object(__DIR__+"test");
return 1;
}
重點就在上面的 save_object 與 restore_object.
if(file_exists(__DIR__+"test.o"))
restore_object(__DIR__+"test");
比方我房間寫在 /u/l/laechan/test.c,而我儲存資料的檔名叫 test.o
,也是放在 /u/l/laechan 的話,那 __DIR__ 當然就是指 /u/l/laechan/
所以上面的意思就是如果 __DIR__+"test.o" 這個檔案存在的話, 就去
restore_object 那個檔案,把資料檔 .o 裡頭的資料讀出來然後做回存
restore_object 是回存, 那 save_object 就是存檔.
另一種常見的寫法就是..
save_object( base_name(this_object()) );
我們知道 base_name 是讀取檔名, 例如上面的 test.c, base_name 的
結果就是 /u/l/laechan/test,而再去 save_object 它,自然就會變成
/u/l/laechan/test.o
也就是說 .o 實際上是系統內定的 save_object 檔副檔名.
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.225.28
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19