精華區beta mud_sanc 關於我們 聯絡資訊
比方現在在任務店接某任務如下: > receive b004 你成功地接取了這項任務,請加油! > quest demo 『尋找傳說中的金色便便(b004)』 黃金便便 ( 0 / 15 ) 這是做底下的呼叫 questing("obj_record","set","b004",({ppl,"任務描述","物品檔案1",所需數量, "物品檔案2",所需數量, . . })); 所以我做了底下的修改 quest_data.c 的 quested 函數的 switch("obj_record") 段 修改 set 區、query 區、finish/check_finish 區。 我加上了判斷虛擬物品的相關設定及規則,同樣的,一般來說 wiz 不需知道這裡改了什麼,只要知道如何呼叫即可。 修改時忘了做備份,蠻危險的。 改好了之後用 running code 做測試 questing("obj_record","set","x999",({me,"測試搜集虛擬物品", "m001",50,"/d/auc/blarket/ob18",10,"m002",50})); 上面是虛擬跟實體物品混在一起的情況。 > quest demo ---------------------------------------------------------------------- 『測試搜集虛擬物品(x999)』 腐臭花 ( 0 / 50 ) 『測試搜集虛擬物品(x999)』 技能值補正券 ( 1 / 10 ) 『測試搜集虛擬物品(x999)』 哀唱草 ( 0 / 50 ) 『尋找傳說中的金色便便(b004)』 黃金便便 ( 0 / 15 ) 然後更動自己身上的腐臭花數量為 10 再 quest demo: > quest demo ---------------------------------------------------------------------- 『測試搜集虛擬物品(x999)』 腐臭花 ( 0 / 50 ) 『測試搜集虛擬物品(x999)』 技能值補正券 ( 1 / 10 ) 『測試搜集虛擬物品(x999)』 哀唱草 ( 10 / 50 ) 『尋找傳說中的金色便便(b004)』 黃金便便 ( 0 / 15 ) ====================================================================== 假設某任務的某一步驟,希望玩家去打某怪物以收集某虛擬物品, 而且只有當玩家接到該步驟時才會掉。 現階段支援的其中一種做法,是修改該怪物,增加 mob_drop_rate 函數。以任務編號 x999n 步驟掉編號 q100 物品為例.. int mob_drop_rate(object ppl) { string names=ppl->query("name"); int n=questing("check",names,"x999",({"steps"})); if(n==5) { return (["q100":500]); // 滿足條件才有掉落率 } else return (["q100":0]); // 不然該物品掉落率就是 0 } 然後我們可以設定玩家可 sell(drop) 該物品,但是不能 trade, 則玩家 sell 該物就形同不讓該物品佔空間(即便沒有放棄任務), 設定不能 trade 玩家就無法轉讓,而沒有滿足 mob_drop_rate 的 條件就不會繼續掉該物品,當玩家在 ob view q100 時,則直接在 q100 的 desc 裡面備註這是哪個任務的相關物品即可,例如.. > ob view q100 白色的透布(物品編號: q100) ──────────────────────────── 販賣:可 交換:不可 任務:菲里德古堡尋親任務相關物品 <= 這是 desc ──────────────────────────── 這是最簡易的做法也是推薦的做法。 (其它做法都需要額外讀參數,沒必要) 以上,看 norr 與 justin 有無問題,若還有需要修改的部份再跟 我說。目前唯一的問題就是 mob_record 及 obj_record 都是設定 在玩家的 temp_data 區,也就是說當玩家接了某一任務跑到某一 步驟,stepX_end 才設定 mob_record 及 obj_record,結果玩家 卻 quit 了(或 shutdown),那如何讓玩家可重接? 目前的暫定做法就是自訂 stepX_check 函數來因應,我個人是支 持這樣的做法「因為 mob_record 及 obj_record 還是以任務店為 主」,以 quest npc 或 quest here 的做法就自訂函數,如同上面 自定 mob_drop_rate 函數的精神一樣。 我目前則會在近日,在羅德斯找一隻 npc,來模擬類似幻想神域的 任務進行方式,它的特色是... 一、該任務為複合型任務集合,每一步驟都要求玩家要做什麼 二、quest demo 可看到每一步驟的要求項目 1.殺怪 2.收集物品 3.找誰對話再回來 . . 三、每一步驟都會給玩家獎勵,玩家達成所有步驟給最多獎勵 後續 quest show 的支援部份則比較複雜,因為目前只有針對最後 一個步驟做分析,而且分析方法還蠻笨的。我思考的解決方法是新 增一個 stepX_award 函數,玩家在接任務時會跟 stepX_end 一起 呼叫,但是在做 quest show 時它就會單獨只呼叫 stepX_award, 而它的內定型式如下 varargs stepX_award(object ppl,object npc,string key,string var) 當有參數 var 時,它回傳的將是設定內容,這個會找時間加進去 並公告用法及相關測試結果。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.157.53