[wizs] 重寫的 times_check

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2013/09/10 02:20), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/7 (看更多)
檔案已於 2013/09/10 01:10am 重寫完畢。 船隻原先繼承 /std/new_ob/boat.c 的部份我將 boat.c 的內容 改寫為底下 inherit BOAT; 經測試,白鳥城的小漁船會回復為原先的跑船模式 callouts Object Function Delay ------------------------------------------------------------------------------ /d/aty/bird/room/boat1 fly_next 32 「理論上」所有 inherit "/std/new_ob/boat.c" 的船都會回到 原先的模式;不是 inherit 上述檔案的船請 wiz 務必修正。 ======================================================== times_check 目前只有華麗與汙痕書店套用新的呼叫方式,我開 放 ~laechan/skycastle 的權限給 norr 及 justinj,norr 為 可讀可寫,justinj 為可讀。 (/open/cmds/times_check.c 則大家都可讀可寫,但請大家小心 修改,要改之前務必線上喊一下並確定我在線上時沒在發呆) 華麗與汙痕書店主要是 read_xxx 函數及 times_check 函數。 (用 times_check 這個函數名,是要捨棄 cancel_effect 這個 較不泛用的名字) 現行的 times_check 呼叫方式如下 times_check->set_times_check(names,shop_files,({str}),sk/10); 這也是一般的呼叫法,事實上第 1~3 參數不一定要放什麼,只 要符合其類型(字串,字串,mixed)就可。 times_check 會將你傳去的三個參數原封不動地放進一個 mixed 裡頭,請見 times_check.c: times_check+=({ ({names,files,tmps}) }); <= 用 ({}) 包住 我在書店內則設計第 1 個參數傳玩家的 id,第 2 個參數傳書 店的檔名,第 3 個參數傳 ({"玩家正在讀的書名"})。 則寫在書店內的 times_check 函數,其一般格式亦如下 int times_check(string names,string files,mixed tmps) { . . 也就是說 set_times_check 傳了什麼給 times_check,它就原 封不動地再傳回給書店,這時候我們就知道 1.哪一個玩家要接受 times_check -- 透過 names 2.files -- 這時候實際上是無作用的(因為有 shop_files 了) 但是若有必要就可做 if(files!=shop_files) 這類的判斷 3.該玩家正在讀的書名 -- 透過 tmps[0] ========================================================= 最後是書店實測結果,並介紹 times_check.c 的四個函數。 一開始,times_check.c 裡面無資料: > call /open/cmds/times_check;return_times_check times_check= ([ ]) times_no_save= ([ ]) 目前心跳參數: 1 然後開始讀書 > read 災難之牆DIY 你刷卡付了 5000 影特幣,向店家租了《災難之牆DIY》。 書店小姐:若有事要中途離開,不要離開內閱室太久喔~^_^ 書店內閱室 這裡是設於書店一角的開放式內閱室,除了提供巫師們租借 書報雜誌在裡頭閱讀,也有簡易的餐飲服務。 明顯出口有: south 和 north. 讀了書之後若要再讀,比方讀隨便一本書,會出現底下訊息: > read 時空之門導論 read: 你已經有租了《災難之牆DIY》在看了喔。 在等待的期間,下底下四個指令 > call /open/cmds/times_check;return_times_check times_check= ([ "1378748057" : ({ ({ "laechan", "/u/l/laechan/skycastle/room/street/alley_shop1", ({ "災難之牆DIY" }) }) }) ]) times_no_save= ([ ]) 目前心跳參數: 1 > call /open/cmds/times_check;check_names;"laechan" times_check 區: ({ "laechan", "/u/l/laechan/skycastle/room/street/alley_shop1", ({ "災難之牆DIY" }) }) 52 秒後. times_check_no_save 區: 目前 times_check 心跳參數: 1. > call /open/cmds/times_check;check_names_in_files; "laechan";"/u/l/laechan/skycastle/room/street/alley_shop1" 房間(/open/cmds/times_check)-> check_names_in_files( "laechan", "/u/l/laechan/skycastle/room/street/alley_shop1" ) = 10 > call /open/cmds/times_check;return_tmps; "times_check";"laechan";"/u/l/laechan/skycastle/room/street/alley_shop1" 房間(/open/cmds/times_check)-> return_tmps( "times_check", "laechan", "/u/l/laechan/skycastle/room/street/alley_shop1" ) = ({ "災難之牆DIY" }) 之後過一段時間,書店的 times_check 函數順利被呼叫: 你閱讀了《災難之牆DIY》裡頭艱深的文字,得到了一些心得... 你的技能,『災難之牆』進步了(1003)! 這時再 call return_times_check 檢查,確定有持續設定 > call /open/cmds/times_check;return_times_check times_check= ([ "1378748427" : ({ ({ "laechan", "/u/l/laechan/skycastle/room/street/alley_shop1", ({ "災難之牆DIY" }) }) }) ]) times_no_save= ([ ]) 目前心跳參數: 1 * 你離開了書店,書店小姐將你租閱的書收走囉。 ===================================================================== 到這裡,書店與 times_check.c 之間的溝通就正常建立。 不管是 update 書店或是 update times_check.c,都不會影響 times_check 的正常運作。 預定明天開放書店讓大魔導士測試內閱並觀察一天,若沒問題 就能進行 /std/new_ob/boat.c 的改版工作。 之後請所有船隻繼承 /std/new_ob/boat.c 請勿自己寫。 (日後要加什麼功能請優先考慮加到 /std/new_ob/boat.c) Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.157.53

09/10 02:28, , 1F
辛苦啦~
09/10 02:28, 1F
※ 編輯: laechan 來自: 210.61.157.53 (09/10 02:31)

09/10 08:34, , 2F
之前是不想改到new_ob的部分...才想要用inherit然後
09/10 08:34, 2F

09/10 08:35, , 3F
+自己寫一套..
09/10 08:35, 3F

09/10 09:00, , 4F
如果是值得推廣到全部船隻艦艇的功能就考慮將其寫進
09/10 09:00, 4F

09/10 09:01, , 5F
new_ob,自寫專用繼承檔是像天空城之家(商店)那樣
09/10 09:01, 5F
文章代碼(AID): #1IBX5GiV (mud_sanc)
文章代碼(AID): #1IBX5GiV (mud_sanc)