mud 板


LINE

看板 mud  RSS
戰爭系統有幾個關鍵元素 1.戰爭腳本檔及腳本物件 腳本檔應包含怪物/npc的召喚及命名,盡可能把戰爭所需的一切設定 都寫在腳本內,讓一個腳本=一場戰爭,這樣類似的戰爭以後就僅需 複製腳本檔來改即可。 另外,腳本檔的架構也應單純,易懂,好理解。這樣即便是玩家,看  過腳本檔後也可以有能力提供戰爭腳本。 然後再透過寫好的工具,將腳本檔→腳本物件,則一場戰爭基本上就  是讀取腳本物件的資料來進行。 2.戰爭管理指令 例如假設指令為 war,則比方 war read 腳本檔,就是讀取腳本檔的  資料,轉成物件檔來儲存;war half 腳本名,則可以暫時中斷某一場 戰爭的進行;war stop 腳本名,則可以中止一場戰爭;war test 腳 本名,則可以進行一場戰爭腳本的相關測試等;.... 對 wiz 來說,撰寫這些語法就能對戰爭做各種管理;對玩家來說,例  如 war check 語法,可讓玩家查詢正在進行中的戰爭;war list,可 讓玩家查詢 mud 內目前共有哪些戰爭可以玩、各戰爭的基本資訊為何  等等。 3.怪物/npc 繼承檔 戰爭中召喚出的怪物或 npc 與一般的怪物/npc是不一樣的,因此需有  自訂的繼承檔讓這些怪物或 npc 來繼承。 其中,最為關鍵的就是「召喚出的怪物/npc 在腳本檔內的定義方式」。 例如以直覺的想法來說,腳本檔內的怪物定義區可以這樣子定: 等級 種族 怪物名 .... mobs= mob1:90,beast,魔獸戰隊,... mob2:92,dragon,魔龍戰隊,... . . ## 然後,我在 sanc 撰寫任務系統時,在腳本內導入了 macro,在 macro 欄位內的東西會原封不動變成腳本物件內的 #define 區,例如 // 這一區可由玩家提供資料,由 wiz 來進行設定 macro= #define MOBS ([\ "mob1":({90,"beast","魔獸戰隊",...}),\ "mob2":({92,"dragon","魔龍戰隊",...}),\ ]) #define ROOMS ([\ "church":"/area/town/church",\ ])## 上面的東西在 xxx.c 腳本物件內就會放在檔頭的 #define 區。 這樣一來,例如戰爭的第 n 步驟,是召喚魔獸戰隊跟魔龍戰隊進攻城鎮 內的教堂: war_n= 魔王軍進攻了城鎮內的教堂!! clone_mob("mob1",5,"church") clone_mob("mob2",5,"church")## 接著,假設玩家必須清掉 church 内的所有怪物,戰爭才會往下一步驟 進行時,就必然會有一個 check 機制: war_check_n= war_check("check_mob","WAR_MONSTER","church")## 上面的意思是說,war_check 是一個寫在腳本物件繼承檔內的函數,各腳 本都可以使用的,而在 war_check 這個函數內則定義了各種的 check 判 斷,例如 "check_mob","WAR_MONSTER","church" 這一組資料就是用來判 斷 "church" 這個房間的 WAR_MONSTER 怪物死光了沒: int war_check(string kind,string mob_name,string room_name) { switch(kind) { case "check_mob": // 抓不到房間資料就當做怪物已打死 if(!room=find_object(ROOMS[room_name])) return 1; // 在 room 裡面找不到 id 為 mob_name 的怪物就當作怪物已死光 if(!present(mob_name,room)) return 1; return 0; break; . . } } 這樣當戰爭管理系統對 war_n 做定期判斷時,只要 war_check_n 回傳的 值不等於 1,戰爭就永遠停留在第 n 步驟,直到怪物被打死或消失。 以這種型式所寫成的戰爭系統,依個人經驗,它也可以支援「攻城戰」, 例如一座在 mud 內早已存在的城,有城門及城內區域等,假設攻城戰必須 由 wiz 開啟(例如每個禮拜六晚上),則第一步驟就是召喚出「城門 mob」 ,例如它是一隻打不還手的 mob,血量有一億,而線上最強的玩家每秒可 以給予該城門 mob 的傷害值最多就是 1 萬時: 那如果只有一名玩家攻城,他要打 10000 秒才能把城門打破 反之,如果有 30 名玩家參與攻城,可能就只需幾百秒就能把城門打破 war_check_1= war_check("check_mob","WAR_MONSTER","castle_door")## 這樣當城門被攻破(打死)時,war_check_1 找不到城門怪了,戰爭管理系 統就會開始呼叫 war_2 進行下一步驟。 上面有提到一個「戰爭管理系統」,這東西其實可以跟「戰爭管理指令」 寫在一起,例如指令檔的本身也兼管理檔,或是指令檔、管理檔分開寫亦 可。 它主要是做進行中的戰爭的流程控管、戰爭的自動開啟與否、以及下次戰 爭需要再等多久才能開啟等等,它亦可做「戰爭成就歷史資料統計與查詢 」,例如說: 1.某一場戰爭最快被結束的時間 2.單一玩家在某一場戰爭中最多的殺怪數 3.單一隊伍在某一場戰爭中最多的殺怪數 4.戰爭中的最終階段BOSS被KO的最短時間 . . 以上,一點分享。我正在 sanc 撰寫這樣的系統。 Laechan@Sanc --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.157.53
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud/M.1450664462.A.5B0.html laechan:轉錄至看板 mud_sanc 12/21 10:22
1F:推 congra : 小寶認真推~ 112.105.48.28 01/03 01:03







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP