本帖最后由 双杀步枪 于 2019-2-27 00:05 编辑
下面给出如何在已有的MOD中添加原版战役的修改方法。
由于尤里的复仇与原版红色警戒2中,有两处注册表有较大差异,国家[Countries]、动画[Animations],所以直接迁移战役地图会导致触发出现混乱。
首先要了解的基础知识一、
触发中的参数的数字,与注册表中的等于号的左边是什么内容无关,实际指的是注册表中的顺序(从0开始算):
比如说有一条触发指令是,改变某单位的所属,脚本代码是【14,0,2】,其含义就是将该单位的所属变更【14】为第【2】个国家。假设使用的是下面这个注册表,那么结果将是被变更为【YuriCountry】
[Countries]
0=Americans <--- 0
8=Russians <--- 1
9=YuriCountry <--- 2
从上到下排列,然后取序号,序号【2】对应的是【9=YuriCountry】。
播放动画:脚本代码【41,0,483】参数【483】同样对照的是 动画注册表中第483行注册项目 ARRWSE(在RA2中是向下的箭头)
基础知识二、
战役地图中有专门定义的一个国家注册表,在计算的时候,会将地图的国家注册表,拼接到rules中的国家注册表的末尾,然后再统一排序,获得序号。
了解基础知识之后,我们对照会发现,原版的注册国家列表,比尤里的少一个。
序号 | 原版红警2的国家注册表 | 尤里的复仇国家注册表 | 0 | 0=Americans | 0=Americans | 1 | 1=Alliance | 1=Alliance | 2 | 2=French | 2=French | 3 | 3=Germans | 3=Germans | 4 | 4=British | 4=British | 5 | 5=Africans | 5=Africans | 6 | 6=Arabs | 6=Arabs | 7 | 7=Confederation | 7=Confederation | 8 | 8=Russians | 8=Russians | 9 | 9=GDI | 9=YuriCountry | 10 | 10=Nod | 10=GDI | 11 | 11=Neutral | 11=Nod | 12 | 12=Special | 12=Neutral | 13 | - | 13=Special |
我们以原版盟军第一关为例子【all01t.map】,我们编辑地图,会发现地图中有对国家做了重新定义:
[Countries]
0=Player
1=BadGuy1
2=BadGuy2
3=BadGuy3
4=Civilian1
5=Other1
6=Other2
7=Other3
又有对新增国家的详细设定:
[Player]
ParentCountry=Americans
Name=Player
Suffix=Allied
Prefix=G
Color=DarkBlue
Side=GDI
SmartAI=yes
CostUnitsMult=1
[BadGuy1]
ParentCountry=Russians
Name=BadGuy1
Suffix=Soviet
Prefix=B
Color=DarkRed
Side=Nod
SmartAI=yes
CostUnitsMult=1
[BadGuy2]
ParentCountry=Russians
Name=BadGuy2
Suffix=Soviet
Prefix=B
Color=DarkRed
Side=Nod
SmartAI=yes
CostUnitsMult=1
(省略部分)
[Other3]
ParentCountry=Germans
Name=Other3
Suffix=Allied
Prefix=G
Color=Grey
Side=GDI
SmartAI=yes
MultiplayPassive=true
根据上面的基础知识,我们可以得到这样一张表:
触发参数序号 | 地图设计时的国家 | 尤里的复仇国家清单 | | [Conuntries] | [Conuntries] | 0 | 0=Americans | 0=Americans | 1 | 1=Alliance | 1=Alliance | 2 | 2=French | 2=French | 3 | 3=Germans | 3=Germans | 4 | 4=British | 4=British | 5 | 5=Africans | 5=Africans | 6 | 6=Arabs | 6=Arabs | 7 | 7=Confederation | 7=Confederation | 8 | 8=Russians | 8=Russians | 9 | 9=GDI | 9=YuriCountry | 10 | 10=Nod | 10=GDI | 11 | 11=Neutral | 11=Nod | 12 | 12=Special | 12=Neutral | 13 | 0=Player | 13=Special | 14 | 1=BadGuy1 | 0=Player | 15 | 2=BadGuy2 | 1=BadGuy1 | 16 | 3=BadGuy3 | 2=BadGuy2 | 17 | 4=Civilian1 | 3=BadGuy3 | 18 | 5=Other1 | 4=Civilian1 | 19 | 6=Other2 | 5=Other1 | 20 | 7=Other3 | 6=Other2 | 21 | | 7=Other3 |
分析这张表,我们就会发现,原先指向【Player】的触发,现在实际指向的是【Special】,这就是为什么触发会产生混乱的根本原因。修改的方式也非常简单,按照新表,将国家的详细设置片段的头,更名为最新的顺序。
[Countires] ;保持不变
0=Player
1=BadGuy1
2=BadGuy2
3=BadGuy3
4=Civilian1
5=Other1
6=Other2
7=Other3
不改变片段的内容,只修改标签的名称,从上往下改。
[Special] ;[Player]
ParentCountry=Americans
Name=Player
Suffix=Allied
Prefix=G
Color=DarkBlue
Side=GDI
SmartAI=yes
CostUnitsMult=1
MultiplayPassive=no
注意: 此处有个比较特殊的设置,是【原先没有】的,如果修改后的清单指向诸如【GDI】【Nod】【Neutral】【Special】这4个的时候,由于在rules中他们都被设置了MultiplayPassive=true,表示了这个国家没有所属,仅作为触发使用,再重新排列之后,实际上在这里【Special】是作为有一个有效的国家存在的。因此【必须要在这里将MultiplayPassive设置为NO】。如果你在往下修改的过程中MAP中有设置了该选项,则不需要进行修改,以地图设置为准。
[Player] ;[BadGuy1]
ParentCountry=Russians
Name=BadGuy1
Suffix=Soviet
Prefix=B
Color=DarkRed
Side=Nod
SmartAI=yes
CostUnitsMult=1
[BadGuy1] ;[BadGuy2]
ParentCountry=Russians
Name=BadGuy2
Suffix=Soviet
Prefix=B
Color=DarkRed
Side=Nod
SmartAI=yes
CostUnitsMult=1
(省略部分)
[Other2] ;[Other3]
ParentCountry=Germans
Name=Other3
Suffix=Allied
Prefix=G
Color=Grey
Side=GDI
SmartAI=yes
MultiplayPassive=true ; 此处不要做任何调整。
如果适用于MOD,那么方法也是一样,对照原先的国家顺序,进行映射修改。
对于动画的触发,因为尤里的复仇中,在中间插入了4个新动画,导致了在331行之后的动画顺序产生了同样的问题,主要是对应那几个箭头的动画。修复方式也是一样。只能修改触发[Actions]中的内容,【41,0,483】更改为【483+4】即【41,0,487】即可修复了。
|