Re: [wizs] times_check

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2013/09/07 00:15), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/3 (看更多)
理論上現在應該不會停了,心跳停止的原因在於 times_check 函數在執行過程中產生錯誤所致,一般來說會產生錯誤的片段 if(file_exists(times_check[tmp][tmp2][0]) || file_exists(times_check[tmp][tmp2][0]+".c")) { ob=find_object_or_load(times_check[tmp][tmp2][0]); if(!ob) { ob=clone_object(times_check[tmp][tmp2][0]); 大概就是將上面 find_object_or_load 及 clone_object 的部 份用 catch 包起來即可,這兩個片段的撰寫用意在於,以book 為例,實際上 cancel_effect 是呼叫到 /d/book/xxxx.c 而非 玩家身上的實體書(即實體書的存在意義變成只剩下 min-max), 但即便一堆玩家身上有實體書,/d/book/xxxx.c 本身也可能因 為系統 reborn 的緣故而清掉,因此用兩道程序重新載入。 (不過這並不是好的做法。另外 file_exists 判斷應該可略過) 目前問題比較大的是 study 而非 times_check,從這次更動的 經驗可知道當原本一個 call_out 的東西改成 times_check 方 式時最好重寫相關判斷。 以這次的問題為例,當玩家 study 時 times_check 就出現一 筆資料,因此 1.必須避免 times_check 出現兩筆以上相同的資料 要嘛避免,不然就是 times_check 有辦法判斷只有一筆有作 用目前用 file_name(book) 及 login_on 來處理。 2.必須避免因 times_check 錯誤造成玩家無法再讀 這個最好的做法就是讓原本 ppl->set_temp("study 的設定 加進 time()+n 的判斷,這樣就算 times_check 停止心跳, 經過一段時間後玩家也可以再 study。 這個修改需 shutdown。 3.在 set_times_check 及 set_times_no_save 加入心跳判斷 當呼叫者是玩家,且 times_check 無心跳時,告訴玩家訊息 並且中止 set_times。 4.實體書泛濫的問題 為避免以後玩家 book 越屯越多,將採底下處理.. 1.book 將改虛擬書 └但是上面關於 book 的修改還是可用在 egingin 等書上 2.虛擬書可用 ob read 去讀,每讀一次 a.加 0~n (0 代表可能讀了沒心得) b.加 1~n (代表讀一次至少加 1) 3.虛擬書沒有認主問題,可 ob sell 也可 ob trade,亦可 堆疊,而且方便做堆疊上限,我基本上也不會管制數量, 但是讀了一次書後要等一陣子才能再讀第二次,則是確定 的。 以上會列入下禮拜修改重點,玩家身上的實體書將無法再讀, 玩家也無法再打到實體書,但是可打到虛擬書,預定全面實裝 時間將在中秋節後(因為要改很多東西)。 預定會先新增 /std/new_ob/vobjs/b 目錄及各書本實體檔。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.157.53

09/07 17:01, , 1F
測試書店內read...下午回來後就沒在read了..然後其中
09/07 17:01, 1F

09/07 17:02, , 2F
一隻沒法子再按read(因為按過了.).但times那邊沒有.
09/07 17:02, 2F

09/07 17:02, , 3F
不過study反而還可以動..
09/07 17:02, 3F
文章代碼(AID): #1IAV-c_N (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1IAV-c_N (mud_sanc)