[wizs] 副本修改紀錄

作者: laechan (揮淚斬馬雲)   2015-11-15 15:47:00
帶了印出來的程式碼回家,結果忘記帶回來...
不過初步在 instance_ob.c 有發現到一些寫法有問題,今天起就以
修改 instance 為主,有些程式碼視情況我會再印出來一次。
===========================================================
/std/new_ob/instance/instance_ob.c
總之先備份。
程式前面幾行的全域變數初始化宣告其實沒用,但還是保留,等以後
再移除。(初始化要在 create 函數裡面做才有用)
instance_data() 函數
回傳種類的設定部份
instance_datas (與 instance_data 傳回一樣的值)
instance_name (與 instance_names 傳回一樣的值)
instance_mob_names (與 instance_mob_name 傳回一樣的值)
switch 時原本 default 是傳回 all,改成 "all" 時才傳回 all,
避免產生不必要的錯誤。
case "del-ppl_instance":
.
.
else
map_delete(ppl_instance[0],str2);
}
以上在當初測試的時候沒發現,測試時也沒有產生錯誤,這是因為
最初只有我一人做測試。ppl_instance 是 mapping 資料,不可能
使用 ppl_instance[0] 這樣的給值方式。
問題來了,不是給 0 的話,要給什麼? 我猜應該是 s0,也就是刪
掉 s0 這個副本的 str2(玩家name) 資料。
create_instance() 函數
某些大段落的 /* */ 移除,那些是以前的寫法,用來做為與新寫
法實裝初期的對照用,現在已用不到。
有幾個 foreach 內有 if(instance_virtual) 的判斷,裡面做的
事很多重覆了,移出 foreach 之外。
多宣告一個 vroom 物件變數,用來存 virtual_room。
以上可減少 create_instance 時的負擔。
create();//呼叫前先初始化...不然mapping的資料有變更就跑了...by justin
這一行則可能會有問題,因為副本每被一個玩家呼叫載入一次,就
會呼叫一次這個函數,而該函數會做「固定的」副本腳本資料設定
,理論上,固定的資料不應該會被變更,這是原則,假設有固定資
料會變更,可以使用底下的做法
if(function_exists("reset_data",this_ob))
reset_data();
這樣就可利用自訂的 reset_data 函數,針對性的只初始化部份會
被變更的固定資料。
不過這個先保留。
該 int 函數在最後一行補上 return 1;
最後測試,我以 /std/new_ob/instance/laechan/001 的白瓦鎮黑
熊副本為例,在 instance -enter 1 時會呼叫 create_instance
函數,這時會做底下
idata["xxxxx"]=instance_comm["xxxxx"]; (xxxxx=1)
接著在進去後對第一個房間做底下的設定
> call here;set;"xxxxx";10
然後再做底下
> call 001;instance_data;"all"
房間(/std/new_ob/instance/laechan/001)-> instance_data(
"all" ) = ([
"instance_names" :"白瓦鎮黑熊討伐任務副本",
"instance_comm" : ([ "xxxxx" : 1 ]),
.
.
])
由上面可確定各副本房間的資料如果變動,不會影響到副本腳本
物件本身已設定的資料。
這裡就確定了 create_instance 時呼叫 create 是多餘的,真正
應初始化的資料,應該另訂函數來做初始化。
暫時發現的問題與待改事項
一、如何從某副本檔知道該副本的管理員被設定到哪裡?
> npc instance
═════════════════════════════════════
人物名稱            人物所在路徑               
═════════════════════════════════════
龍潭虎穴副本管理員─綾兒('instan/d/ppl/map/n6e4tin)
獅子山副本管理員─綾兒('instance/d/ppl/map/n3e11)
天蠍洞副本管理員─綾兒('instance/d/ppl/map/n6e11)
血肉長城副本管理員─綾兒('instan/d/ppl/map/n7e9tin)
百足宮副本管理員─綾兒('instance/d/ppl/map/n5e0n)
═════════════════════════════════════
從上面看不出與檔案的對應關係,但可以從 npc instance 來增加
顯示必要的標記。
二、

Links booklink

Contact Us: admin [ a t ] ucptt.com