[wizs] 副本修改紀錄

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間10年前 (2015/11/15 15:47), 10年前編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/1
帶了印出來的程式碼回家,結果忘記帶回來... 不過初步在 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 來增加 顯示必要的標記。 二、 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.224.234.15 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1447573624.A.F43.html

11/15 21:18, , 1F
剛打電話要家人幫我裝進牛皮紙袋寄來給我,再印出來
11/15 21:18, 1F

11/15 21:18, , 2F
其實也ok只是浪費紙,要印也應該是要印修改後的
11/15 21:18, 2F

11/15 21:19, , 3F
預計 instance_ob.c 檢查完後就查 instance_rooms.c
11/15 21:19, 3F

11/15 21:19, , 4F
因為這個關係到副本物件佔用記憶體的清理是否正常
11/15 21:19, 4F

11/16 09:08, , 5F
今天繼續憑印象檢查及修正 instance_ob.c
11/16 09:08, 5F
※ 編輯: laechan (210.61.157.53), 11/16/2015 09:49:00
文章代碼(AID): #1MI3Xuz3 (mud_sanc)
文章代碼(AID): #1MI3Xuz3 (mud_sanc)