心靈終結(jié)3.3.6地圖編輯器雜談3:新建關(guān)卡入口,關(guān)卡之間的連接
????在萌新教程第1篇中,我們講了如何玩自己制作的戰(zhàn)役地圖——將自制戰(zhàn)役地圖名稱命名為官方地圖名稱,然后運(yùn)行相關(guān)的官方戰(zhàn)役。這種自制戰(zhàn)役被稱為“換皮戰(zhàn)役”,雖然簡單,但是缺點(diǎn)也很明顯:不能在官方戰(zhàn)役和自制戰(zhàn)役之間自由切換、其他人在沒有說明文檔且不清楚官方地圖名稱時(shí)不知道該進(jìn)哪一關(guān)、不夠正式等。那么這一篇專欄,我們就來解決如何制作新的關(guān)卡入口,以及關(guān)卡之間的銜接問題。
????本篇中需要用到的程序或文件:
????1、心靈終結(jié)地圖編輯器
????2、紅警2語言編輯器
????3、相關(guān)csf文件(共4個(gè))(2和3詳見地編萌新教程第10篇)
????4、BattleClient.ini(在根目錄中的INI文件夾中)
????5、missionmo.ini和mapselmo.ini(需要用其他手段獲取,可以加群:158667272),修改后將它們直接放到根目錄即可
另外,本篇中不會(huì)涉及如何制作載入圖,如果要做載入圖可能還需要其他程序或文件。

一、新建關(guān)卡入口
??? 所謂“關(guān)卡入口”,指的就是在選關(guān)界面列出來的每一關(guān),可以由此直接進(jìn)入到相應(yīng)的關(guān)卡,不用像紅警原版和尤里的復(fù)仇那樣只能從第一關(guān)開始玩。下圖中紅框中的部分就是新建的“關(guān)卡入口”。

????下面我們以“測(cè)試1”為例說明如何新建關(guān)卡入口。
??? 首先,新建地圖并命名為penguintest1.map,放到根目錄。
????打開BattleClient.ini文件,這個(gè)文件就是控制選關(guān)界面的。文件的第一部分控制關(guān)卡的分組,在后面仿照上面的格式寫:
????[TEST](小節(jié)名稱無所謂,但不要與已有小節(jié)重復(fù))
????Description = ——測(cè)試——
????這相當(dāng)與我們新建了一個(gè)分組,類似與“同盟國聯(lián)軍——第一幕”這樣的,會(huì)在選關(guān)界面顯示出來。
????然后,我們需要對(duì)戰(zhàn)役進(jìn)行注冊(cè),對(duì)應(yīng)緊接著的Battles小節(jié)。注意:在ini文件中,一行中英文分號(hào)后面屬于注釋內(nèi)容,像“Allies Act One”和“Red Dawn Rising”這樣的只是為了方便閱讀和理解,沒有實(shí)際作用。
????我們?cè)谶@一部分的最后寫以下代碼:
????xx = TEST(等號(hào)后與上面分組時(shí)的小節(jié)名一致,等號(hào)前只是相當(dāng)于注冊(cè)序號(hào),無所謂)
????xx = Test1(測(cè)試1,等號(hào)后關(guān)卡簡稱隨意)

????再下面就是具體每一關(guān)對(duì)應(yīng)一個(gè)小節(jié)了。新建[Test1]小節(jié),小節(jié)名稱與前面注冊(cè)時(shí)的關(guān)卡簡稱一致。然后按照官方戰(zhàn)役下面的格式進(jìn)行填寫。每一條作用說明如下:作用不明的代碼保持和官方戰(zhàn)役一致即可。
????CD:作用不明
????BuildOffAlly:作用不明
????Scenario:填地圖名稱,后綴.MAP。這一條中的地圖名稱和后綴必須大寫?。?!
????注:原本的地圖名稱可以小寫,但是這一條必須大寫,否則,目前暫時(shí)不會(huì)出什么問題,但是后面在講載入圖之后,這里不大寫會(huì)導(dǎo)致你進(jìn)入任務(wù)并點(diǎn)“重新開始”時(shí)無法正常加載載入界面。
(本來這一篇專欄昨天就可以發(fā),就是因?yàn)橛龅搅诉@個(gè)問題,一直到今天早上才找到原因嗚嗚嗚……)
????FinalMovie:作用不明
????Description:關(guān)卡列表中顯示的關(guān)卡名稱
????Summary:作用不明,可以不填
????Side:作用不明
????SideName:決定關(guān)卡名稱前的圖標(biāo)??蛇x項(xiàng)有Allies(盟軍),Soviets(蘇聯(lián)),Epsilon(厄普西?。現(xiàn)oehn(焚風(fēng)),還有陣營名稱+X,如AlliesX,圖標(biāo)就是盟軍圖標(biāo)上有一個(gè)紅叉號(hào),一般用于尚未完成不能進(jìn)入的地圖,配合下一條使用。
????Enabled:如果是正??梢赃M(jìn)入的戰(zhàn)役,不需要寫這一條;如果是還在制作中、不能進(jìn)入的戰(zhàn)役,例如心靈終結(jié)3.3.5中的結(jié)局關(guān),這里寫Enabled=False。
????Act:作用不明
????LongDescription:右側(cè)的任務(wù)描述。但是任務(wù)描述中不會(huì)自動(dòng)換行,需要在這一條屬性中加入換行符@實(shí)現(xiàn)換行。


??? 注:實(shí)際上沒有相應(yīng)的地圖文件也可以在BattleClient.ini中寫代碼,在Scenario那一條里寫一個(gè)不存在的地圖名稱就行,這樣也能得到一個(gè)新的關(guān)卡入口,但是點(diǎn)進(jìn)去之后會(huì)提示“無法讀取起始地圖”并彈窗??梢栽谄渲屑覧nabled=False來避免玩家進(jìn)入。一般這樣只是為了展示這個(gè)任務(wù)包一共有幾關(guān)以及關(guān)卡名稱等信息。

二、載入界面
????按照上面的說明新建入口之后,進(jìn)入地圖,你會(huì)發(fā)現(xiàn)載入圖除了下面橙色的進(jìn)度條之外是一片黑。我們需要為新戰(zhàn)役添加一個(gè)載入界面。載入界面包括載入文本和載入圖兩部分。再如文本包括最上面的任務(wù)名稱、地點(diǎn)等信息和任務(wù)目標(biāo)。
????與載入界面相關(guān)的是Missionmo.ini和stringtable11.csf。首先用紅警語言編輯器打開stringtable11.csf,其中的在LOADMSG類型就對(duì)應(yīng)載入界面最上面介紹任務(wù)名稱和地點(diǎn)的一行文本。我們新建一個(gè)項(xiàng)目,命名為Test1.

??? ???

????LOADBRIEF類型中是任務(wù)目標(biāo)介紹,同樣新建一個(gè)項(xiàng)目即可。


????MAP類型是存檔時(shí)顯示的默認(rèn)名稱。


BRIEF類型是游戲中的戰(zhàn)役簡報(bào)


????保存之后,我們就可以編輯missionmo.ini了。按照官方地圖的格式新寫一個(gè)小節(jié),小節(jié)名稱是地圖名稱,Briefing,UIName,LSLoadMessage,LSLoadBriefing分別填上面的BRIEF,MAP,LOADMSG,LOADBRIEF中的項(xiàng)目名稱,鍵值不區(qū)分大小寫。其他和載入圖相關(guān),例如我們?cè)诖耸褂锰K軍第1關(guān)的載入圖,將LS640BkgdName和LS800BkgdName改為S01B.SHP,LS800BkgdPal的值改為S01B.PAL即可,其他代碼不變。

????然后進(jìn)入游戲就可以看到載入圖了




三、評(píng)分屏與戰(zhàn)報(bào)
????任務(wù)結(jié)束之后一般會(huì)跳出來一個(gè)評(píng)分屏,包括通關(guān)時(shí)間、戰(zhàn)報(bào)等。
????stringtable11.csf中的POST類型中是戰(zhàn)報(bào)。
????如果你用的是在雜談1中提到的地編擴(kuò)展包,那么你打開地圖之后,在“編輯——單人任務(wù)設(shè)置”里面可以找到“Ranking”這一列,里面有最佳時(shí)間、超時(shí)標(biāo)題、超時(shí)信息、按時(shí)標(biāo)題、按時(shí)信息?!白罴褧r(shí)間”就是評(píng)分屏左邊里面的最佳時(shí)間,可以根據(jù)不同的難度設(shè)置不同的最佳時(shí)間。評(píng)分屏右邊是實(shí)際時(shí)間,當(dāng)實(shí)際時(shí)間不超過最佳時(shí)間時(shí),戰(zhàn)報(bào)顯示“按時(shí)標(biāo)題”和“按時(shí)信息”;當(dāng)實(shí)際時(shí)間超過最佳時(shí)間時(shí),戰(zhàn)報(bào)顯示“超時(shí)標(biāo)題”和“超時(shí)信息”。“標(biāo)題”可以不填,指的是戰(zhàn)報(bào)的開頭,一般是“尤里的訊息:”之類的,類似與書信的稱呼?!靶畔ⅰ本褪菓?zhàn)報(bào)正文。
????注:Ranking在這里的意思其實(shí)是“官階、軍銜”,在紅警2原版中,每一關(guān)最后戰(zhàn)報(bào)開頭都有“您的軍銜是:xx”,實(shí)際上就是這里的“標(biāo)題”。不過在你進(jìn)入評(píng)分屏,把鼠標(biāo)移到“標(biāo)題”的位置時(shí),在左下角顯示的說明文字是“排名”,屬于翻譯時(shí)的一點(diǎn)小問題。
? ? 官方戰(zhàn)役里面的“標(biāo)題”是寫在另一個(gè)文本文件的NAME類型中的,不過也可以將標(biāo)題寫在POST中。實(shí)際上前面說的那些文本寫在哪一個(gè)類型里面是沒有硬性規(guī)定的,只要你在ini里用這句文本時(shí)把項(xiàng)目名稱寫對(duì)即可,和官方的寫在一起只不過是為了保持一致方便查找。

????然后在地編中填寫相關(guān)內(nèi)容,只需要注意時(shí)間按格式寫并且把文本的項(xiàng)目名稱寫對(duì)即可,不區(qū)分大小寫。

????在地編里填寫上面的內(nèi)容實(shí)際上就是在改內(nèi)置ini,如果你使用的是自帶的地編或者其他版本的地編,在單人游戲設(shè)置里面沒有Ranking這一列,那么也可以直接用記事本打開地圖進(jìn)行編輯:新建Ranking小節(jié),按照下面的格式填寫即可。




四、關(guān)卡間的銜接
????這一關(guān)完成之后,點(diǎn)“繼續(xù)”,會(huì)提示“無法讀取起始地圖”,并且重新讀取本關(guān)地圖。這一小節(jié)我們就來解決關(guān)卡之間的銜接問題,也就是“如何自動(dòng)進(jìn)入下一關(guān)”。
??? 在此之前先解決一個(gè)問題:如果這是最后一關(guān),不需要進(jìn)入下一關(guān)怎么辦?比如官方的附加戰(zhàn)役,打過一關(guān)之后直接返回主界面,不會(huì)自動(dòng)進(jìn)入下一關(guān)。我們只需要用地編打開地圖,在“編輯——基本設(shè)置(Basic)”里面的“最后一關(guān)”選項(xiàng)選擇yes即可。

????如果要進(jìn)入自動(dòng)下一關(guān),我們需要用到mapselmo.ini文件。
????首先,這里相連的兩關(guān)必須是同一個(gè)大陣營的關(guān)卡,比如都是蘇軍戰(zhàn)役,或者都是盟軍戰(zhàn)役。這里判斷是“哪個(gè)陣營的關(guān)卡”可能比較復(fù)雜,上面用的“測(cè)試1”地圖玩家所屬方是美國,但是經(jīng)過測(cè)試發(fā)現(xiàn)它并不能和官方盟軍戰(zhàn)役連接起來,推測(cè)可能還和其他地方的代碼有關(guān)。自制戰(zhàn)役的時(shí)候,如果你自制的是蘇軍戰(zhàn)役,玩家所屬方是蘇軍,就在寫代碼的時(shí)候全部按照官方蘇軍戰(zhàn)役的格式來寫,比如在哪個(gè)陣營下注冊(cè)、載入圖等,這樣總不會(huì)出錯(cuò)。這或許也是像“暗黑儀式”這樣的任務(wù)包沒有設(shè)置“自動(dòng)進(jìn)入下一關(guān)”的原因,因?yàn)檫@個(gè)任務(wù)包相鄰兩關(guān)的陣營不一樣。
????因此,我們首先把“測(cè)試1”的玩家陣營改成蘇俄,然后再新建“測(cè)試2”的地圖,命名為penguintest2,也是蘇軍戰(zhàn)役,仿照前面的過程做好入口、載入圖等。在BattleClient.ini中本關(guān)注冊(cè)名稱為Test2.
????然后,我們打開mapselmo.ini,再次對(duì)戰(zhàn)役進(jìn)行注冊(cè)。找到[Nod]小節(jié),表示蘇軍任務(wù),然后在下面依次寫:序號(hào)=注冊(cè)名。注意:此處序號(hào)必須按順序依次寫!注冊(cè)名可以隨意,不需要與BattleClient.ini中相同。

????這里的示例是在自制戰(zhàn)役13關(guān)的基礎(chǔ)上寫的,正常序號(hào)應(yīng)該是32和33.
????然后我們?cè)谙旅娣謩e寫兩個(gè)[Testa]和[Testb]小節(jié),代碼直接復(fù)制粘貼官方的,然后把Scenario改成自制地圖名稱,大小寫隨意。關(guān)鍵是需要在最后寫一句:數(shù)字=下一關(guān)注冊(cè)名。數(shù)字可以隨意。最后一關(guān)不寫。

????最后,打開地圖編輯器,把“測(cè)試1”地圖的“最后一關(guān)”設(shè)為no,把“測(cè)試2”地圖的“最后一關(guān)”設(shè)為yes,這樣在完成第一關(guān),點(diǎn)擊“繼續(xù)”之后就會(huì)載入第二關(guān)了,然后完成第二關(guān)就會(huì)直接返回主界面。
????我們也可以選擇不在BattleClient.ini中注冊(cè),只在mapselmo.ini中注冊(cè)并將關(guān)卡連接,這樣玩家就只能通過完成上一關(guān)來進(jìn)入下一關(guān),而不能從選關(guān)界面直接進(jìn)入。例如官方四大陣營的結(jié)局,只能通過完成第24關(guān)之后進(jìn)入。再比如《天鵝絨紀(jì)·諸神的黃昏》戰(zhàn)役包中有一關(guān)“救贖”,被分成了三個(gè)階段,推測(cè)實(shí)際上是做成了三張地圖A,B,C,在Mapselmo.ini中將A后邊接B,B后邊接C,C后邊接下一關(guān)“故地”D,但在BattleClient.ini中只注冊(cè)了A和D,把“救贖”小節(jié)的Senario寫成A,這樣在選關(guān)界面只能從“救贖”進(jìn)入A,打過A后再打B,然后打C,然后再進(jìn)入下一關(guān),而不能直接進(jìn)入B和C.