Re: [建議] 副本相關

作者: laechan (揮淚斬馬雲)   2014-05-01 09:13:39
今天要做 instance_mobs 的分區,所有的現存副本都要更動,這個
由我來做,另外也要檢查 instance_rooms.c 做一些修正,最後就是
龍潭虎穴副本的實裝,屆時將關閉通往龍潭及虎穴兩區域的入口,玩
家需改由接副本的方式進入。
另外考慮到 instance 也有儲存資料的能力,instance_temp 的資料
有可能改放到這裡,做列表會比較方便,初期會採兩邊都設定資料的
方式辦理。
============================================================
instance_mobs 分區已改好,以 bdlen_dragon.c 為例..
instance_mobs=([
"0":([
"01":({"dragon2","dragon1","dragon1",}),
"02":({"dragon2","dragon5","dragon5",}),
"04":({"dragon2","dragon2","dragon1",}),
"05":({"dragon3","dragon5","dragon5",}),
"06":({"dragon4","dragon1","dragon1",}),
"07":({"dragon4","dragon2","dragon2",}),
"08":({"dragon3","dragon3","dragon2",}),
]),
"1":([
"10":({"dragon1","dragon1","dragon1",}),
"11":({"dragon4","dragon4","dragon5",}),
.
.
像這樣子依字頭做分區,則以八卦為例,它是 1.c→1000.c 這樣的
檔名,就能分為至少 9 區,每一區平均 100 多個子 key。而若是以
菲里德 001.c→700.c 這樣的檔名,也能依 "0" "1" "2" ... "7"來
分區,每一區最多 100 個子 key。
國家區域則雖然多為 r 開頭,但是國家都有將其區域做適當的分區
,因此假若副本化其檔名量也不會太多。
============================================================
instance -analyze 關於 instance_mobs 的分區的部份也已更動完
成。
> instance -analyze
解析你所在的目錄 /d/ppl/bdlen/dragon/ 中...
// 副本各房間生怪資料, 所生的怪在 instance_mob_datas 都要有定義
instance_mobs=([
"0":([
"01":({"dragon2","dragon1","dragon1",}),
"02":({"dragon2","dragon5","dragon5",}),
.
.
]),
"1":([
"10":({"dragon1","dragon1","dragon1",}),
"11":({"dragon4","dragon4","dragon5",}),
.
.
============================================================
instance_rooms.c 備份為 2014/05/01。
我設計了一個 clean_empty_irooms,它可以用來確實清掉該清掉的
副本。
> call 001;create_instance;"laechan";({laechan});"normal";0
[副本]山林小徑
你撥開草叢, 隱約地可以看見埋在雜草堆裡面的道路, 由此可以
想見這條小徑平時應該沒有什麼人在走動. 據說小徑可以通往這
座山的深處, 可是蠻危險的.
明顯出口有: north.
> call instance_rooms;clean_empty_irooms
> running
編輯結束並存檔(.). 中途放棄編輯(~q).訊息暫時中斷。
__________________________________________________________________
obs=objects();
foreach(ob in obs)
if(ob)
if(base_name(ob)=="/std/new_ob/instance_room")
write(ob->query("short")+" "+base_name(ob)+"\n");
========== 程式執行區 ==========
[副本]石室 /std/new_ob/instance_room
[副本]地底長廊盡頭 /std/new_ob/instance_room
[副本]地底長廊 /std/new_ob/instance_room 副本沒有被清掉
.
.
> home 然後離開副本
= 天上界 =
> call instance_rooms;clean_empty_irooms
> running
編輯結束並存檔(.). 中途放棄編輯(~q).訊息暫時中斷。
__________________________________________________________________
obs=objects();
foreach(ob in obs)
if(ob)
if(base_name(ob)=="/std/new_ob/instance_room")
write(ob->query("short")+" "+base_name(ob)+"\n");
========== 程式執行區 ==========
0 /std/new_ob/instance_room 這樣就清掉了
========== 程式執行區 ==========
目前設定系統週期時間每 5 分鐘自動清一次。
=============================================================
instance_ob 的副本頻道函數 instance_channel 完成。
﹝副本﹞普通難度的龍潭副本的破關紀錄產生了!
破關者:laechan 跟他愉快的伙伴們 破關紀錄:3分 27秒
通常會建議副本最後一個房間(出口所在房間)要做 instance_check,
再讓它呼叫 instance_channel 即可。
相關破關獎勵我會弄一個預設的函數去做,wiz 不想依預設的報酬時就
自訂報酬即可,唯仍希望呼叫 instance_ob.c 的特定函數執行,這樣才
能統一管理及方便修改。(類似 quest 的 set_v 做法)
LAechan

Links booklink

Contact Us: admin [ a t ] ucptt.com