[wizs] 戰役腳本檔 - 以羅德斯教廷戰爭為例

看板mud_sanc (Sanctuary - 聖殿)作者 (揮淚斬馬雲)時間8年前 (2017/02/07 10:03), 8年前編輯推噓0(003)
留言3則, 1人參與, 最新討論串1/2 (看更多)
[2017/02/09更新] title=羅德斯教廷戰爭## date=2017/02/07## steps=11## mobs= dragon: HUMAN_MOB+"dragon" lionorc: HUMAN_MOB+"lionorc" orc_1: HUMAN_MOB+"orc_1" orc_2: HUMAN_MOB+"orc_2" orc_3: HUMAN_MOB+"orc_3" orc_leader1: HUMAN_MOB+"orc_leader1" orc_leader2: HUMAN_MOB+"orc_leader2" orc_leader3: HUMAN_MOB+"orc_leader3" nola: HUMAN_MOB+"nola" mamo: HUMAN_MOB+"mamo" balan: HUMAN_MOB+"balan"## header= #define STONE "/d/stone/room/la13e4.c" #define FELID "/u/l/laechan/special/room/felid_war.c" #include "/d/map/isalon/path.h"## step1_times=0## step1_plans= war_msg(HIR"西方的獸人大陸在亞斯德死後突然騷動起來...\n"+ "各路魔獸軍團長紛紛趕回獸魔殿....一樁可怕的陰謀正醞釀著!\n"NOR);## step2_times=10## step2_plans= war_msg(HIR"血魔大帝:那個該死的賢者終於死了!大家報仇的時間到了!\n"+ HIM"軍團長-巴藍:大帝,請允許\屬下率兵當先鋒!殺他個措手不及!\n"+ "軍團長-瑪莫:大帝,讓我帶著精悍的魔龍軍團燒光人類的大陸吧!\n"+ "軍團長-諾拉:讓我來!我的獸戰騎軍團要踩平人類大陸!\n"+ HIR"哈哈哈~~~該死的人類~~~等著瞧吧!!\n"NOR); war_mob(({ ({"orc_leader3",1,"orc_3",3}),"/d/ppl/map/n5e5", ({"orc_leader3",1,"orc_3",3}),"/d/ppl/map/n5e6", ({"orc_leader3",1,"orc_3",3}),"/d/ppl/map/n5e7", ({"orc_leader3",1,"orc_3",3}),"/d/ppl/map/n5e8", ({"orc_leader3",1,"orc_3",3}),"/d/ppl/map/n5e9", }));## step3_times=10## step3_plans= war_msg(HIR"巴藍,諾拉聽令!兩人為主力部隊,由海路進攻~即刻啟程!\n"+ "瑪莫聽令!你帶魔龍軍團直攻聖殿教廷!\n"+ HIM"眾人:大帝,屬下聽令!\n"NOR); war_mob(({ ({"orc_leader1",1,"orc_1",3,"lionorc",4}),"/d/ppl/map/n5e7", ({"orc_leader1",1,"orc_1",3,"lionorc",4}),"/d/map/lodoos/room/s-1-1", ({"orc_1",3,"lionorc",4}),"/d/map/lodoos/room/br-2", ({"orc_1",3,"lionorc",4}),"/d/map/lodoos/room/sward1", }));## step4_times=20## step4_plans= war_msg(HIY"報~~~~~~~~ [一陣快馬急報驚動了教廷上下]\n"+ "獸人軍團分海陸兩路進兵蘭卡大陸了!!!\n"+ HIC"教皇:別慌, 通知各守軍緊急備戰,叫羅賓來見我!\n"+ HIY"報~~~~~~~~~~\n"+ "魔龍軍團飛越海岸朝教廷直進了!\n"+ HIC"教皇:叫所有人準備應戰!\n"NOR); war_mob(({ ({"orc_leader2",1,"orc_2",3,"dragon",4}),"/d/map/lodoos/room/ws-1", ({"orc_leader2",1,"orc_2",3,"dragon",4}),"/d/map/lodoos/room/ws-2", ({"orc_leader2",1,"orc_2",3,"dragon",4}),"/d/map/isalon/1-6", ({"balan",1,"orc_3",3}),"/d/ppl/map/n5e6", }));## step5_times=15## step5_plans= war_msg(HIC"教皇:羅賓!魔獸軍團再度入侵!你看如何?\n"+ HIW"羅賓:教皇,屬下必率領劍士團死守教廷!\n"+ HIW"羅賓:屬下會招即各方正義之師聯手抗敵!\n"NOR); war_mob(({ ({"orc_leader2",1,"orc_2",3,"dragon",4}),HUMAN_ROOM+"1-7", ({"mamo",1,"orc_2",3,"dragon",4}),HUMAN_ROOM+"1-6", }));## step6_times=15## step6_plans= war_msg(HIG"嘿嘿嘿嘿嘿~~~~[邪惡笑聲籠罩蘭卡大陸]\n"+ "來吧!拿起你的武器!對抗邪惡的獸人吧![ 羅賓急呼著 ]\n"+ "整個世界就靠我們一起掃平邪惡的獸人,為教皇效命吧!!"+ " [ 羅賓急呼著 ]\n"+ "一場大戰即將展開!!\n"NOR); war_mob(({ ({"nola",1,"orc_1",3,"lionorc",4}),"/d/map/lodoos/room/field-2", ({"orc_leader1",1,"orc_1",3,"lionorc",4}), "/d/map/lodoos/room/field-3", }));## step7_times=15## step7_plans= war_msg(HIR"石化國-外交大臣法蘭說道:陛下!我們報仇的機會來了!\n"+NOR+ HIR"石化國-外交大臣法蘭說道:血魔大帝送來了共同攻擊的協議書,"+ "要求我國幫忙助戰,以徹底毀滅小賤龍的國度!\n"+NOR); STONE->wellie_groups("/d/map/lodoos/room/s-1-1"); STONE->man_groups("/d/map/lodoos/room/s-1-1"); STONE->fralan_groups("/d/ppl/map/n5e7"); STONE->man_groups("/d/ppl/map/n5e7"); STONE->yami_groups("/d/map/lodoos/room/field-3"); STONE->man_groups("/d/map/lodoos/room/field-3");## step8_times=15## step8_plans= war_msg(HIG"一向與羅德斯教庭不合的菲里德王國,也南下大舉進兵羅德斯!\n"+NOR+ HIG"菲里德國王道:根據協議書的內容,約定三面進兵一舉攻下敵人的城池!\n"+NOR+ HIR"菲里德南征軍最高指揮官說道:陛下!此事就交給我吧!我必不負所託!\n"+NOR+ HIR"菲里德國王道:如此甚好!快快派我國精銳的坦克部隊前往!\n"+NOR); FELID->felid_help_lodoos_war();## step9_times=60## step9_check= if(mob_alive("balan") || mob_alive("mamo") || mob_alive("nola")) { war_msg(({ HIC"羅賓公爵大呼:同胞們!!拿出你的勇氣來,抵抗那邪惡的獸人吧!\n"NOR, HIY"羅賓公爵率領劍士團,奮勇抵擋獸人的侵襲!!\n"NOR, HIW"教皇:羅賓,依你看此戰是吉是凶!?\n"+ "羅賓公爵:屬下不敢輕易斷言?I\n"NOR, HIW"教皇:我唐雲劍龍謹代表全體人類向各位英雄致意,"+ "此戰關乎人類氣數,絲毫大意不得!\n"NOR, HIR"血魔大帝:我族英勇的戰士們,讓人類知道我們的厲害吧!哈哈哈~\n"NOR, HIR"血魔大帝:哈哈哈~盡情的殺戮人類吧!!"+ "讓人類的鮮血來洗刷我們的仇恨!!\n"NOR, HIW"教皇:唉~真是生靈塗炭呀!羅賓你盡力而為吧!\n羅賓公爵:是!\n"NOR, })); return 2; }## step10_times=3## step10_steps= war_msg(HIY"聖殿教廷 VS 獸人軍團戰況膠著。\n"NOR+ HIR"血魔大帝:獸人們撤退!....再打下去也佔不到人類便宜!\n"+ "血魔大帝:想不到人類命不該絕,只好再等待下一個機會了!\n"NOR);## step11_times=3## step11_steps= war_end();## 說明: header : 寫在這裡的東西會被放在檔頭 stepX_check: 從第 X-1 進入第 X step 前需通過的判斷 return 1 代表無法通過判斷 stepX_times: 從第 X-1 跳到第 X step 是幾秒後 stepX_plans: 第 X step 的包含內容,一般裡面至少會有 war_msg: 戰爭訊息廣播 war_mob: 戰爭怪物投放 例如 // 60 秒後呼叫 step9 step9_times=60## // 有 step9_check 函數時就自動進入 loop check 模式 // 若滿足 if(step9_check()>1) 的條件時(如上例為 return 2) // 在 step9_times=60 秒後會再重新呼叫一次 step9_check // 反之若 if(step9_check()>0) 的條件不滿足時 // 因為沒有 step9_plan 就直接在 step10_times=3 秒後呼叫 step10 // (若有定義 step9_plan 則會執行 step9_plan) // 也就是 stepX_check 函數其實就是 loop 用的控制函數 // 而所有 stepX_ 函數都預設最後會 return 1 step9_check= if(mob_alive(balan) || mob_alive(mamo) || mob_alive(nola)) { war_msgs=(({ HIC"羅賓公爵大呼:同胞們!!拿出你的勇氣來,抵抗那邪惡的獸人吧!\n"NOR, HIY"羅賓公爵率領劍士團,奮勇抵擋獸人的侵襲!!\n"NOR, HIW"教皇:羅賓,依你看此戰是吉是凶!?\n"+ "羅賓公爵:屬下不敢輕易斷言?I\n"NOR, HIW"教皇:我唐雲劍龍謹代表全體人類向各位英雄致意,"+ "此戰關乎人類氣數,絲毫大意不得!\n"NOR, HIR"血魔大帝:我族英勇的戰士們,讓人類知道我們的厲害吧!哈哈哈~\n"NOR, HIR"血魔大帝:哈哈哈~盡情的殺戮人類吧!!"+ "讓人類的鮮血來洗刷我們的仇恨!!\n"NOR, HIW"教皇:唉~真是生靈塗炭呀!羅賓你盡力而為吧!\n羅賓公爵:是!\n"NOR, })); return 2; }## step10_times=3## step11_steps= war_end();## 關鍵就在於 war_end 函數: 1.究竟需不需要傳值給它 2.war_end 函數可被 wiz 自訂到什麼程度 (但其實我不太希望 wiz 自訂,這樣才能期望顯示格式統一) 所以我會採取的做法是 war_end 不給任何值時,就完全套用預設值, 反之,有給值時,就是套用 wiz 所自訂的一些東西。 因此傳值的部份我預計會採 mixed 來統包並使用 varagrs 宣告。 戰役腳本物件檔本身也將充當戰役控制檔,因此它會有些以 static 宣告的內建變數,用來暫存一些資料用,這些資料在該物件被update 時將被 clean,但有些會被儲存起來,且 times_check 也尚未停止 呼叫物件檔,這時理論上: 1.戰爭將依該物件被 update 前的狀態繼續執行 2.但物件暫存資料將消失,系統接著就會直接結束戰爭 為了避免這種情況發生,但又同時為了避免頻繁的儲存,我通常會在 loop(check) 函數所在的區段才做 save_data,將「哪些怪物是哪些 玩家所殺」紀錄起來。 這樣至少當戰爭被系統直接結束時,還有辦法做出部份統計。 以上。大概大部份的戰役都能以這樣的腳本檔型式來運作,腳本檔的 格式就先這樣子定下來。我接下來會接著寫 _war.c 來把腳本檔變成 腳本物件檔。 LAechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.250.36 ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1486433032.A.86B.html

02/07 13:46, , 1F
待會將恩亞城及菲里德參戰的部份寫進來
02/07 13:46, 1F

02/09 11:45, , 2F
更新腳本檔寫法
02/09 11:45, 2F
※ 編輯: laechan (61.224.170.115), 02/09/2017 14:02:28

02/09 14:02, , 3F
再更新腳本檔寫法
02/09 14:02, 3F
文章代碼(AID): #1OcIi8Xh (mud_sanc)
文章代碼(AID): #1OcIi8Xh (mud_sanc)