红色警戒2使用了 “脚本化” 的人工智能(指一个系统只对预知的行动和脚本作出反应而非启发式的人工智能 – 对一个动作作出反应并且根据一个动作而预测下个动作,普遍的一个脚本化的系统是这样工作的

计算机使用一个对象,或一组对象,称做 [TaskForces] 中文名 [使命部队],[使命部队] 按照他们的基本属性被控制并归类为 [TeamTypes] 中文名 [组类],当进行行动,或系列行动时,[组类] 被 [ScriptTypes] 中文名 [脚本类] 控制,[脚本类] 可能会或者可能不会被预先定义的事件叫做 [AITriggerTypes] 中文名 [人工智能撞针] 激活。


打开 AI.ini 文件

[TaskForces] 使命部队项

这项用来列出基本上所有红警2的 [TaskForces] 使命部队, 列表从 0 号开始,号随着这个使命部队包括的单位的数量增加而增加。如果你想人工智能造新单位或使用更多的单位你就必须改这项。

在这里每个使命部队所对应的条目都是用十六进制数值来表示的(你实际上可以用其它的,但是我建议你保持十六进制的传统)。 下面举个详细例子。

在[TaskForces] 使命部队项下

[某使命部队的十六进制代码]
Name=
a=x,UNIT
b=x,UNIT
c=x,UNIT
...
Group=

[某使命部队的十六进制代码] – 这是用来查找相应的使命部队用的,就像在[vehicletypes] 加了新单位后你必须也有相应的项。

Name=这个是专门给你用写注释的, 对游戏毫无作用, 你可以随便写什么。

n=x,UNIT – 用来定义有那些单位在使命部队里,每定义一个新的使命部队你必须新起一行,你沿用的使命部队的名称必须和 Rules.ini 里[BuildingTypes],[InfantryTypes],[VehicleTypes] 或 [AircraftTypes] 列表里部队的名字一样,记住,使命部队必须从0号开始. 例子, 定义一个有 5 个 美国大兵和 2 个灰熊坦克的部队

[使命部队的十六进制代码]
Name=5 GI"s and 2 Grizzly Tanks
0=5,E1
1=2,MTNK
Group=-1

Group= -n 当使命部队被造出来或被选择完时,这个会使使命部队造成形成某种特殊的集结,-1 是缺省值,它的功能是使这个使命部队所有的单位移动当这些单位被遗留下来时(如果使命部队包含了运输类单位你就应该用 -1,关于怎么把一些单位装上运输类单位请看[组类]). 如果你不使用 -1的话可能造成问题(请看[脚本类] ‘换组’一节专门关于这个的描述)。


[ScriptTypes] 脚本类项

这项用来列出基本上所有红警二的 [ScriptTypes] 脚本类, 列表从 0 号开始,号随着这个脚本类的数量增加而增加。
在这里每个脚本类所对应的条目都是用十六进制数值来表示的(你实际上可以用其它的,但是我建议你保持十六进制的传统)。 下面举个详细例子。
在[ScriptTypes] 脚本类项项下

一个例子

[脚本类的十六进制代码]
Name=
a=x,y
b=x,y
c=x,y
...

[脚本类的十六进制代码] – 这个必须和你在 [ScriptTypes] 脚本类项 定义的名称一样


Name=这个是专门给你用写注释的, 对游戏毫无作用, 你可以随便写什么。

n=x,y – 这个定义一个使命部队将做的行动,每做一个新行动,你必须在写的时候新起一行,第一个行动从0号开始,行动总数可以无限的沿长或非常的复杂。这就是红警系列人工智能的关键所在
在这里,第一个值,x, 代表将做的行动,有些行动需要一个辅助数,这就是我们的 y(假设 x 代表抽烟,但抽烟可以站着抽也可以坐着抽,y就起到区分的作用)
下面举个例子。第一行(0=0,5)使计算机攻击任何遭遇的敌方车辆,第二行使计算机当完成第一行的任务后攻击任何目标。

[脚本类的十六进制代码]
Name=Attack any vehicle then attack anything
0=0,5
1=0,1

下面将给出脚本 x,y 值详细列表, 这是编辑红二人工智能最繁琐的地方,朋友们可要有点耐心了。

当 x 等于 0 时

0,y = 攻击目标, y = 将被攻击的目标的种类

在这里做的任何修改将指令[组类]去使用相对应的使命部队并使部队进攻被 y 值指定的敌方部队
下面是 x 等于0 时可以使用的 y 值。(大家不要高兴, x 总共有58个值,而且 y 值都不一样)

0什么都不做取消攻击
1任意攻击攻击任何它们遭遇的东西
2建筑任何属于[BuildingTypes] 的建筑类
3矿车任何属于[VehicleTypes] 的有 Harvester=yes 这项的车辆
4士兵任何属于[InfantryTypes] 的士兵
5车辆任何属于[VehicleTypes]的车辆
6工厂 任何属于[BuildingTypes] 的有 Factory=yes 的建筑如战车工厂
7基地防御类任何属于[BuildingTypes] 的有 IsBaseDefense=yes 的建筑
8基地威胁类任何赶去支援或已经到达被人工智能攻击的敌方基地的敌人
9电厂类任何属于[BuildingTypes] 的有正 Power= 值的建筑
10可被占领类任何属于[BuildingTypes] 的有 CanBeOccupied=yes 的建筑
11科技建筑任何属[BuildingTypes] 的有 NeedsEngineer=yes 的建筑

当 x 等于 1 时
1,y = 攻击路径点, y = 路径点号

在这里做的任何修改将指令[组类]去使用相对应的使命部队并使部队进攻被 y 值指定的路径点号
如果其中的任何成员有 Infiltrate=yes,这些成员将会进入在路径点上的建筑,如果是 Engineer=yes, 将会占领路径点上的建筑(建筑必须是 Capturable=yes 或 NeedsEngineer=yes),如果是 Agent=yes, 将会渗透入在路径点上的有CanBeOccupied=yes 的建筑,如果是 C4=yes,则会炸掉路径点上的有CanC4=yes 的建筑。 如果路径点上没有建筑,使命部队还是会移动到路径点上去并等待下个指令。98 一般是玩家出来的位置


当 x 等于 2 时

2,y =换组, y = 组的形状
这个是从红色警戒一来的,很有可能已经在红二里废除了,如果使用这个话,大部分时候会造成内部错误,但我还是把它写出来供参考。

-1缺省
0什么都不做保持组的队形
1紧密队形保持紧密队形,快速移动的减速,低速移动的加速
2分散队形散乱队形,各单位使用他们自己的移动速度
3楔行队型北三角形队形指向北方
4楔行队型东三角形队形指向东方
5楔行队型南三角形队形指向南方
6楔行队型西三角形队形指向西方
7线行队形北南队形从北到南拉一条线
8线行队形西东队形从西到东拉一条线
9北我不想说了
10东
11南
12西
13陆地用在 LOCOMOTOR 是气垫的单位

当 x 等于 3 时
3,y = 移动到路径点, y = 路径点号

在这里做的任何修改将指令[组类]去使用相对应的使命部队并使部队移动到被 y 值指定的路径点号
0 到 7 是玩家出来时的位置,98是任务时出来的位置,99为地图中部

当 x 等于 4 时
4,y = 移动到坐标点, y =坐标点号

在这里做的任何修改将指令[组类]去使用相对应的使命部队并使部队移动到被 y 值指定的坐标点号(以格计算)。如果你想某个组类激发某个行动你就要用这个,在红警二里,每个格都有一个相应的坐标点用于激发某个事件,记住,每个地图的的坐标点号不一定是相同的。

|当 x 等于 5 时
5,y = 警戒某区域,y=在这个区域警戒的总时间(以十分之一分为单位算)

在这里做的任何修改将指令[组类]去使用相对应的使命部队并使他们进入警戒状态(就像人类玩家按G一样)。

当 x 等于 6 时
6,y = 跳到某个脚本,y=脚本的序号

这个是用来重复某个在[脚本类]里的行动用的,例如,你想重复在第二行做过的行动那么 y 值就填 1