作者laechan (小太保)
看板mud_sanc
標題Re: [閒聊] 煩啊! 副本
時間Mon Mar 17 20:49:21 2014
※ 引述《laechan (小太保)》之銘言:
: 02、進入每一個房間的 buff_msg 及定身處理
有 init_instance 可用,基本上先不管定身,我目前決定採行的
做法是將 buff_msg 以 tell_object 的型式告知副本內的所有人
instance_data=([
"084":(["enter_msgs":({"test1.\n",
"test2.\n",
"test3.\n"}),
]),
]);
它的執行結果就是如下
test1. <= 進入房間後沒多久
test2. <= 又經過幾秒後看到這行
test3. <= 然後又經過幾秒後看到這行
instance_data 的結構很簡單,就是以房間檔名做為 key name,
下設多項資料,而 instance_ob 就根據所設定的資料來跑各種效
果,像設定了 enter_msgs,在 init_instance 就有相對應的欄
位來讀取,如下..
tmps=instance_data[files]["enter_msgs"];
j=sizeof(tmps);
for(i=0;i<j;i++)
tmps[i]=({ ({ppl_name+"##"+tmps[i]}),5+i*5});
"/open/cmds/times_check"->set_times_no_save(
INSTANCE_ROOMS,INSTANCE_ROOMS,tmps);
傳統的做法是以 call_out 或 heart_beat 的型式來跑 buff_msg
,現在有 times_check 就可以改讓 times_check 來跑,它有一
個前提就是 buff_msg 並不需要嚴謹執行完畢,比方說跑到一半
times_check 臨時故障或怎樣,「沒執行或沒跑完也沒關係」。
這就是為什麼寫副本系統前要先完成 times_check 的原因。
這禮拜應該可以完成定身的部份,並測試「定身 + buff_msg」。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.79.50
1F:→ laechan :明天出差,應該沒時間coding,所以還是以編輯這篇為主 03/17 23:55
順便複習 set_times_no_save 的語法
比方我要 times_check 跑 n 筆資料,times_check 有內迴語法
times_check->set_times_no_save("名稱","檔案",
({
({ ({要傳送的資料串1}),秒差1 }),
({
({ ({要傳送的資料串2}),秒差2 }),
.
. }));
秒差的意思就是比方我要三筆訊息各隔五秒,那就是 0 5 10 這樣,
times_check 在建立內迴的過程中會自動為秒差加上 time()。
其實我不應該拿 001.c 做為範例,明天晚上有空會再為 001.c 做些
修改。
※ 編輯: laechan 來自: 61.224.79.50 (03/18 00:02)
2F:→ laechan :目前最麻煩的是如何判斷房間的怪物已死光,最終可能 03/18 09:20
3F:→ laechan :還是得依賴 times_check 來做流程控管,但會不嚴謹 03/18 09:21
4F:→ laechan :另一個做法是房間的限制性心跳判斷這比較可行 03/18 09:22
5F:→ laechan :它的好處比較多,缺點就是times_check用不到 03/18 09:23
6F:→ laechan :開會開到想睡……空氣不流通 03/18 15:26