无限任务空间
任务规则
单人任务是由3个INI文件共同定义的,分别是battle.ini、mapsel.ini和mission.ini。其中前两个INI相互关联,又与任务地图关联,规定了每场任务的名称、调用哪个地图文件等等信息。最后一个INI则是定义载入该任务时的一些提示信息。这3个文件相辅相成,组成了对单人任务的全面定义。原版YR一共只有14场任务,换句话说,也就只有14个任务空间,很多MODER在制作单人任务的时候都在抱怨任务空间太少,那到底能否人为地加长任务空间呢?我们知道RA2一共有26场任务,仅从这点来看,就已经足够证明:任务空间是可以人为的设置的,下面我们就从这3个INI的规则入手,讲解如何添加任务空间。
Battle.ini
打开这个INI,在开篇就能看到一个[Battles]注册表,下面大致是这些字段,它们就是任务空间的名称:
[Battles]
1=TUT1
2=ALL1
3=SOV1
4=ALL02
5=ALL03
………………
我们注意到,TUT1、ALL1和SOV1这3个字段被注册在最开头3个注册码里,这是有一定的原因的。1到3这三个注册码非常特殊,只有使用它的任务能作为任务入口。看到这里,我们不禁想起了RA2里,新任务界面里的3个任务入口——盟军、训练和苏军。如果你要重新制作新任务,你可以重新注册任务空间名称,并把需要作为入口的注册到1到3这3个号码上。注意,RA2和YR总共只支持3个入口,而YR的平台还屏蔽掉了一个,如果需要,请使用RESHACKER将这个入口恢复出来 ,并使用PD破解版平台以为这个入口制作一个动画图标。
如果捡懒不想改动已有的空间名,那你也可以直接在注册表后面补充注册一些空间名,名称随便你定,只要以后能看得懂就行。
以下是空间的定义:
[ALL1] 空间名称
CD=2 需要放如哪张光盘才能运行该任务。这是光盘版遗留下来的语句,对硬盘版一点作用都没有,如果要添加空间,最好都写成CD=2
Scenario=ALL01tmd.MAP 预定该空间里的任务地图为什么文件名。随便命名,完全没有固定的模式,该语句必须要和mapsel.ini里对应语句相同
FinalMovie= 结束时播放哪个BIK电影,这是RA1遗留下来的垃圾语句,因为从RA2起,播放电影完全由任务地图来定义。
Description=DESC:ALL1 这是任务入口的特殊语句,表示鼠标悬停时在最下方显示什么说明文字,需要在CSF里加入相关翻译条
[CHN03]
CD=2
Scenario=chn03ccs.MAP
FinalMovie=
DebugOnly=yes 这是非任务入口的特殊语句,但到底有什么实际意义,我也不太清楚
Description=(chn03ccs.MAP) 对于非任务入口的空间来说,这个语句就多余了,但不知道不写这个语句会不会有问题,因此最好是按照这个规律来写
mapsel.ini
打开这个INI,我们能看到这样两个注册表,分别是GDI和NOD的,据后来测试,发现支持THIRDSIDE和FOURTHSIDE这两个新段落。
[GDI] 注意这里的派别名,PD破解版平台总共支持4个派别,因此任务就可以拥有4个段落
Anims=Anims 垃圾语句,不用去管它
Sounds=GDISFX 垃圾语句,不用去管它
1=ALL01 注册的任务名,后面会对这个任务名作详细的定义
……………………
这里必须要注意一点,以某个国家为主角做的单人任务,必须要明确该国家属于哪个派别,比如反恐1.50版的中国属于FOURTHSIDE,那么所有中国任务都应该注册到FOURTHSIDE表里。反之,尤里属于THIRDSIDE,因此所有的尤里任务都应该注册到THIRDSIDE表中。 如果注册段落与该国家的所属派不相同,可能会导致该国家的任务无法自动载入下一关,出现“无法载入地图”的提示,后面会详细讲述解决这个问题的办法
[Yui02] 任务名称
Scenario= Yui02scs.MAP 该任务关联哪个地图, 该语句必须要和battle.ini里对应语句相同
Description=788 垃圾语句,不用去管,照着这些参数复制下来就OK
VoiceOver=NOD-01.AUD 垃圾语句,不用去管,照着这些参数复制下来就OK
MapVQ=NODMAP01.VQA 垃圾语句,不用去管,照着这些参数复制下来就OK
Overlays=TN02A.SHP,TG02A.SHP 垃圾语句,不用去管,照着这些参数复制下来就OK
Targets=1,190,100 垃圾语句,不用去管,照着这些参数复制下来就OK
ClickMap=NODCLK01.PCX 垃圾语句,不用去管,照着这些参数复制下来就OK
22=Yui03 任务跳转规则,表示下一场任务是哪一场,前面的序数取决于该任务名称的注册码,比如Yui02在NOD表中注册码为21,于是这里就应该写22,表示它的下一个。但有时候也并非就是该任务名称的注册码,这里就有个特例:
[CHN09]
9=UNI01 这是反恐1.04版中国前传9关的定义,其注册码为42,这里却写的是9,之所以不会出错或冲突,只有一个理由,就是:各个任务段落之间的数字允许重复。所谓任务段落,也就是相互独立不连续的任务,比如盟军任务和苏军任务就是相互独立不连续的,因此它们是两个任务段落,各自都可以从1开始排序。而盟军任务和布什任务虽然都是GDI派的,但之间并没有连接,因此也可以从1开始排序。此外,这里的参数也可以随便填写,但前提是必须填上一个可用的任务名称,以实现任务跳转。这里把前传第9关打过后将自动跳转到后传第1关,而前后传分明就是相互独立的任务段落,可见其特殊作用,可以这个功能实现多任务分支,具体方法就是设置跳变,使任务不一定按照顺序执行。
mission.ini
这个INI是最特殊的一个,它里面居然没有注册表,从它那些定义语句来看,应该是对前两个INI的补充定义
[CHN07CCS.MAP] 地图名称,需要关联游戏根目录或MIX包里有同名的地图文件即可保证正常调用,也正是前两个INI预定的地图名称
Briefing=Brief:CHN07 该游戏过程中按TAB键,将显示该任务对应简介,需要在CSF里添加翻译条
UIName=Name:CHN07 决定该任务的名称,该语句直接影响存档信息的名称
LSLoadMessage=LoadMsg:CHN07 载入画面时出现的任务信息,如作战地点、时间、任务目标等等,关键得看你在CSF里怎么写
LSLoadBriefing=LoadBrief:CHN07 载入画面时出现的任务信息,如作战地点、时间、任务目标等等,关键得看你在CSF里怎么写
LS640BriefLocX=20 载入画面时出现的任务信息显示在哪个坐标位置上,和以下3条语句共同作用
LS640BriefLocY=20
LS800BriefLocX=20
LS800BriefLocY=20
LS800BkgdName=LO800C07.SHP 在YR中载入界面默认只能用800的分辨率,该语句决定选用哪副SHP图象作为载入图
LS800BkgdPal=LO800C07.PAL 对应该SHP使用哪个调色板文件,不定义的话小心画面失色
无限任务空间添加大法
弄懂了任务规则,要添加任务空间那就太简单了,只需要明确一个修改顺序,先battle.ini,再mapsel.ini,最后mission.ini,就绝对不会出错。
首先我们要做的当然是在battle.ini的注册表里补注册上N个新的空间。原版YR注册到第15号——SOV07就完了,那么我们就可以从16号开始注册新的空间名称,并在后面作相应的定义,基本上只需要复制已有的空间定义,再修改相关参数就OK了,最关键的语句是Scenario,一定要记住你在这一步里定义的是什么参数,因为在下两步写mapsel.ini和mission.ini时还要用,写错了的话就关联不上了。
然后要做的是修改mapsel.ini,补充注册就不用再说了,和battle.ini方法一样。需要注意的仅仅就是后面的定义,还是先复制现有的一个任务定义字段,再作修改。Scenario语句一定要和battle.ini里相同,必要的话干脆从battle.ini里复制过来。任务跳转需要注意的是其号码,如果不敢保证不会产生冲突,最好是让所有的任务都使用不同的号码。
最后就是mission.ini了,依然还是用复制现有的方法,再修改参数,最需要注意的是,名称字段必须要和battle.ini及mapsel.ini中定义的字段同名,否则三者无法实现关联,也就无法调用相关任务地图。
需要说明的一点是,载入图不一定必须要定义,如果未定义,那么载入时将是全黑背景,但不会影响读取。由于载入图的制作比较麻烦,因此一般是先定义下来,以后空了再去做。
无法自动载入下一关,怎么办?
自从PD破解版问世以来,反恐经历了从1.04到1.50之间的大跳变升级,经过了对国家和派别的重新认识,我才意识到,无法载入下一关并非是因为ThirdSide是个不完整的派别,其根本原因是因为国家所属的派别与其任务注册的地方不兼容,就拿1.04版来说,把尤里任务注册到了NOD段落里,而尤里的任务都是以YuriCountry这个国家为主角进行的,YuriCountry这个国家所属的派别为ThirdSide,与NOD段落冲突,而游戏却只能从地图堆里挑选文件名为yui02scs.map且主角为NOD国家的地图来作为下一关,不用想也知道根本就找不到,所以游戏才报告说“无法载入任务地图”
反之,为什么中国的任务又能载入下一关呢?也是这个原因,由于1.04版还不支持新建国家,所以我将FRENCH改作中国,并保留它的派别设置为GDI,正巧任务空间里,中国的任务都注册在了GDI段落中,所以游戏正好能找出一张文件名为chn02ccs.map且主角为GDI国家的地图来作为下一关,于是中国的任务就能顺利进入下一关。
破解之后,我新建了一个CHINA作为真正的中国,其派别是FourthSide,具有自己独立的绿色界面,但如果以它为主角创建的任务,就和尤里任务的问题相同,也就不能在载入下一关。那我们到底应该如何来避免这个问题呢?下面 有一个早期的方法:
保持任务空间属性不变,将尤里任务的所有地图里YuriCountry的派别改成NOD,或用真正的NOD国家(如Russians)来替换YuriCountry,那么尤里任务就能自动载入下一关了。中国任务方法一样,将CHINA的派别改成GDI,或用真正的GDI国家(如FRENCH)来代替CHINA,那么中国的任务也能自动载入下一关了。
[YuriCountry]
……………………
Side=NOD ;;原本是ThirdSide
……………………
[China]
……………………
Side=GDI ;;原本是FourthSide
……………………
副作用:这样做的话,虽然避免了隔关报错的情况,也能顺利地自动载入下一关,但是尤里和中国却无法使用他们自己的界面风格,而是用NOD和GDI的风格,一定程度上影响了视觉感受。
如果你真想即顺利进入下一关,也还想使用各自的专属风格,就必须这样做:
在mapsel.ini里新添加两个段落[ThirdSide]和[FourthSide],并将尤里和中国的任务分别注册到它们下面,如:
[FourthSide]
Anims=Anims
Sounds=GDISFX
1=CHN01
…………………………
[ThirdSide]
Anims=Anims
Sounds=NODSFX
1=YUI01
…………………………
接下来最关键的是在游戏根目录下建立sidenc03.mix和sidenc04.mix,由于里面什么文件都没有,因此只需要复制sidenc01.mix或sidenc02.mix再改名即可。这样一来,不用改动任务地图,你的这些任务也能自动载入下一关了,记住关键一点,任务里的主角属于什么派别,它的任务就必须注册到哪个段落里,好生想想是什么原因吧,我这里不 再多说了。
特别注意sidenc03.mix和sidenc04.mix这两个空包,别以为它们里面没有文件就觉得它们没用(如果真的没用,我干吗还用红色字提示你一定要建立?),早就一而再再而三地说过了,缺少这两个空包就会导致隔关报错,因为地图并没有任何设置上的错误,但总是在载入任务的时候报错,而且还不是每关都报,就拿改过之后的中国任务来说(改过之后,中国任务注册到了[FourthSide]段里,而任务里的主角通通由FRENCH换成了CHINA),如果你是一口气打,中途没有退出游戏,那么第一关不报,第二关不报,第三关一载入就报。如果你打到第二关时存了一下档,然后退出游戏,再重新进入游戏,读取二关的存档继续打,那么第三关不报,第四关一载入就报。由此规律往下推,则可看出一个规律:
以你进入游戏后首次读取的那关的关卡号为N(从任务入口开始相当于读取第一关的存档),那么报错的关卡号肯定是N+2
所以,一定要记住,把sidenc03.mix和sidenc04.mix建立好。