欢迎光临散文网 会员登陆 & 注册

心灵终结3.3.6地图编辑器杂谈3:新建关卡入口,关卡之间的连接

2022-11-14 13:35 作者:不会游泳的企鹅24  | 我要投稿

    在萌新教程第1篇中,我们讲了如何玩自己制作的战役地图——将自制战役地图名称命名为官方地图名称,然后运行相关的官方战役。这种自制战役被称为“换皮战役”,虽然简单,但是缺点也很明显:不能在官方战役和自制战役之间自由切换、其他人在没有说明文档且不清楚官方地图名称时不知道该进哪一关、不够正式等。那么这一篇专栏,我们就来解决如何制作新的关卡入口,以及关卡之间的衔接问题。

    本篇中需要用到的程序或文件:

    1、心灵终结地图编辑器

    2、红警2语言编辑器

    3、相关csf文件(共4个)(2和3详见地编萌新教程第10篇)

    4、BattleClient.ini(在根目录中的INI文件夹中)

    5、missionmo.ini和mapselmo.ini(需要用其他手段获取,可以加群:158667272),修改后将它们直接放到根目录即可

另外,本篇中不会涉及如何制作载入图,如果要做载入图可能还需要其他程序或文件。


一、新建关卡入口

    所谓“关卡入口”,指的就是在选关界面列出来的每一关,可以由此直接进入到相应的关卡,不用像红警原版和尤里的复仇那样只能从第一关开始玩。下图中红框中的部分就是新建的“关卡入口”。

    下面我们以“测试1”为例说明如何新建关卡入口。

    首先,新建地图并命名为penguintest1.map,放到根目录。

    打开BattleClient.ini文件,这个文件就是控制选关界面的。文件的第一部分控制关卡的分组,在后面仿照上面的格式写:

    [TEST](小节名称无所谓,但不要与已有小节重复)

    Description = ——测试——

    这相当与我们新建了一个分组,类似与“同盟国联军——第一幕”这样的,会在选关界面显示出来。

    然后,我们需要对战役进行注册,对应紧接着的Battles小节。注意:在ini文件中,一行中英文分号后面属于注释内容,像“Allies Act One”和“Red Dawn Rising”这样的只是为了方便阅读和理解,没有实际作用。

    我们在这一部分的最后写以下代码:

    xx = TEST(等号后与上面分组时的小节名一致,等号前只是相当于注册序号,无所谓)

    xx = Test1(测试1,等号后关卡简称随意)

    再下面就是具体每一关对应一个小节了。新建[Test1]小节,小节名称与前面注册时的关卡简称一致。然后按照官方战役下面的格式进行填写。每一条作用说明如下:作用不明的代码保持和官方战役一致即可。

    CD:作用不明

    BuildOffAlly:作用不明

    Scenario:填地图名称,后缀.MAP。这一条中的地图名称和后缀必须大写!!!

    注:原本的地图名称可以小写,但是这一条必须大写,否则,目前暂时不会出什么问题,但是后面在讲载入图之后,这里不大写会导致你进入任务并点“重新开始”时无法正常加载载入界面。

(本来这一篇专栏昨天就可以发,就是因为遇到了这个问题,一直到今天早上才找到原因呜呜呜……)

    FinalMovie:作用不明

    Description:关卡列表中显示的关卡名称

    Summary:作用不明,可以不填

    Side:作用不明

    SideName:决定关卡名称前的图标。可选项有Allies(盟军),Soviets(苏联),Epsilon(厄普西隆),Foehn(焚风),还有阵营名称+X,如AlliesX,图标就是盟军图标上有一个红叉号,一般用于尚未完成不能进入的地图,配合下一条使用。

    Enabled:如果是正常可以进入的战役,不需要写这一条;如果是还在制作中、不能进入的战役,例如心灵终结3.3.5中的结局关,这里写Enabled=False。

    Act:作用不明

    LongDescription:右侧的任务描述。但是任务描述中不会自动换行,需要在这一条属性中加入换行符@实现换行。

    注:实际上没有相应的地图文件也可以在BattleClient.ini中写代码,在Scenario那一条里写一个不存在的地图名称就行,这样也能得到一个新的关卡入口,但是点进去之后会提示“无法读取起始地图”并弹窗。可以在其中加Enabled=False来避免玩家进入。一般这样只是为了展示这个任务包一共有几关以及关卡名称等信息。

二、载入界面

    按照上面的说明新建入口之后,进入地图,你会发现载入图除了下面橙色的进度条之外是一片黑。我们需要为新战役添加一个载入界面。载入界面包括载入文本和载入图两部分。再如文本包括最上面的任务名称、地点等信息和任务目标。

    与载入界面相关的是Missionmo.ini和stringtable11.csf。首先用红警语言编辑器打开stringtable11.csf,其中的在LOADMSG类型就对应载入界面最上面介绍任务名称和地点的一行文本。我们新建一个项目,命名为Test1.

       

    LOADBRIEF类型中是任务目标介绍,同样新建一个项目即可。

    MAP类型是存档时显示的默认名称。

BRIEF类型是游戏中的战役简报

    保存之后,我们就可以编辑missionmo.ini了。按照官方地图的格式新写一个小节,小节名称是地图名称,Briefing,UIName,LSLoadMessage,LSLoadBriefing分别填上面的BRIEF,MAP,LOADMSG,LOADBRIEF中的项目名称,键值不区分大小写。其他和载入图相关,例如我们在此使用苏军第1关的载入图,将LS640BkgdName和LS800BkgdName改为S01B.SHP,LS800BkgdPal的值改为S01B.PAL即可,其他代码不变。

    然后进入游戏就可以看到载入图了

三、评分屏与战报

    任务结束之后一般会跳出来一个评分屏,包括通关时间、战报等。

    stringtable11.csf中的POST类型中是战报。

    如果你用的是在杂谈1中提到的地编扩展包,那么你打开地图之后,在“编辑——单人任务设置”里面可以找到“Ranking”这一列,里面有最佳时间、超时标题、超时信息、按时标题、按时信息。“最佳时间”就是评分屏左边里面的最佳时间,可以根据不同的难度设置不同的最佳时间。评分屏右边是实际时间,当实际时间不超过最佳时间时,战报显示“按时标题”和“按时信息”;当实际时间超过最佳时间时,战报显示“超时标题”和“超时信息”。“标题”可以不填,指的是战报的开头,一般是“尤里的讯息:”之类的,类似与书信的称呼。“信息”就是战报正文。

    注:Ranking在这里的意思其实是“官阶、军衔”,在红警2原版中,每一关最后战报开头都有“您的军衔是:xx”,实际上就是这里的“标题”。不过在你进入评分屏,把鼠标移到“标题”的位置时,在左下角显示的说明文字是“排名”,属于翻译时的一点小问题。

    官方战役里面的“标题”是写在另一个文本文件的NAME类型中的,不过也可以将标题写在POST中。实际上前面说的那些文本写在哪一个类型里面是没有硬性规定的,只要你在ini里用这句文本时把项目名称写对即可,和官方的写在一起只不过是为了保持一致方便查找。

    然后在地编中填写相关内容,只需要注意时间按格式写并且把文本的项目名称写对即可,不区分大小写。

    在地编里填写上面的内容实际上就是在改内置ini,如果你使用的是自带的地编或者其他版本的地编,在单人游戏设置里面没有Ranking这一列,那么也可以直接用记事本打开地图进行编辑:新建Ranking小节,按照下面的格式填写即可。

左下角翻译成了“排名”,猜测本来应该是“Your Rank(你的军衔)”

四、关卡间的衔接

    这一关完成之后,点“继续”,会提示“无法读取起始地图”,并且重新读取本关地图。这一小节我们就来解决关卡之间的衔接问题,也就是“如何自动进入下一关”。

    在此之前先解决一个问题:如果这是最后一关,不需要进入下一关怎么办?比如官方的附加战役,打过一关之后直接返回主界面,不会自动进入下一关。我们只需要用地编打开地图,在“编辑——基本设置(Basic)”里面的“最后一关”选项选择yes即可。

    如果要进入自动下一关,我们需要用到mapselmo.ini文件。

    首先,这里相连的两关必须是同一个大阵营的关卡,比如都是苏军战役,或者都是盟军战役。这里判断是“哪个阵营的关卡”可能比较复杂,上面用的“测试1”地图玩家所属方是美国,但是经过测试发现它并不能和官方盟军战役连接起来,推测可能还和其他地方的代码有关。自制战役的时候,如果你自制的是苏军战役,玩家所属方是苏军,就在写代码的时候全部按照官方苏军战役的格式来写,比如在哪个阵营下注册、载入图等,这样总不会出错。这或许也是像“暗黑仪式”这样的任务包没有设置“自动进入下一关”的原因,因为这个任务包相邻两关的阵营不一样。

    因此,我们首先把“测试1”的玩家阵营改成苏俄,然后再新建“测试2”的地图,命名为penguintest2,也是苏军战役,仿照前面的过程做好入口、载入图等。在BattleClient.ini中本关注册名称为Test2.

    然后,我们打开mapselmo.ini,再次对战役进行注册。找到[Nod]小节,表示苏军任务,然后在下面依次写:序号=注册名。注意:此处序号必须按顺序依次写!注册名可以随意,不需要与BattleClient.ini中相同。

    这里的示例是在自制战役13关的基础上写的,正常序号应该是32和33.

    然后我们在下面分别写两个[Testa]和[Testb]小节,代码直接复制粘贴官方的,然后把Scenario改成自制地图名称,大小写随意。关键是需要在最后写一句:数字=下一关注册名。数字可以随意。最后一关不写。

    最后,打开地图编辑器,把“测试1”地图的“最后一关”设为no,把“测试2”地图的“最后一关”设为yes,这样在完成第一关,点击“继续”之后就会载入第二关了,然后完成第二关就会直接返回主界面。

    我们也可以选择不在BattleClient.ini中注册,只在mapselmo.ini中注册并将关卡连接,这样玩家就只能通过完成上一关来进入下一关,而不能从选关界面直接进入。例如官方四大阵营的结局,只能通过完成第24关之后进入。再比如《天鹅绒纪·诸神的黄昏》战役包中有一关“救赎”,被分成了三个阶段,推测实际上是做成了三张地图A,B,C,在Mapselmo.ini中将A后边接B,B后边接C,C后边接下一关“故地”D,但在BattleClient.ini中只注册了A和D,把“救赎”小节的Senario写成A,这样在选关界面只能从“救赎”进入A,打过A后再打B,然后打C,然后再进入下一关,而不能直接进入B和C.

心灵终结3.3.6地图编辑器杂谈3:新建关卡入口,关卡之间的连接的评论 (共 条)

分享到微博请遵守国家法律