精華區beta mud 關於我們 聯絡資訊
這類系統由三個核心組成 一、任務腳本 該腳本長得類似底下 name=店小二送信任務## // 任務名稱 keyword=送信## // 任務觸發關鍵字 step1={ npc=/npc/waiter.c // 觸發 npc msg= 店小二: 你好啊~ 人客 店小二: 剛剛有人送封信來, 要我轉交給老闆 店小二: 他就在附近的當鋪找他的老朋友聊天 店小二: 可是我現在忙不過來, 你可以幫我跑個腿嗎? }## step2={ npc=/npc/boss.c msg= 你道: 你是茶棧的老闆嗎 店老闆: 是啊, 請問你是...? 你道: 你店裡的小二叫我把這封信交給你 你將那封信交給了老闆 店老闆: 唉呀, 還麻煩你跑一趟, 真是太謝謝你了. }## step3={ npc=/npc/waiter.c msg= 你道: 我已經把信交給你家老闆了 店小二: 真是~~~太謝謝你了, 人客 店小二: 來來來, 我請你吃東西 店小二給了你一支雞腿 你道: 這是要給我吃的嗎? 店小二: 不是, 這是武器唷, 人客 店小二: 記得 wear chicken leg 喔~^_^ reward=/weapon/leg.c }## end## // 腳本到這裡結束 二、任務進行主要指令. 例如指令叫 ask, 或 quest > ask 怪物id about 關鍵字 > quest 怪物id about 關鍵字 以這樣的指令格式觸發任務。 三、任務處理系統   該系統主要處理三件事.. 1.讀入腳本 2.回應 quest 指令送來的請求 3.儲存玩家已進行的任務(包括已解完or未解完)的相關資料 ============================================================= 比方某任務共有 n 個流程,必須在 m 隻 npc 之間跑來跑去, mud 傳統的任務撰寫方式是.. 一、必須把任務相關函數及資訊,寫在 m 隻 npc 的檔案裡頭。 二、必須設計它們之間彼此的流程順序。 三、若某一隻 npc 同時是多個任務需用到的 npc,則該隻 npc 就得加入非常多的處理函數,或者在同一個函數裡頭必須依   據不同的任務做不同的判斷。 以這種型式撰寫任務,則任務流程越多,需動到的 npc 檔案數 就越多,跨區域型的任務甚至必須請上級 wiz 開通相關權限, 或請其協助撰寫任務相關判斷及進行函數,而且流程修改不易, 在管理上也非常困難,而且要改這個任務進行中顯示的任何訊息 ,就得去動相對應的 npc 檔案。 但是若採用以任務腳本為主的任務系統,就有底下優點.. 一、任務全流程都寫在一個腳本檔內   這樣不僅管理上方便,修改任務、調整流程順序、增刪流程   、變更任務相關 npc 等都很簡單。 二、完全不需要去動到任務進行中的相關 npc 檔案   這樣就沒有權限問題,wiz 可以自由地調用所有的 npc 來當   做任務相關 npc。 三、任務的相關更新變得很簡單 包括任務本身的更新,以及玩家任務資料的更新等。例如某   任務你希望所有玩家「全部重解一次」,只要在任務處理系   統裡撰寫相關處理的函數,即可一次更新所有玩家關於該任   務的已解/未解完資料。 四、支援任務的隨機變動   例如.. string tmp,scripts=read_file("/script/001"); // 讀取第一個腳本 if(player_finish_this_quest()) // 當有玩家解完這個任務 { if(strsrch(scripts,"leg.c")) scripts=substr(scripts,"/weapon/leg.c","/weapon/dagger.c"); else scripts=substr(scripts,"/weapon/dagger.c","/weapon/leg.c"); } rm("/script/001"); write_file("/script/001",scripts); 這樣當A解過該任務時,下次換B解該任務,它的報酬就會變   成 dagger.c,然後又換C解任務時,報酬又變回 leg.c =================================================================== 簡單的說,就是需要撰寫.. 一、任務專屬指令 二、任務專屬處理系統 三、任務腳本 在將來 wiz 人手肯定不足的情況下,撰寫這樣的系統,則至少 「玩家應該有能力協助撰寫任務腳本」這一點是可以期待的,傳 統的做法是請玩家提供點子,然後 wiz 將其化為程式碼寫進npc 中,雖然這樣可以節省開發新任務的時間,但是實際上最花時間 及人力的仍然是coding,以及 debug。 小小一點心得,與大家分享。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.9.179 ※ 編輯: laechan 來自: 122.117.9.179 (10/02 22:38)
kasase:不錯,我也來試著在merc架構下做做看 10/02 22:38
szany:單純給個讚! XD 10/02 22:58
pssjim:這id好像是? 但是我忘記mud id了...是superchan(布衣老大)? 10/03 10:24
justinj:sanc_mud的大神... 10/03 10:40
happyhero:推~~~ 10/03 10:43
聖殿有寫這個, 目前已經可以把「腳本」反解析為「攻略」 > quest show n000 ┌────────────────────────────┐ │任務編號:n000 │ │任務名稱:在新手村生活的第一步 │ │任務關鍵字:newbie quest, 新手任務 │ ├────────────────────────────┤ │任務流程: │ │ │ │ 1.與領航員謬西(Musi)對話. │ │ 2.與道具店老闆伊菲(Effie)對話. │ │ 3.與裝備大師德雷依(Derlei)對話. │ │ 4.與旅館老闆娘諾雅(Norya)對話. │ │ 5.與藥劑師卡翠亞(Katwuya)對話. │ │ 6.與新手導師格拉夫(Galuf)對話. │ │ 7.與武器大師卡諾斯(Kanors)對話. │ │ 8.最後再與領航員謬西(Musi)對話, 任務結束. │ ├────────────────────────────┤ │任務獎勵: │ │ │ │ 新手基金 100000 影特幣. │ └────────────────────────────┘ 自動反解析是我寫這個系統的主要目的之一。 因為這樣事後想將其補成正式的攻略(比方補上 npc 走法)時,就會 會很省時間。 因為好處多多,所以做個心得分享。 ※ 編輯: laechan 來自: 101.13.131.160 (10/03 12:32)
tawi:大推 10/03 17:24
cookies0924:這篇很有參考價值. 10/06 09:02