看板 mud_sanc 關於我們 聯絡資訊
打報告打到快睡著,這篇大致提一下做法。 首先去 read .o 檔,然後 explode strs=read_file(files+".o"); tmps=explode(strs,"\n"); 接著土法煉鋼,讀出每個變數 foreach(tmp in tmps) { i=0; while(tmp[i..i]!=" ") i++; vars=([tmp[0..i], } 然後去產生一個臨時的 .c 檔: content=@LONG inherit DAEMON; LONG ; content+="mixed "; foreach(tmp in tmps) content+=tmp+","; content+="\n\n"; content+=@LONG void create() { ::create(); seteuid(getuid(this_object())); LONG; content+=" restore_object("+file+");\n}\n\n"; write_file("/open/tmp_load.c",content); update_files("/open/tmp_load"); 這樣 /open/tmp_load.c 就能用來 restore 目標 .o 檔,並且 將載入的變數資料也全部存在這個 tmp_load.c 物件裡頭。 當然實際上跟 running 一樣,這東西寫起來是落落長的,不過 如果能寫出來,好處很多。 LAechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.106.224 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1548918823.A.EBD.html
laechan : 其實用 javascript 也可以寫 .o 檔的讀取工具,年後 01/31 15:14
laechan : 我找時間寫 01/31 15:15
typers : 沒有值的屬性不會出現在 .o 檔 01/31 16:41
typers : 直接decode為mapping, 編輯後再encode會比較通用 01/31 16:48
typers : 可參考 https://lostsouls.org/grimoire_json 01/31 16:51
typers : 可以修改來處理 .o 格式 01/31 16:53
laechan : 呃沒要增刪改,讀取而已,堪用即可 01/31 17:53