Re: [建議] 副本相關

作者: laechan (揮淚斬馬雲)   2014-04-24 07:32:17
備忘一下
1.增加 instance_multi 欄位。單人模式不會有這個欄位。
2.在 instance_rooms.c 補完副本過關資料的儲存(已完成一半)
3.在 questing("instance") 新增兩組 set/delete/query
原則一項修改的篇幅過長時,下一項修改就寫成另外一篇。
============================================================
instance_ob.c 已經加上 instance_multi 參數,這參數在呼叫
create_instance 時就要給,沒給就預設為單人模式,相關的函
數例如 questing、instance_rooms.c 也已更動。
questing("instance","create","laechan/001",
({"laechan",({laechan}),"normal/hard1/hard2/hard3","single/multi"}));
沒有第三個欄位以後,就預設為 normal、single。
沒有第四個欄位以後,就預設為 single。
所以最簡單的呼叫就是跟之前一樣,如下:
questing("instance","create","laechan/001",({"laechan",({laechan}));
並修改 instance_room.c,當房間沒有 multi 參數時,玩家會被
踢出,並 log 到 /open/wizs/log/instance.log。
==========================================================
先補完了 questing("instance","set/query/delete") 的部份。
questing("instance","set/query/delete","laechan/001",({參數群}))
參數群接的參數如下
({"normal/hard1/hard2/hard3",0/1,creator_id,破關所花的時間})
破關時間是否紀錄,完全取決於副本腳本物件的 instance_check
是否呼叫 questing("instance","set"),有呼叫就代表想紀錄,
則通常呼叫的型式如下..
data=room->query_ob_data();
t=time()-(int)data["instance_times"];
n=questing("instance","set",data["instance_id1"]+"/"+data["instance_id2"],
({data["instance_diff"],(int)data["instance_multi"],
data["instance_player"],t}));
底下說明傳回的 n 所代表的意義:
n=1 : 沒有意義
n=2 : 玩家初次突破 diff-multi 這個組合
n=3 : 玩家此次更新了 diff-multi 這個組合的最短時間紀錄
當 n>1 時 t 就是玩家破關所花的時間(秒數)。
另外,底下的呼叫允許 wiz 無條件變更資料
call instance_rooms;instance_data;"set";"laechan";"001";({參數群});1
^^
有帶 1 那個最後一個欄位的參數時,將無條件把破關時間設進
去,這時如果破關時間設為 -1 則代表初始化破關時間。
目前有考慮將「誰」破了這個這個也紀錄進去。
以上已實裝。
Laechan

Links booklink

Contact Us: admin [ a t ] ucptt.com