作者laechan (小太保)
看板mud_sanc
標題[wizs] base_shop.c 研究
時間Sun Jan 8 11:11:38 2012
要改之前先研究一下。
基本上每間商店都有一個 storeroom.c,每一間商店的 storeroom
都是獨立的。
商店被載入時會呼叫 create_obj,用來處理 data["obj_num"] 所
設定的商店物品資料,因此,只要儲存了 data["obj_num"],下次
就可交由 create_obj 函數做自動載入或手動的載入,例如..
system eq_shop save/restore
system wp_shop save/restore
但是這裡要對 create_obj 函數做修正,加入 storeroom 是否為
原先的 storeroom 的判斷..
新載入的 - 那就執行原先的 create_obj 函數段
舊有存在的 - 那得清空 storeroom 裡面的東西再做載入
現在的重點就是儲存檔會不會過大的問題。因此基本上我還是比較
傾向手動的儲存及回存,重點在於做回存時多做一道手續:資料的
過濾及整合,這樣就不會使資料在做回存時有遺漏,例如..
回存前的 obj_num = xx1 : 50,
xx2 : 30,
xx3 : 20
做回存的 obj_num = xx1 : 40, 變少
xx3 : 40, 變多
xx4 : 60, 新資料
↓ 經過整合
回存後的 obj_num = xx1 : 50, 採較多的
xx2 : 30, 採較多的
xx3 : 40, 採較多的
xx4 : 60, 新加入的資料
實際做法就是 restore 前先讀 data["obj_num"], 然後將其拆成
兩個 mixed 資料(以免資料消失或變更), 之後做回存, 再比對資
料, 中間可能得用一下 call_out 做一些延遲處理.
因此,新商店需要改的就是增加 save_room 及 restore_room 兩
個函數,以及將它們搬離 /d 其它都不需要動,然後更改 system
指令新增語法即可。
這個有空會試做看看,而且我也想實驗反饋系統。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 223.141.173.94
1F:→ laechan :norr 我想放在你目錄下的 room/ 應該是可行的 01/08 11:17
2F:→ laechan :room/ 或 special/ . 我目錄太多東西了 01/08 11:17
3F:推 hlead :嗯..是可以,可是通常新開個資料夾存會比較好吧... 01/08 12:07
4F:→ hlead :像是 storeroom/ 之類的... 01/08 12:07
5F:→ hlead :我覺得可以儲存部分可以寫在clean_up()之類..avert 01/08 12:09
6F:→ laechan :對了其實還有一件事,就是儲存檔是可以跟物件檔不同目 01/08 12:24
7F:→ laechan :錄的,所以recall處的商店或許就不需要搬目錄 01/08 12:24
8F:→ laechan :寫在 clean_up 我怕日後物件資料太大時會出問題 01/08 12:24
9F:→ hlead :我想說clean_up執行率比較不頻繁..avert 01/08 13:20
10F:→ laechan :如果它執行失敗會造成系統的reborn出問題,這部份你可 01/08 18:41
11F:→ laechan :以參考寫在 weather_d.c 的 clean_up. 以前聖殿出過 01/08 18:42
12F:→ laechan :一種error就是這麼來的(某些物件突然載入失敗,但重新 01/08 18:42
13F:→ laechan :手動update會好) 01/08 18:42
14F:→ hlead :嗯,我是指stoneroom的自動clean_up.. 01/08 18:52
15F:→ hlead :自動 -> 自定 01/08 18:52
16F:→ laechan :storeroom 是 new 出來的物件這樣比較不保險 01/08 19:13
17F:→ hlead :soga.. 01/08 22:55
18F:→ laechan :對了順便確定一下有此需要的商店,recall n,s, 還有哪 01/09 11:03
19F:→ hlead :我覺得目前就那兩個就差不多了吧... 01/09 13:03
20F:→ hlead :硬要算的話,可能在加上阿里達鎮跟極北烏羅村的吧.. 01/09 13:03
21F:→ laechan :ok.. 01/09 13:43