[wizs] 重寫的 times_check
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間12年前 (2013/09/10 02:20)推噓2(2推 0噓 3→)留言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
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
09/10 09:01, 5F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
26