[wizs] 小寶程式教學。

看板mud_sanc (Sanctuary - 聖殿)作者 (希多)時間16年前 (2010/03/27 10:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
*如何在房間有儲存特殊參數的地方(sd後也不會消失的那種): int save_room() { save_object(base_name(this_object())); return 1; } Laechan:進階法師說道: int xxx() xxx 隨便你定 Laechan:進階法師說道: 那個不重要 Laechan:進階法師說道: base_name(this_object()) 就是讀出這個房間的 base_name Laechan:進階法師說道: 讀出來的結果 = /u/n/norr/workroom Laechan:進階法師說道: 所以變成 save_object("/u/n/norr/workroom") Laechan:進階法師說道: 也就是說 save_object 裡面接的就是路徑加檔名, 這個你要記 得 Laechan:進階法師說道: 改成 save_object("/u/n/norr/savedata") 也可以的意思 Laechan:進階法師說道: 一般如果叫 workroom.c 方便起見儲存檔就變 workroom.o 比較 容易判別 Laechan:進階法師說道: save_object 的東西預設都是 .o 檔 Laechan:進階法師說道: 這時候 call here;save_room Laechan:進階法師說道: 你目錄下就會出現 workroom.o Laechan:進階法師說道: 你會看到第二行是 data ([ ... Laechan:進階法師說道: data 就是物件的基本資料庫名 Laechan:進階法師說道: 幾乎任何物件都有 data Laechan:進階法師說道: 像你熟知的 data["level"] data["name"] Laechan:進階法師說道: 這是存資料的部份 Laechan:進階法師說道: 我再幫你加上讀資料的部份 inherit ROOM; void create() { ::create(); seteuid(getuid(this_object())); if( file_exists(base_name(this_object())+".o") ) restore_object( base_name(this_object()) ); else { set("light",1); set("no_longsee",1); Laechan:進階法師說道: 它的意思就是 Laechan:進階法師說道: 如果有看到 workroom.o 的話就 restore 它 Laechan:進階法師說道: 若沒看到才做你原先的 set Laechan:進階法師說道: 從最裡面的 () 開始往外拆, file_exists 就是若檔案有存在 Laechan:進階法師說道: restore 它, 就市回存 Laechan:進階法師說道: restore_object ( base_name(this_object()) ); Laechan:進階法師說道: save_object/restore_object 就是相對的 Laechan:進階法師說道: 現在我新增一個 south 出口 Laechan:進階法師說道: 這是用 call 設的 Laechan:進階法師說道: 然後 call here;save_room Laechan:進階法師說道: 然後 update here Laechan:進階法師說道: 現在 update here exits/south 的資料就會永存 Laechan:進階法師說道: 再來你要注意頻率問題 Laechan:進階法師說道: 你可以用直覺知道天空城的家有做這個 Laechan:進階法師說道: 假設你家裡有存五個 ring Laechan:進階法師說道: take 一個出來就會變四個 Laechan:進階法師說道: 這時一定會做 save_room Laechan:進階法師說道: save_room 就是重置 .o Laechan:進階法師說道: 它的做法就是幹掉舊的 .o 重寫新的 .o Laechan:進階法師說道: 所以假設玩家 5 take ring Laechan:進階法師說道: 所以用到 save_object/restore_object 時要注意呼叫頻率 Laechan:進階法師說道: 不然會很操硬碟 Laechan:進階法師說道: 再來的話 Laechan:進階法師說道: /d 下的目錄無法使用這個 Laechan:進階法師說道: 所以我大部份的東西才會放在我的目錄 Laechan:進階法師說道: 像天空城之家 新手盜賊說道: hmm 是/d不能讀.o ? Laechan:進階法師說道: 不是, 應該是無法寫 .o Laechan:進階法師說道: 懶得改了, 大概兩年前發現的 Laechan:進階法師說道: 現在應該有能力改啦XD 所以,重點就是,要提醒小寶改!哈哈~ -- Norr@Sanc 風,吹散了一切煩惱,只留下平靜的思考。 雨,淋落了一切紛亂,只剩下無比的快樂。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.182.179 ※ 編輯: hlead 來自: 219.87.182.179 (03/27 10:34)
文章代碼(AID): #1BhMdlxu (mud_sanc)
文章代碼(AID): #1BhMdlxu (mud_sanc)