[wizs] 系統撰寫概要

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間17年前 (2009/02/03 14:58), 編輯推噓0(000)
留言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
文章代碼(AID): #19X-iNBz (mud_sanc)
文章代碼(AID): #19X-iNBz (mud_sanc)