【介紹】 近日有一項任務修復委託,是要處理萬聖節任務的部分內容, 這邊我將分享我修復的經過,基本上所有任務的修復手法都是 差不多的思路。
【教學開始】
在開始前,先跟大家介紹 Quest.wz 的節點功能。
nextQuest = 下一個任務 exp = 任務完成獎勵經驗 money = 任務完成獎勵的金錢 npc = 任務所要找的NPC job = 任務所要求的職業 count = 任務所要求的物品數量 id = 任務所要求的物品ID end = 任務結束時間 例 2009102112 = 2009年10月21日12點 start = 任務開始時間 例 2009102112 = 2009年10月21日12點 interval = 重複接到任務的間隔時間 normalAutoStart = 任務自動開始 startscript = 達到條件後可透過腳本開啟任務說明。參數內容 q任務腳本代碼s endscript = 達到條件後可透過腳本開啟任務說明。 參數內容 q任務腳本代碼e
最開始客戶回報的問題為
這個任務代碼是10074 任務名稱 變身為珮頓 無腳本執行 是因為這個卡住導致後面的任務沒辦法解 它的功能就是,給變身藥水,然後任務可以放棄重新接,重新拿 在這邊我需要瞭解的有以下幾點 1. 這個任務具體是怎麼開始的? 2. 這個任務的開始與結束需要什麼條件? 3. 任務具體的破解流程是什麼?
其中,查找官方任務攻略是最重要的,修復要盡可能還原,
接著我們要查看任務怎麼開始的? 我們直接查看導出的 Check.img 查找任務代碼 10074 看看具體怎麼設計
從資料可以得知,任務開始的條件為 1. 任務 10073 為完成狀態 (2) 2. 找到 NPC 2120000 3. 任務有日期限制 4. 這個任務在接取時,會透過任務腳本 10074 進行
得知狀況後,我決定將日期刪除,並且從資料表 queststatus 中, 直接先讓我的角色對 10073 這個任務是完成狀態,並且召喚NPC 2120000
NPC 順利亮出燈號可以接,但卻發現點了沒反應, 端口似乎沒有這個任務需要的腳本。
現在 我們必須親自寫出一篇腳本。 從一開始的回報跟攻略我們可以知道,這個任務在接取後會給一個變身藥水, 並且不用任何條件。
這邊先給任務腳本常用的判斷
isQuestActive() = 任務啟動中判斷 isQuestFinished() = 任務完成判斷 getQuestStatus() = 獲取任務狀態 1 =進行中 2 = 完成 forceCompleteQuest() = 強制任務完成 forceStartQuest() = 強制任務開始 sendAcceptDecline("文字") = 顯示接受或拒絕選項
我直接參考別的任務腳本寫法,寫出了一篇符合要求的腳本。 function start(mode, type, selection) { if (mode == -1) { qm.dispose(); } else { if (mode == 1) status++; else status--; if (status == 0) { qm.sendNext("您好,看來你需要一些幫助,我想我能幫到你。"); } else if (status == 1) { qm.sendNextPrev("我將給你特別的變身藥水,但相對的,你需要完成一些解咒工作。"); } else if (status == 2) { qm.sendAcceptDecline("那…我就來開始吧!這是給你的道具!"); } else if (status == 3) { qm.gainItem(2210022, 1); qm.forceStartQuest(); qm.dispose(); } } }
現在任務可以正常接取了。
為此,客戶回報的問題已解決,接下來要處理第二項問題。
10074後一個的任務,點選畫框會有NPC對話,但腳本沒有支援。 這裡提到後一個任務,也就是 10075 沒有腳本支援, 我直接查看攻略瞭解 10075 是怎麼玩的。
從下圖可以知道,要到一個叫做 像框室 的地圖,點選圖畫並按照順序, 可以進入最終的隱藏地圖破解任務。
而在實際查看後得知,上面的相框都是NPC,並不是任務腳本, 因此我們要做出對話NPC,同時要在腦袋中思考整篇腳本的製作邏輯。
我們重複前幾個步驟,瞭解整篇任務的原先官方設計後,得出腳本的設計條件。
1. 畫框要按照順序才能解 2. 如果沒按照順序則沒反應 3. 要玩到這任務需要 10074 這個任務正在進行中
接著就是考驗腳本邏輯的時刻了,這邊就是經驗累積, 這裡,我直接拿其中一個腳本完成品做解說
這裡的任務 5000 系列的任務,是我自訂的任務代碼,方便腳本進行判斷, 請記得如果要做類似設計時,要先確認自己自訂的任務代碼, 是不是已經存在於 Quest.wz 中。
接著就依此類推的設計,所有腳本的範本如下,可拿去參考。
|