红色警戒2修改实操教程

红色警戒2修改实操教程

文本编辑软件(以下简称记事本)

任意一种文本编辑软件,用于对核心规则文件的修改。。

Rules解析

对rules.ini、rulesmd.ini规则文件的解析

红色警戒2 RULES 单位篇代码中文版

===========阅读说明============

1、有些代码是针对某种类型单位使用的,在使用前请看看后面的解释。

2、游戏中的代码针对说明(“所有”是特指而不是“全部”的意思):

陆军单位指所有陆上单位,包括步兵

步兵单位指步兵,包括动物

战车单位指除步兵外的所有陆军单位

海上单位指所有海上单位

空军单位指所有空中单位

战机指像入侵者战机一样的从机场出来的单位

直升机指像夜鹰直升机一样的直升机单位

VXL单位则指除步兵、建筑外的所有单位

建筑指所有建筑物单位

两栖单位指可以运行在陆地和水上的陆上单位、海军单位

3、全教程的代都经过字母排序,通过相应的字母可以找到相应的代码。

4、AI指电脑玩家,并非人类玩家。

5、在填写yes或no(或true或false)时,各位可以通过前面的介绍和自己的需要来选择填写。

===============================

注意:这个代码表是针对红色警戒2的,但大部分应该可以用在尤里复仇上。

我的英语不够好,这些中文代码说明肯定有错,请高手指正!

-A-

Accelerates=

可以设置为"ture"或者"false"来决定这个单位移动式是否慢慢加速至Speed定义的速度

AccelerationFactor=

加速度比率,要用在有加速度的单位上,调节加速度大小

ActivateSound=

有控制时候的声音

Adjacent=

填数值。这个代码指定建筑距离扩展建筑的距离。这里的扩展建筑指像基地、战车工厂等可以扩张自己建造领地的建筑。

Agent=

填yes或no。这个代码指定步兵单位是否为间谍单位。如果想要让该单位具有“渗透”建筑物的功能,就要与Infiltrate=yes这段代码连用。注意:当设定了Agent=yes后,就不能再加入Assaulter=yes了。

AIBasePlanningSide=

填0-1的数值。这个代码指定建筑的所属方,主要是给AI判断的,AI会根据这个数值来作出一些行为诸如建立围墙。数值为0时表示为盟军,1时为苏军。

AIBuildThis=

填yes或no。这个代码指定建筑是否可以被AI所建造。

AirportBound=

可以设置为"yes"或"no"来决定这个航空器是否需要一个机场(通常是指一个带有Helipad=yes 代码的建筑物)的机位,如果没有机位,这个航空器将会坠毁。这个航空器一定要在PadAircraft= 后面声明,否则会出现建造不受机位限制的问题。

AirRangeBonus=

可以设置为一个数字来决定当这个单位使用一个带有AA=true 代码的武器攻击空中目标时,是否获得此数字设定的额外射程。

注意只用于Primary= 后面的武器,并且这个数值不能大于武器射程,否则可能会出问题。

AirstrikeRechargeTime=

BORIS式召唤物体的间隔时间(一轮结束后何时召唤第二轮)

AirstrikeTeam=

BORIS式召唤的物体数量

AirstrikeTeamType=

BORIS式召唤的物体种类

AllowedToStartInMultiplayer=

填yes或no。这个代码指定单位是否可以在游戏开始时伴随基地车出现(如苏军开始时的动员兵、犀牛坦克)。注意:该指定单位不能是海军单位,否则游戏开始时该单位就会自动摧毁(就和用超时空传送仪传送海军单位到陆地上的效果相同),除非该单位为两栖单位。

AlternateArcticArt=

填yes或no。这个代码指定步兵单位是否在雪地地图和陆地地图有两种不同的形态,如盟军的海豹部队。注意:如果填yes,该步兵单位就必须准备一个雪地型的步兵文件(SHP文件),并且命名规则为:该单位的温和地图形态+A.SHP,如海豹部队的温和地图形态文件名为SEAL.SHP,那么雪地地图形态文件名则为SEALA.SHP。

AmbientSound=

填Sound.ini中定义的声音名。这个代码指定该单位在地图上存在的声音。注意:这个声音会在该单位被摧毁前不停播放,声音太大可能会影响人类玩家进行游戏。

Ammo=

填数值。这个代码指定该单位的弹药数量。战机不能自动补给弹药,需要在机场降落后进行补给。

AntiAirvalue=

(防御武器)对空军的价值

AntiArmorvalue=

(防御武器)对装甲部队的价值

AntiInfantryvalue=

(防御武器)对步兵的价值

Armor=

填下表中的相应项。这个代码指定该单位的装甲。注意:装甲和防御能力没有任何关系,单位的受伤程度是由攻击方的弹头对相应装甲的百分比决定。

------------------------------------------------

步兵单位:None 无装甲

Flak 布质装甲

Plate 铁质装甲

VXL单位: Light 金属装甲

Medium 中型装甲

Heavy 重型装甲

建筑单位:Wood 木质装甲

Steel 钢铁装甲

Concrete 混凝土庄稼

special_1 特殊装甲1,用于蜘蛛机器人等VXL单位

special_2 特殊装甲2,用于重生VXL导弹等单位

------------------------------------------------

Artillary=

填yes或no。这个代码指定建筑是否为VXL单位展开后的建筑单位并且转向东北方。一般用于地雷等建筑。

Armory=

填yes或no。这个代码指定建筑是否可以升级3级以下的步兵单位,任何进入该建筑的步兵单位都会升级为3级。注意:如果想限制升级步兵的数量,可以加入Ammo=来限制,Ammo=的数值为你想要的限制数量。

Assaulter=

填yes或no。这个代码指定步兵单位是否可以驱逐建筑中驻守的步兵单位而无须对该建筑造成任何损伤。这里的“驱逐”指将建筑中的所有驻守的步兵单位全部破坏。驱逐过程动画由主武代码的AssaultAnim=来设定,一般用UCFLASH,也可以用UCBLOOD和UCELEC。注意:当设定Assaulter=yes后,Agent=就不能设定为yes了。

AttackCursorOnFriendlies=

填yes或no。这个代码指定该单位是否可以对自己一方单位展开攻击,一般用于医疗兵、疯狂伊文、维修车等单位。

AttackFriendlies=

填yes或no。这个代码指定单位是否可以攻击自己一方单位,但也可以攻击敌人单位。

AutoCrush=

受到敌兵攻击后自动去撞敌兵,一般用于矿车或不能打兵的战车

AuxSound1=

填Sound.ini中定义的声音名。这个代码指定飞机起飞时的声音

AuxSound2=

填Sound.ini中定义的声音名。这个代码指定飞机降落时的声音

-B-

BalloonHover=

填yes或no。这个代码指定空军单位不能落地,但该空军单位要有JumpJet=yes这个代码。

BarrelCompressFrames=

炮筒收缩的时间

BarrelHoldFrames=

炮筒保持收缩的时间

BarrelRecoverFrames=

炮筒恢复的时间

BarrelTravel=

炮筒缩的幅度

BaseNormal=

是否作为连接基础

BerserkFriendly=

是否使友军疯狂

Bib=

填yes或no。这个代码指定建筑为特殊平台,用来停置一些单位。如机场。

Bombable=

填yes或no。这个代码指定该单位是否能被疯狂伊文捆绑上定时炸弹。

BombSight=

填数值。这个代码指定该单位对定时炸弹的警戒范围,当被捆绑上定时炸弹的我方单位进入警戒范围该单位会进行拆除定时炸弹的工作,该单位弹头要有BombDisarm=yes这个设置否则同样不能拆除。注意:当该单位本身被捆绑上定时炸弹时不能进行自我拆除定时炸弹的工作。

BridgeRepairHut=

填yes或no。这个代码指定建筑是否为桥梁维修小屋,这种建筑可以维修附近的毁损桥梁或提供其他单位(如谭雅)来炸毁桥梁。

Bunker=

是否为坦克碉堡

Bunkerable=

是否可以放入坦克碉堡

BuildCat=

填下表的相应项。这个代码指定建筑的所属类型,用来给游戏分类和AI识别。

--------------------------------------------------

Combat 防御建筑,该建筑会出现在防御栏中

Infrastructure 不知道,似乎没什么效果

Resource 资源建筑,给玩家提供金钱

Power 电力建筑,给玩家提供电力供给

Tech 科技建筑,用来作为其他单位的建造条件

DontCare 很奇怪的一项,没怎么试过

--------------------------------------------------

BuildLimit=

填数值。这个代码指定单位的建造数量限制。

BuildTimeMultiplier=

微观制造速度

BuildupSound=

填Sound.ini中定义的声音名。这个代码指定建筑建造时播放建造动画时播放的声音。

-C-

C4=

填yes或no。这个代码指定该步兵是否拥有C4炸弹。注意:当为yes时,不管是主副武是否可以对建筑物,对付建筑物的武器都会被C4代替,除非攻击目标有CanC4=no的设定。同时该步兵不能有Infiltrate=yes这段代码。

CanApproachTarget=

填yes或no。这个代码指定幻影坦克一类的伪装战车是否可以不断接近目标开火而不暴露身份。

CanBeach=

填yes或no。这个代码指定该海军单位能否在沙滩上(接近陆地)的地方运行,同时还要有MovementRestrictedTo=Water这一项设定。但实际效果不怎么样,还不如改成两栖的。

CanBeOccupied=

填yes或no。这个代码指定建筑单位是否可以被占领。红色警戒2不同于尤里复仇,占领后的武器要在该建筑上设定,盟军占领后使用Primary=的武器,苏军占领后使用Secondary=的武器。

CanC4=

填yes或no。这个代码指定该单位是否能被有C4=yes的步兵炸毁。默认值是yes。

CanDisguise=

填yes或no。这个代码指定该单位是否可以伪装而敌人无法发觉(狗除外),用在间谍和幻影坦克上。

CanOccupyFire=

是否能被进驻且向外开火

CanPassiveAquire=

填yes或no。这个代码指定该单位是否能够自动攻击目标。默认值是yes。

CanRecalcApproachTarget=

填yes或no。这个代码指定带有CanApproachTarget=yes代码的战车是否能重新计算敌人所在路径点。实际上在游戏中,人类玩家选择了一个攻击对象,游戏并不是攻击该对象而是该对象所在的路径点,然后给击中的目标一些伤害。当然要选择yes,否则该战车就会变的极难操纵。

CanRetaliate=

填yes或no。这个代码指定该单位是否能在遭到敌方攻击时进行反击。注意:反击的武器是主武,当主武为none时,即使这里设为yes也没有任何意义。

Capturable=

填yes或no。这个代码指定建筑是否能被工程师占领。

CaptureEvaEvent=

占领它时的EVA语音

CarriesCrate=

填yes或no。这个代码指定战车被摧毁后是否会在附近生成一个箱子。箱子的内容是随机的。注意:如果想要让建筑物拥有这个效果要换成CrateBeneath=yes。

Carryall=

此飞行器是否可以吊运车辆,一定是运动方式为{4A582746-9839-11d1-B709-00A024DDAFD1}的飞行器。不要是直升机(就是重工造出的那种)

Category=

填下表中的相应项。这个代码指定VXL单位的分类,用来给AI判断的。

--------------------------------------------------

AirLift 运输机,用来运输步兵的飞机

AirPower 战机,用在战机和直升机上,可以使用武器

Transport 运输车,用来运输各种单位的战车

Support 基地车,也可以用在其他可展开成为建筑物的战车上

LRFS 远射程战车,可以进行远程打击的战车

IFV 步兵战车,多功能步兵战车专用

AFV 战车,可以广泛运用于各种战斗用战车,如坦克

Recon Reconnaisance战车

VIP 重要的步兵单位,没什么用

Soldier 步兵,所有步兵单位都用这个分类

--------------------------------------------------

ChargedAnimTime=

填数字。这个代码指定超级武器建筑在超级武器启动前多长时间播放启动动画,单位为分钟,动画由Art.ini中的SuperAnim=来控制。该值应该小于相应超级武器的RechargeTime=值。

ChronoInSound=

填Sound.ini中定义的声音名。这个代码指定单位超时空运动开始的声效。

ChronoOutSound=

填Sound.ini中定义的声音名。这个代码指定单位超时空运动结束的声效。

Civilian=

填yes或no。这个代码指定该单位是否是平民单位,平民单位也就是大家说的中立单位。平民步兵在遭到攻击时会作出逃跑动作,逃跑动作由Art.ini中该步兵的Sequence控制。

ClearAllWeapons=

填yes或no。这个代码指定步兵是否可以清除多功能步兵战车中的步兵。

ClickRepairable=

填yes或no。这个代码指定建筑是否可以使用游戏建造栏的“维修小扳手”工具来维修。注意:当该设置为no时,建筑不能被“维修小扳手”修复,但仍然能被工程师进入修复,如果不想这样,可以在建筑代码中加入Repairable=no。

Cloakable=

填yes或no。这个代码指定该单位是否可以隐形。注意:如果要给空军单位隐形,不能直接使用这个代码来隐形,只能在VeteranAbilities=或EliteAbilities=加入cloakable这个代码,不过只能在升级后才能隐形。

CloakingSpeed=

填1-10的数值。这个代码指定该单位的隐形速度(即出厂时的隐形速度和被发现后的再次隐形速度),要配合Cloakable=yes使用。

CloakGenerator=

填yes或no。这个代码指定该建筑是否可以将自身周围的已方单位全部隐形。

CloakRadiusInCells=

填数字。这个代码指定建筑隐藏周围已方单位的隐藏半径,要和CloakGenerator=yes配合使用。

CloakStop=

填yes或no。这个代码的指定该单位是否受隐形建筑的波及影响。填yes时,该单位不能隐形。

Cloning=

填yes或no。这个代码指定建筑是否为复制中心。克隆中心会把所有从兵营出厂的单位再免费赠与一个同样的。

CloseRange=

攻击距离非常近,单位必须跑到身边来打

ConcentricRadialIndicator=

填true或false。这个代码指定建筑是否拥有“心灵感应装置”(苏军的)那样的雷达扫描效果,但该建筑必须要有HasRadialIndicator=true的设定。

ConsideredAircraft=

填yes或no。这个代码指定空军单位是否为一般空军单位而不是重生卵单位,用来作区分的。

ConstructionYard=

填yes或no。这个代码是基地建筑专用的,比如基地车展开为基地前是朝西南方的。

Cost=

填数值。这个代码指定该单位的价格。每个可以建造的单位都应该设定其价格。

Crashable=

填yes或no。这个代码指定此空中单位被摧毁后,是否坠落到地面

CrashingSound=

填Sound.ini中定义的声音名。这个代码指定空军单位被摧毁坠落时爆炸的声效。要配合Crashable=yes使用。

CrateBeneath=

填yes或no。这个代码指定建筑被摧毁时是否在附近生成箱子。箱子的内容在没有专门设定下是随机的。

CrateBeneathIsMoney=

填yes或no。这个代码指定建筑摧毁后生成的箱子的内容是“获得金钱”。要配合CrateBeneath=yes使用。

CrateGoodie=

填yes或no。这个代码指定战车单位能否从箱子中获得,获得该战车的机率要看使用这个代码的战车数量。

CreateSound=

填Sound.ini中定义的声音名。这个代码指定该单位被建造时的声音。

CreateUnitSound=

填Sound.ini中定义的声音名。这个代码指定步兵单位生成时兵营播放的声音。每种类型单位出厂时工厂都可以播放不同的声音:CreateInfantrySound=,CreateUnitSound=,CreateAircraftSound=分别对应步兵、机动车单位(包括海军单位)、空军单位。

Crewed=

填yes或no。当此单位或建筑被摧毁后,是否有步兵从里面逃出(逃出的可能性在rules的开头有控制),不要用于运动方式为{4A582746-9839-11d1-B709-00A024DDAFD1}的飞行器,不过可以用于直升机(jumpjet),但是会很BT~~~

Crushable=

填yes或no。这个代码指定步兵单位是否能够被机动车单位碾压。同样适用于建筑单位,但该建筑要为围墙类建筑。

Crusher=

填yes或no。这个代码指定战车单位是否能够碾压步兵单位。

CrushSound=

填Sound.ini中定义的声音名。这个代码指定步兵(或围墙类建筑)被碾压的声效。要和Crushable=yes配合使用。

-D-

DamageParticleSystems=

填粒子系统名称。这个代码指定VXL单位被摧毁时播放的粒子动画。

DamageReducesReadiness=

填yes或no。这个代码指定单位弹药减少时单位会承受相应损害。当该单位没有Ammo=的设定时,这个代码无效。

DamageSelf=

是否会伤害自己

DamageSound=

填Sound.ini中定义的声音名。这个代码指定单位被攻击时被攻击方播放的损害声效。

DamageSmokeOffset=

填X,Y,Z的数值。这个代码指定VXL单位、建筑单位临近毁坏时冒烟的位置。默认为0,0,0。

DamSmkOffScrnRel=

填X,Y,Z的数值。这个代码指定VXL单位、建筑单位临近破坏时冒烟的位置,不过这个位置冒的烟比DamageSmokeOffset=冒的烟更难观察到。默认为0,0,0。

DeaccelerationFactor=

填数值。这个代码指定单位接近攻击目标时减慢的速度的百分比,降低百分比是以该单位的Speed=的数值来作标准的。

DeactivateSound=

没有控制时候的声音,见遥控坦克

DeathAnims=

填相应动画名。这个代码指定步兵死亡的动画。但是这个动画早就在InfDeath=设定了,连用会产生视觉冲突。在红色警戒2表现不怎么好,不推荐使用。

DeathWeapon=

填武器名。这个代码指定该单位被摧毁时使用的武器。

DeathWeaponDamageModifier=

填数值。这个代码指定该单位DeathWeapon=武器增加或减少威力的百分比。

DebrisAnims=

填动画名。这个代码指定该VXL单位、建筑单位被摧毁时弹出的碎片。

DebrisTypes=

当这个VXL单位被摧毁后,产生的Voxel类型的碎片。这个碎片一定要是在[VoxelAnims]里定义了的。那些坦克报废后弹处炮管的效果就靠的这个。

DebrisMaximums=

填数值。这个代码指定VXL单位、建筑单位被摧毁时弹出的碎片的最大数量。

DefaultToGuardArea=

填数值。这个代码指定该单位的警戒范围,一旦有敌方进入这个警戒范围,该单位会自动上前迎敌。不能使用在建筑单位上。

Deployer=

填yes或no。这个代码指定步兵能否展开。展开的样子由Art.ini中该步兵的Sequence控制。

DeployFacing=

展开面朝什么方向,0北,7西北

DeployFire=

填yes或no。这个代码指定步兵展开后是否能够开火。要和Deployer=yes配合使用。

DeployFireWeapon=

填0-1的数值。这个代码指定步兵展开后所使用的武器。填“0”为使用主武,填“1”为使用副武。默认值为“1”。

DeployingAnim=

展开动画

DeployToFire=

填yes或no。此VXL单位开火前必须部署。要和DeploysInto=和IsSimpleDeployer=配合使用。

DeployToLand=

是否展开时需要落到地面(例如武直)

DeployTime=

填时间。这个代码指定该单位展开所用的时间。单位为分钟。

DeploysInto=

填建筑名称。这个代码指定战车展开后变成的建筑。

DeploySound=

填Sound.ini中定义的声音名。这个代码指定战车展开成为建筑时的声效。

DetectDisguise=

填yes或no。这个代码指定该单位是否能发现伪装的敌人并展开攻击(是用主武攻击)。

DetectDisguiseRange=

填数值。这个代码指定该单位发现伪装的敌人的距离。要和DetectDisguise=yes配合使用。

DestroyAnim=

填动画名。这个代码指定建筑被摧毁时播放的动画。

DestroyParticleSystems=

填粒子系统名。这个代码指定该单位被摧毁时播放的粒子动画。

DestroySmokeOffset=

填X,Y,Z的数值。这个代码指定该单位被摧毁时播放粒子动画的位置。

DieSound=

填Sound.ini中定义的声音名。这个代码指定该单位被摧毁时的声音。

Disableable=

填yes或no。这个代码指定该单位是否被遭遇战模式的选项所影响,如基地车不能展开后能不能再次收回。

DisguiseWhenStill=

填yes或no。这个代码指定伪装单位在不移动时会把自身伪装起来,如幻影坦克。

DistributedFire=

填yes或no。这个代码指定该单位能分散火力攻击不同目标。

Dock=

填建筑名称。这个代码指定VXL单位可以进入的平台,如战车能进入维修厂维修。

DockUnload=

填yes或no。这个代码指定VXL单位进入平台后进行“卸货”。一般用在矿车上。

DontScore=

为YES时则不计分,不加经验,不加摧毁数

Drainable=

飞碟是否可以吸取它的能量,或停止工作,或资金被吸收

-E-

EnterWaterSound=

两栖类下水的声音

EligibleForDelayKill=

填yes或no。这个代码指定建筑是否为油桶一类的单位。

EligibileForAllyBuilding=

填yes或no。这个代码指定玩家能否在这个建筑上与其他玩家结盟。

EliteAbilities=

填下表中的相应项。这个代码指定单位3级时拥有的能力。

--------------------------------------------------

FASTER 单位移动速度加快(Speed=值加大)

STRONGER 单位的生命值增加(Strength=值加大)

SCATTER 单位能自动分散火力

FIREPOWER 单位攻击力加强(武器的Damage=值加大)

SIGHT 单位的视力加大(Sight=值加大)

CLOAK 单位可以隐形(Cloakable=yes)

TIBERIUM_PROOF 单位可以免疫气体损害(TiberiumProof=yes)

VEIN_PROOF 单位可以免受VXL单位的误伤(ImmuneToVeins=yes)

SELF_HEAL 单位可以自动治愈(SelfHealing=yes)

EXPLODES 单位可以爆炸(Explodes=yes)

RADAR_INVISIBLE 单位可以不被雷达检测到(RadarInvisble=yes)

SENSORS 单位可以检测隐形单位(Sensors=yes)

FEARLESS 单位不会产生畏惧(Fearless=yes)

TIBERIUM_HEAL 单位可以在矿石上自动治愈(TiberiumHeal=yes)

GUARD_AREA 单位可以警戒(DefaultToGuardArea=yes)

CRUSHER 单位可以碾压(Crusher=yes)

C4 单位拥有C4炸弹(C4=yes)

--------------------------------------------------

EliteAirstrikeRechargeTime=

三星时BORIS式召唤物体的间隔时间(一轮结束后何时召唤第二轮)

EliteAirstrikeTeam=

三星时BORIS式召唤的物体数量

EliteAirstrikeTeamType=

三星时BORIS式召唤的物体种类

ElitePrimary=

填武器名。这个代码指定单位3级时使用的主武。

EliteSecondary=

填武器名。这个代码指定单位3级时使用的副武。

EliteStageN=

三星时第N阶停留时间,最后一个停留完后返回第一个

EliteWeaponN=

填武器名。这里的N指的是多功能步兵战车的武器序号。这个代码指定步兵单位在3级多功能步兵战车使用的武器。

EliteOccupyWeapon=

三星进驻用武器

EmptyReload=

填时间。这个代码指定单位弹药用完后重装弹药的所耗时。

EMPulseCannon=

填yes或no。这个代码指定建筑可否用EMP武器。EMP武器是从TS遗留下来的。

Engineer=

填yes或no。这个代码指定步兵是否为工程师。

Enslaves=

"奴隶"为什么东西

EnterTransportSound=

填Sound.ini中定义的声音名。这个代码指定的是单位进入运兵单位时的声音。

ExitCoord=

填X,Y,Z的数值。这个代码指定的是战车工厂或兵营制造出的单位出来的位置。

Explodes=

填yes或no。这个代码指定的是该单位是否能够在被摧毁时爆炸并伤害到邻近的单位,爆炸武器是主武。当然也可以用DeathWeapon=来专门设定。

Explosion=

填动画名。这个代码指定的是VXL单位和建筑爆炸时播放的动画。

ExtraPower=

填数值。

当它和GapGenerator=yes,GapRadiusInCells=,SuperGapRadiusInCells=连用时 表示该裂缝可以展开,展开前覆盖GapRadiusInCells=的面积,展开后覆盖SuperGapRadiusInCells=的面积,耗费电力ExtraPower=,该数值应为负数,当空闲电力达到ExtraPower=时则可以展开,达不到则不可展开,且强行关闭。

和UnitAbsorb=,InfantryAbsorb=连用,表示每装一单位(坦克或人,别想装飞机>_<)增加ExtraPower=的电力

-F-

Factory=

填下表中的对应项。这个代码指定工厂类建筑的所属类别,用来给AI分类的。

------------------------------------------------

BuildingType 建筑工厂,一般用在基地

VehicleType 战车工厂,一般用在战车制造厂

AircraftType 战机工厂,一般用在停机坪和机场

InfantryType 步兵工厂,一般用在兵营

------------------------------------------------

注意:1、VesselType已经不再使用。

2、船厂为VehicleType。

3、CloningType可以使用但没有什么效果。

FactoryPlant=

是否为工业工厂类建筑,有如下相关语句

---------------------------------------------------------------------------

InfantryCostBonus=

步兵建造价格为原来多少倍,工业工厂专用

UnitsCostBonus=

战车建造价格为原来多少倍,工业工厂专用

AircraftCostBonus=

飞机建造价格为原来多少倍,工业工厂专用

BuildingsCostBonus=

建筑建造价格为原来多少倍,工业工厂专用

DefensesCostBonus=

防御建造价格为原来多少倍,工业工厂专用

-----------------------------------------------------------------------------

Fake=

填yes或no。这个代码指定建筑是否为“虚假建筑”。一般用来供地图加事件用。

Fearless=

填yes或no。这个代码指定步兵是否永不畏惧。注意:当为yes时,步兵的恐慌时的匍匐、哀叫将会被取消。

Fighter=

填yes或no。这个代码指定空军单位是否在目标上方发起攻击并且能够命中,同时要有MovementZone=Fly的设定。

FireAngle=

填0-64的数值。这个代码指定单位射出的弹的倾斜度。“0”为水平倾斜,“64”为垂直倾斜。

FirestormWall=

填yes或no。这个代码是从TS遗留下来的,在红色警戒2中没有作用。

FlightLevel=

填数值。这个代码指定空军单位的飞行高度,同时要有MovementZone=Fly的设定。

FlyBack=

单位被锁定在它的轨道(即发射者和目标之间的最短距离)上

FlyBy=

True时为攻击目标时不减低速度(如ZEP)

ForbiddenHouses=

填国家名。这个代码指定该单位不能被指定的国家所建造,即使指定的国家所有条件都满足了。

Fraidycat=

填yes或no。这个代码指定步兵是否在受到打击后做出逃跑的动作。逃跑的动作由Art.ini中步兵的Sequence中的Panic=指定。

FreeUnit=

填战车名称。这个代码指定建筑建造后是否赠送1个免费的单位,一般用于矿厂。

-G-

GapGenerator=

填yes或no。这个代码指定建筑是否为“黑幕产生器”。

GapRadiusInCells=

填数值。这个代码指定“黑幕产生器”建筑产生的黑幕半径。要和GapGenerator=yes配合使用。

Gate=

填yes或no。这个代码指定建筑是否为“门”型建筑,已方单位进入已方的“门”型建筑时,“门”型建筑就会打开。另外敌方间谍伪装进入时,已方“门”型建筑也会打开。

GateCloseDelay=

填时间。这个代码指定“门”型建筑关闭的所花时间。要和Gate=yes配合使用。

GDIBarracks=

填yes或no。这个代码指定该建筑是否为盟军兵营,用来给AI判断的。这关系到可否使用集结点

Grinding=

是否为回收机,例如尤里的回收厂

GuardRange=

填数值。这个代码指定该单位的警戒距离,不能用于建筑物。要和DefaultToGuardArea=yes配合使用。

Gunner=

填yes或no。这个代码指定战车是否可以依据不同情况转换炮台。在红色警戒2中只能用在多功能步兵战车上。

-H-

HalfDamageSmokeLocation=

填X,Y,Z的数值。这个代码指定战车冒黄烟的开始位置。

HalfDamageSmokeLocation1=

填X,Y,Z的数值。这个代码指定建筑冒黄烟的开始位置。

HalfDamageSmokeLocation2=

填X,Y,Z的数值。这个代码指定建筑冒第二个黄烟的开始位置。

Harvester=

填yes或no。这个代码指定VXL单位是否为矿车。

HarvestRate=

挖矿的间隔时间(限奴隶用)

HasRadialIndicator=

填yes或no。这个代码指定建筑是否拥有攻击范围圆弧(如机枪碉堡的那种圆弧)。圆弧的半径由CloakRadiusInCells=或GapRadiusInCells=或SuperGapRadiusInCells=指定。或者也可以设定成PsychicDetectionRadius=,这是另一种雷达扫描效果(“心灵感应装置”那种圆弧效果)。

HasTurretTooltips=

填yes或no。这个代码指定运兵单位运兵时是否显示里面的步兵名称,效果同“多功能步兵战车”,而且运兵量必须为1。

HasSpotlight=

填yes或no。这个代码是从TS遗留下来的,在红色警戒2没什么作用。

HasStupidGuardMode=

填true或false。这个代码指定建筑是否能够自动攻击敌方目标。填true时不能自动攻击,只有填false时才能自动攻击目标。

Height=

高度

Helipad=

填yes或no。这个代码指定建筑是否为机场建筑。入侵者一类的需要机场的空军单位就从这里制造。注意:该机场应该注册在PadAircraft=的列表中。

Hospital=

填yes或no。这个代码指定建筑是否为医院。进入医院的受伤步兵全部都会在短时间内痊愈。如果要限制治疗数量可以加入Ammo=来限制。注意:因为红色警戒2的内核问题看上去是治愈了步兵,其实是从医院出来了一个一模一样的同等级步兵,这时复制中心就会复制出另外一个一样的新兵。在尤里复仇中这个问题得到了解决。

HoverAttack=

填yes或no。这个代码指定空军单位是否盘旋攻击目标,同时要有JumpJet=yes这个设定。

HoverPad=

填yes或no。这个代码是从TS遗留下来的,在红色警戒2没什么作用。

HunterSeeker=

填yes或no。这个代码是从TS遗留下来的,在红色警戒2中还有部分作用,该单位可以跟踪选定的目标。

-I-

ICBMLauncher=

填yes或no。这个代码指定建筑物在展开时战车是否朝着东南方向。

IdleRate=

填数值。这个代码指定步兵(包括海豚和巨型乌贼)的空闲动画播放比率。数值越大越慢。

IFVMode=

填多功能步兵战车的相关炮台数值。这个代码指定步兵进入多功能步兵战车后多功能步兵战车的状态。

*TurretIndex=

"*"代表前文的武器,该武器使用的炮台为N号炮台

*TurretWeapon=

"*"代表前文的武器,该武器使用的武器为N号武器

IgnoresFirestorm=

填yes或no。这个代码填在武器代码中。这个指定武器是否爆发防御工事,但并没有什么作用。

Image=

填Art.ini的图象定义名。这个代码指定该单位的图象。不设定时即和Art.ini中的名称相同。注意:Art.ini中的单位名称应该和单位对应的素材(SHP、VXL/HVA)名称相同,否则会无法显示单位的图象只会显示图标。

ImpactLandSound=

填Sound.ini中定义的声音名。这个代码指定单位被摧毁落地时的声效,同时要有Crashable=yes这个设定。

Immune=

填yes或no。这个代码指定单位是否会受到损害。当为yes时单位为无敌状态,任何损伤都没有用。一般用于桥梁维修小屋一类的重要建筑。

ImmuneToPoison=

是否对神经毒气免疫

ImmuneToPsionics=

填yes或no。这个代码指定单位是否会受到心灵控制和心灵气波(尤里展开释放时那种气波,气波仅对步兵有效)的影响。

ImmuneToPsionicWeapons=

是否对心灵震荡波免疫

ImmuneToRadiation=

填yes或no。这个代码指定单位是否会受到辐射的影响。

ImmuneToVeins=

填yes或no。这个代码指定步兵单位是否会受到VXL单位的误伤。

InfantryAbsorb=

步兵单位是否能进入发电

InfantryGainSelfHeal=

给步兵增加每桢几点的回血

Infiltrate=

填yes或no。这个代码指定步兵是否可以“渗透”建筑物。要和Agent=yes配合使用。注意:当Infiltrate=yes时,这个单位就可以有C4=yes,Engineer=yes,Thief=yes,Agent=yes多个功能之一。

InitialAmmo=

填数字。这个代码指定该单位出厂时的初始弹药数。当不设定时,初始弹药数为Ammo=的数值。

Insignificant=

填yes或no。这个代码指定该单位是否为“无关紧要的单位”,即在破坏时伊娃不会播发Lost的讯息。

Invisible=

填yes或no。这个代码指定该单位是否不会理睬任何单位。当为yes时,不会理睬任何单位。

InvisibleInGame=

填yes或no。这个代码指定建筑是否不能被游戏者发现和选中、攻击等,只能看见它的动画等特效。一般用于灯光建筑。

IsBase=

是否为基础设施,这关系到AI攻击的目标

IsBaseDefense=

填yes或no。这个代码指定建筑是否为防御建筑,AI会根据选项来自动建造防御工事来防御自己。

IsChargeTurret=

填yes或no。这个代码指定战车是否可以在有多辆同样的已方战车在旁边时进行聚能攻击,同样的已方战车越多聚能攻击的威力就越大。红色警戒2中光棱坦克就有聚能攻击的能力。

IsCanine=

填yes或no。这个代码指定步兵是否为狗。当为yes时,单位会检测出伪装的步兵单位并自动用主武攻击。在红色警戒2中这段代码加不加无所谓,因为已经被DetectDisguise=yes替代了。

IsGattling=

是否有盖特效应

IsSelectableCombatant=

填yes或no。这个代码指定该单位是否能被玩家选中。当为no时玩家不能选中即也不能对其控制。一些特殊的单位如V3导弹就用了这个代码,如果改成yes那么V3导弹发射出去后就可以手动操作了。

IsSimpleDeployer=

填yes或no。这个代码指定该单位展开后会变成另一个样式,但实际上仍然是同一个单位。

IsTilter=

填yes或no。这个代码指定VXL单位在斜坡上是否会倾斜。默认值为yes。

IsTrain=

填yes或no。这个代码指定战车单位是否为火车。

Ivan=

填yes或no。这个代码指定步兵是否为疯狂伊文类型的单位,作用是和电脑作区分,并且武器为给目标绑上定时炸药。

-J-

JumpJet=

填yes或no。这个代码指定空军单位是否为“跳跃式”运动方式,除战机外,这种运动方式应该广泛运用在所有空军单位上。

-----------------------当JumpJet=yes时可用的代码-----------------------

JumpjetAccel=

填数值。这个代码指定空军单位在移动中加速的比率,一般填整数。

JumpjetClimb=

填数值。这个代码指定空军单位在越过山崖等高地时的攀登速度。

JumpjetCrash=

填数值。这个代码指定空军单位被摧毁时坠地的速度,一般不要大于15。

JumpjetDeviation=

填数值。这个代码指定空军单位射弹的弹道偏离程度。

JumpjetHeight=

填数值。这个代码指定空军单位的飞行高度,通常设置为800。

JumpjetNoWobbles=

填yes或no。这个代码指定是否禁止空军单位浮动。填yes时为禁止空军单位浮动。

JumpjetSpeed=

填数值。这个代码指定空军单位的平飞速度,即在没有地形影响时空军单位的运行速度。

JumpJetTurn=

是否停止时面向一方

JumpjetTurnRate=

填数值。这个代码指定空军单位掉转方向的速度,数值越小越快。

JumpjetWobbles=

填数值。这个代码指定空军单位的浮动比率,一般填小数,数值越小浮动动作越小。

-----------------------------------------------------------------------

-K-

没有以这个字母开头的代码。

-L-

Landable=

填yes或no。这个代码指定空军单位是否可以降落在地面上。对于战机单位,则只能停留在机场建筑上。

LandTargeting=

填0-2的数值。这个代码指定海军单位攻击的规则。设置为0,海军单位可以攻击陆上单位;设置为1,海军单位不能攻击陆上单位;设置为2,海军单位攻击陆上单位用副武攻击(只能用于尤里复仇)。

LeadershipRating=

领导值,同时选择一群时该值最大者发声

LeaveWaterSound=

两栖类出水的声音

LeaveRubble=

填yes或no。这个代码指定建筑被破坏后是否会留下残渣,也就是说在这个区域内不能建造任何建筑物。残渣是由Art.ini设定的,当不设定时,建筑物被破坏后,那一块将无法使用。默认值为no。注意:当建筑遭到超时空攻击消失后,即使你设定了LeaveRubble=yes,这块区域也不会出现残渣,而且可以再次利用。

LeaveTransportSound=

填Sound.ini中定义的声音名。这个代码指定运兵单位中的单位释放时的声音。

LegalTarget=

填yes或no。这个代码指定该单位能否被直接攻击(即在不按下Ctrl键强制攻击的情况下)。典型的应用是平民的医院不能被直接攻击。注意:当按住Ctrl强制攻击时,即使你设定了LegalTarget=yes,该单位都会遭到攻击。

LightBlueTint=

填数值。这个代码指定建筑的发光程度,这里发的是蓝光。默认值是1.0。

LightGreenTint=

填数值。这个代码指定建筑的发光程度,这里发的是绿光。默认值是1.0。

LightIntensity=

填数值。这个代码指定建筑的发光强度。默认值是0.0,即不发光。

LightRedTint=

填数值。这个代码指定建筑的发光程度,这里发的是红光。默认值是1.0。

LightVisibility=

填数值。这个代码指定建筑物发光的能见程度,数值越大,光的覆盖面积越大。默认值是5000。

Locomotor=

填下表中的对应项。这个代码指定除建筑物外的单位的运动方式。每个除建筑物外的单位都应该设定运动方式。设定该项之后要把MovementZone=,SpeedType=和MovementRestrictedTo=同时进行相应设定。

-----------------------------------------------------------------------------

{4A582741-9839-11d1-B709-00A024DDAFD1}

这是普通的运动方式,用于车辆单位,单位的图像必须为VXL,以确保单位能够正常的旋转、移动、摇晃、上下山。它的速度方式默认为SpeedType=Wheel。这个代码还有另外几个设置:

1、被控制在轨道上移动(如TS的火车)。要加入IsTrain=true。

2、用一个特殊的图像方式来显示在不同的区域移动(如TS里GDI的两栖运兵车)。

3、由游戏程序控制,并由HARV定义的怪东西,作用不明。

{4A582742-9839-11d1-B709-00A024DDAFD1}

这是运动方式“悬浮”,它的特殊设置为:当离子风暴发生时,单位被迫着陆,并停止移动。

{4A582743-9839-11d1-B709-00A024DDAFD1}

这是潜地移动的运动方式,所有用此类方式移动的单位的潜地移动速度由[General]部分里的Subterranean Vehicle Characteristics中的TunnelSpeed=定义;而平时的移动速度由单位本身的Speed=项决定。它速度方式默认为SpeedType=Underground。

{4A582744-9839-11d1-B709-00A024DDAFD1}

这是步兵的“行走”的运动方式,单位图像为SHP,必须在Art.ini里设置它们的Sequence。默认为SpeedType=Foot。这个代码还有另外几个设置:

1、在水里的移动图像,由Sequence的相关项控制。

2、空投时的图像,由Sequence的相关项控制。空投步兵的阴影由INFSHDW.SHP控制。

3、在特殊环境时,使用POD.SHP的逻辑,但是在红色警戒2里缺少图像文件。

4、游戏程序控制,当单位叫做DESO时,有些特殊东西,但到底是什么不清楚。

5、游戏程序控制,当单位叫做COW时,会到处乱走。

{4A582745-9839-11d1-B709-00A024DDAFD1}

这是“落下”的运动方式,由在[General]部分里的Drop Pod Flight Characteristics控制它的特有属性。速度方式默认为SpeedType=Winged。它的附加设置为,在落地/升空时调用一些图像来做为动画效果。

{4A582746-9839-11d1-B709-00A024DDAFD1}

这是“飞行”的运动方式,速度方式默认为SpeedType=Winged。

附加设置:

1、可以有一个尾焰,由Art(md).ini的Trailer=控制

2、如果单位为战机,且有Landable=yes,可以设置降落动画;用Carryall=yes,IsDropship=yes也会有类似效果,但是由ART.ini中不同参数控制。

3、在离子风暴来临时,单位会从空中落下被毁。

4、若是战车单位,且有HunterSeeker=yes,则会自动寻找找单位来攻击。

5、有Fighter=yes时,可以悬浮在敌军单位上方攻击敌人(类似TS里的Orca Fighter)。

{4A582747-9839-11d1-B709-00A024DDAFD1}

这是“传送”的运动方式,即超时空移动方式,在Rules.ini的[General]部分中有个叫Reinforcement/Chrono Stuff 的特殊专门设定。这个运动方式在移动是有特殊的动画效果为WarpOut= (尽管它的一个存在且有效的参数项WarpIn= 没有用到)。同时,这个运动方式是唯一一个没有默认的SpeedType的,有可能是被干扰了——删掉某一个物件的运动方式并不定义它也可以有这样的效果。游戏设置的原意是要让拥有这种运动方式的单位在使用时用一些特殊的蓝色的光标事件来代替平时的绿色的那些,但它们并没有被用上而且仍保留在Mouse.shp和Mouse.sha里。

{55D141B8-DB94-11d1-AC98-006008055BB5}

这是“机械”的运动方式,被使用于机械类的单位的“行走”而不是“驾驶”型运动方式。被用于基于SHP型图象单位,使它们能够正确的面向各个方向。默认SpeedType=Foot。注意:使用这个运动方式的单位可以有一个炮台(需要VXL和HVA)。这个代码还有另外设置:

1、使用此运动方式的单位可以像建筑一样使用电力供应,当停电时不能运转(由Powered=控制)。

{92612C46-F71F-11d1-AC9F-006008055BB5}

这是“跳跃飞行”的运动方式。在Rules.ini的[JumpjetControls]中有综合特征的定义。默认为SpeedType=Winged。可以在这些单位代码中加入一些控制该单位在使用此运动方式时的设置,覆盖综合特征的定义(仅对该单位而言),即可对不同单位进行专用化。这在RA2的引擎中是很必要的因为有些使用此运动方式的单位是从工厂里建造出来。

{2BEA74E1-7CCA-11d3-BE14-00104B62A16C}

这是“航运”的运动方式。被使用于各类船只。单位基于VXL图象。默认为SpeedType=Float,并有附加代码使得单位被摧毁不是爆炸而是下沉。附加代码为:Weight=x。当x为大于3的整数,这个单位就会下沉,小于3则反之。

Locomotor={B7B49766-E576-11d3-9BD9-00104B972FE8}

这是“弹道”的运动方式。用于单位发出的卵导弹。使用该运动方式的导弹必须基于vxl图象。默认SpeedType=Winged。在Rules.ini的[General]中的V3 Rocket Control and Dreadnaught Rocket Control处有综合特征定义。注意:卵导弹的运动方式已经被游戏平台定死,你不能新增任何导弹型单位,只能修改游戏内置的导弹型单位,有V3导弹、无畏级导弹,新增的导弹是无法射中目标的,只会自个飞走。

附加设置:

1、增加FlyBack=true可使单位被锁定在它的轨道(即发射者和目标之间的最短距离)上。

-M-

MaxDebris=

填数值。这个代码指定除步兵外的单位被摧毁后弹出的碎片数的最大值。

MaxNumberOccupants=

填数值。这个代码指定该建筑最大能够容纳多少步兵,典型的应用是在平民建筑上。

MinDebris=

填数值。这个代码指定除步兵外的单位被摧毁后弹出的碎片数的最小值。

MissileSpawn=

填数值。这个代码指定空军单位是否为卵导弹。应该只有V3导弹、无畏级导弹才设置这个项。

MobileFire=

填yes或no。这个代码指定单位是否只能在开火后才能继续移动。典型的运用是V3火箭发射车。

MoveSound=

填Sound.ini中定义的声音名。这个代码指定战车和步兵移动中的声音。

MovementZone=

这个代码要和Locomotor=的值配合使用,具体请参照下表:

----------------------------------------------------------------

WaterBeach 能在海滩上和水上运动但不能在陆地上运动

Water 能在水上运动但不能在陆地上运动

Fly 能在空中运动

InfantryDestroyer 常用于手雷兵、导弹兵之类步兵运动

Subterranean 能在地下潜地运动

Amphibious 能在水陆运动,即两栖

AmphibiousDestroyer 能在水陆运动,但其他地方不能运动

Destroyer 常用于战车的运动

Crusher 常用于矿车的运动

Normal 正规的运动方式,没有特殊效果

----------------------------------------------------------------

MovementRestrictedTo=

填下表中的对应项。这个代码相当于第二个MovementZone=。

----------------------------------------------------------------

Clear 一般,没有特殊效果

Road 在公路上移动

Rock 在岩石上移动

Beach 在海滩上移动

Rough 在粗糙的地域上移动

Tunnel 在隧道中移动

----------------------------------------------------------------

MoveToShroud=

填yes或no。这个代码指定单位是否能够探路,即打开地图上的黑色部分。

MoveStart=

移动开始时的声音

MuzzleFlash=

填X,Y,Z的数值。这个代码指定TurretAnim=的动画播放的位置,可以设置多个,如MuzzleFlash0=,MuzzleFlash1=等。典型的运动是平民建筑被占领后,攻击时的火花位置。这个代码要用在Art.ini中。

-N-

Name=

填任何内容。这个代码指定该单位的注释内容,在游戏中没有任何作用。

Natural=

为野生动物,野生动物不接受INFDEATH

NaturalSmokeLocation=

伤害时冒烟的部位

Naval=

填yes或no。这个代码指定该单位是否为海军单位。所有海军单位都应该有Naval=yes的设置,有这个设置的单位会被船坞类建筑生产。

NavalTargeting=

填下表中的对应项。这个代码指定海军单位攻击目标的规则。

----------------------------------------------------------------

0 能够攻击水下单位,攻击武器为主武

1 能够攻击水下单位,攻击武器为副武

2 只能攻击水下单位,攻击武器为主武

3 使用副武攻击海上单位

4 使用主武攻击海上单位,副武攻击水下单位

5 使用主武攻击所有海军单位

6 不能攻击海上单位

----------------------------------------------------------------

NeedsEngineer=

填yes或no。这个代码指定建筑是否能够被工程师占领,常用于平民科技建筑。该平民科技建筑要在NeutralTechBuildings=中注册,以保证伊娃能够播放相应的提示语。

NoAutoFire=

填yes或no。这个代码指定该单位能否自动攻击目标。

NODBarracks=

填yes或no。这个代码指定该建筑(兵营类)是否为苏联方兵营,给AI判断用的。所有苏联兵营都应该有NODBarracks=yes。

Nominal=

填yes或no。这个代码指定该单位是否能被敌人攻击,典型的运用是平民单位。

NoShadow=

填yes或no。这个代码指定该单位是否没有阴影。当为yes时,单位没有阴影。

NoSpawnAlt=

填yes或no。这个代码指定VXL单位发射出卵单位后是否会变成“无卵”样式。典型的运用是V3导弹发射车发射后车上的导弹会短暂的不见,变成一辆没有导弹的V3导弹发射车,还有无畏级战舰。注意:“无卵”样式实际上是调用另一个VXL文件,所以当NoSpawnAlt=yes时,要把准备的“无卵”样式VXL和HVA文件改名为 原单位VXL名+WO.VXL 和 原单位VXL名+WO.HVA。如V3,应该改名为V3WO.VXL和V3WO.HVA。

NotHuman=

填yes或no。这个代码指定步兵单位是否为野生动物,这种单位不会受到攻击者武器的弹头中的InfDeath=影响。

NotWorkingSound=

填Sound.ini中定义的声音名。这个代码指定建筑停止工作时的声音。

NukeSilo=

填true或false。这个代码指定建筑是否为核弹井。当为true时,配合SuperWeapon=MultiSpecial,就可以成功开启“核弹攻击”的超级武器。

NumberImpassableRows=

填数值。这个代码指定建筑最多可以停载等待的单位数量。

NumberOfDocks=

填数值。这个代码指定可停载单位建筑的最大可停载量,如机场可以停载4架战机,矿厂能够停载1辆矿车。

-O-

Occupier=

填yes或no。这个代码指定步兵单位是否可以进入可驻守的建筑物。

OccupyWeapon=

进驻用武器

OmniCrushResistant=

是否能被战斗要塞碾压

OpenTopped=

是否可以从运输工具内向外射击,如战斗要塞

OpenTransportWeapon=

在可对外射击的运输工具里使用主武(0)副武(1)

OpportunityFire=

填yes或no。这个代码指定该单位是否能够移动中开火。这个代码不能用于建筑物。

OrePurifier=

填yes或no。这个代码指定建筑是否为矿石精炼器。效果和盟军的矿石精炼器一样,即从矿石精炼厂中获得的资金再增加一定百分比的额外资金。这个百分比可以在Rules.ini中的PurifierBonus=设定,当为1时即为100%,也就是一次获得双倍资金。

Organic=

填yes或no。这个代码指定海军单位是否为水下单位,通常用于潜水艇。

Owner=

填国家名。这个代码指定该单位可以被哪些国家所拥有(注意!不是建造)。对于基地车等一开始就会出现的单位,应该正确的设置这个代码否则不能在开始时显示。注意:在实际运用中发现即使设定为某个国家专有,但是其他国家仍然能够建造,原因是Prerequisite=这个代码,需要将后面跟上的建筑名改换为你所想要的国家的特有建筑。如果没有特有建筑,可以使用RequiredHouses=这个代码跟上你所想要的国家名即可,注意Prerequisite=代码跟上的建筑名不要有该国家不能建造的建筑。

Overpowerable=

填yes或no。这个代码指定建筑是否为充能建筑,当类似磁暴步兵类的充能单位对其进行充电时,该建筑转为副武攻击,副武通常要指向比主武强的武器。典型的运用是苏军的磁暴线圈。

-P-

PackupSound=

填Sound.ini中定义的声音名。这个代码指定建筑收回为战车时播放的声音,不设定时就为基地车收回的那种声音。

Parasiteable=

填yes或no。这个代码指定该单位是否能被寄生,这里的寄生是指被像恐怖机器人一类的单位所寄生。

Passengers=

填数值。这个代码指定VXL单位的可运兵数量。如果要最大容积,可以修改SizeLimit=这个代码。

Passive=

填yes或no。这个代码指定该单位是否为“被动单位”。当为yes时,该单位不会自动攻击敌人,被敌人攻击也不会还击,相当于CanPassiveAquire=no和CanRetaliate=no连用。

PermaDisguise=

填yes或no。这个代码指定伪装单位是否可以在移动中不会破坏自己的伪装。典型的运用是间谍,间谍在移动中不会轻易被敌人识破。

PhysicalSize=

填1-10之间的值。这个代码的详细作用不明,但应该给每个步兵都添上PhysicalSize=1。(该代码作用已取消)

Pip=

填对应颜色名。这个代码指定单位进入运兵VXL单位后下面小格显示的颜色,在红色警戒2中有green、yellow、white、red和blue几个颜色可共选择。默认为green。

PipScale=

填下表中的对应项。这个代码指定单位下方小格显示的类型。注意:小格数量在特殊状况下PipWrap=指定。

---------------------------------------------------------------------------------------------------------

Passengers 乘客,小格数量由Passengers=这个代码的数值指定

Ammo 弹药,这里不是小格表示而是竖线方式表示,小格数量由Ammo=这个代码的数值指定

Power 电力,这里不是小格表示而是提示条方式表示,提示条显示电力内容由Power=这个代码的数值指定

Tiberium 矿石,只能用在矿石精炼厂和采矿车上,小格数量由Storage=这个代码的数值的 逻辑 指定

---------------------------------------------------------------------------------------------------------

PipsDrawForAll=

所有人能见到它的容量,典型运用是尤里的心灵控制塔

PipWrap=

填数值。这个代码指定单位下方显示的小格的数量限制,不同阶段会用不同颜色表示,如弹药,不同阶段由不同颜色表示弹药的数量。要和PipScale=以及其对应值的连用。

PitchAngle=

填数值。这个代码指定直升机单位飞行的角度。默认为20。也可以用于所有空军单位,只不过效果没直升机好。

PitchSpeed=

填数值。这个代码指定空军单位的加速百分比,用小数表示。默认为0.25。

PixelSelectionBracketDelta=

数值越小 选择框越高

PlaceAnywhere=

填数值。这个代码指定建筑的建造是否不会受到场地的影响,如凹凸等。当为yes时,建筑可以在任何场地建造。

Points=

填数值。这个代码指定该单位的经验点。这个经验点既指定了该单位拥有的经验点,也指定了敌人摧毁该单位后获得的经验点(部分)。数值越大该单位升级越慢。

Power=

填数值。这个代码指定建筑单位占用的电力量。当为负数时,则为供电。

Powered=

填yes或no。这个代码指定建筑单位是否会受到停电后影响,如不能使用武器、建筑动画不能播放等。如果想设定建筑受到停电影响后可以继续播放动画,可以设定Art.ini中的ActiveAnimPowered=no,反之则设定为yes。

PoweredSpecial=

是电力类建筑

PoweredUnit=

是否在无电的时候不工作

PowersUpBuilding=

填建筑名。这个代码指定建筑可加载哪个附属建筑。附属建筑即只能放在主体建筑上面,不能放在空地或其他地方的建筑。详情请参考《反恐联盟》中中国的地热发电厂、超级空军研究所。

PowersUnit=

填单位名,给该Unit供能,如无该建筑则对应UNIT无法工作

PowersUpToLevel=

填数值。这个代码指定建筑最多可以加载多少个附属建筑。-1为可以无限加载。加载的位置由Art.ini中该建筑的PowerUpNLocXX=、PowerUpNLocYY=和PowerUpNLocZZ=指定,N表示第N个建筑,通常能加载多少附属建筑就设定多少个。

Prerequisite=

填建筑名。这个代码指定该单位制造时所必须的建筑,当已方没有该建筑时该单位不能建造。具体请参看我对Owner=的说明。该代码同时也可以指定建筑类型,当建造了该类型的建筑后,该单位可以建造,常用于两个阵营都可以建造的单位。注意:该建筑要在Rules.ini上部的“Building prerequisite categories are specified here.”这一项后面的相应项(这一项是个注释)注册才行,否则电脑不认。以下是建筑类型表:

------------------------------------------------------------------------------------------

RADAR 雷达类建筑,这种类型的新建筑应该同时在PrerequisiteRadar=中注册

BARRACKS 兵营类建筑,这种类型的新建筑应该同时在PrerequisiteBarracks=中注册

TECH 科技类建筑,这种类型的新建筑应该同时在PrerequisiteTech=中注册

PROC 矿厂类建筑,这种类型的新建筑应该同时在PrerequisiteProc=中注册

POWER 发电厂类建筑,这种类型的新建筑应该同时在PrerequisitePower=中注册

FACTORY 战车工厂建筑,这种类型的新建筑应该同时在PrerequisiteFactory=中注册

------------------------------------------------------------------------------------------

PrerequisiteOverride=

填建筑名。这个代码指定该单位可以在Prerequisite=之外另外指定必须建筑,相当于第二个Prerequisite=。只要当PrerequisiteOverride=这个代码满足时,即使Prerequisite=没有满足,该单位也可以建造。

PreventAttackMove=

填yes或no。这个代码指定该单位能否攻击移动中的单位,不设置也能攻击不过命中率不怎么样。

PreventAutoDeploy=

填yes或no。这个代码指定该单位是否能够自动展开。

Primary=

填武器名。这个代码指定该单位的主武,也就是所谓的主要武器、第一武器。

ProduceCashAmount=

填数值。这个代码指定建筑在每隔固定时间就会给拥有者多少资金。典型的运用是科技钻油井。这里的时间由ProduceCashDelay=这个代码的数值指定。

ProduceCashDelay=

填数值。这个代码指定建筑每隔多少时间便会给拥有者固定的资金。典型的运用是科技钻油井。这里的资金由

ProduceCashAmount=指定。

ProduceCashStartup=

填数值。这个代码指定当该建筑被占领时占领方获得的资金。典型的运用是科技钻油井。

ProtectWithWall=

填yes或no。这个代码指定建筑在AI使用时是否会被围墙围住,该围墙由当前选择的国家的所属阵营来决定,也可以通过设定AIBasePlanningSide=来指定。

PsychicDetectionRadius=

填数值。这个代码指定探测敌人动作的半径范围。典型的运用是苏军的“心灵感应装置”。

-Q-

没有以这个字母开头的代码。

-R-

Radar=

填yes或no。这个代码指定建筑是否拥有雷达功能,拥有雷达功能的建筑可以不是雷达类建筑。

RadarInvisible=

填yes或no。这个代码指定该单位是否会被敌方雷达检测到,效果是敌人无法在小地图看见该单位。

RadarVisible=

填yes或no。这个代码指定该单位完全不能被雷达检测到,即使是“心灵感应装置”一类的建筑物也不能感测到。步兵的默认值为no。一般和Insignificant=yes连用。

RadialColor=

填颜色值,用24位RGB来表示。这个代码指定建筑的颜色,用来固定建筑的颜色的,当设定该代码后该建筑的颜色不会受游戏的一系列设置的影响。默认为该建筑所属方的颜色,或者是遭遇战设置时的颜色。

RadialFireSegments=

武器放射状发射的角度

RateUp=

每桢多少个Stage时间

RateDown=

多少桢找不到敌人才终止盖特效应

Refinery=

填yes或no。这个代码指定建筑是否为矿石精炼厂。给AI判断用的,比如AI会指定部队围着矿石精炼厂打。

RefinerySmokeParticleSystem=

矿厂接受矿物后冒烟的烟雾系统

RefinerySmokeFrames=

矿厂接受矿物后冒烟的时间

RefnSmokeOffsetOne=

填X,Y,Z的值。这个代码指定矿石精炼厂在接受采矿车的矿石后冒烟的位置,这是第一个位置。

RefnSmokeOffsetTwo=

填X,Y,Z的值。这个代码指定矿石精炼厂在接受采矿车的矿石后冒烟的位置,这是第二个位置。

ReadinessReductionMultiplier=

填数值。这个代码指定该单位的损害乘法器。要和DamageReducesReadiness=yes连用。

RejoinTeamIfLimboed=

填yes或no。这个代码指定该单位攻击目标后是否归队,该单位的武器要有LimboLaunch=yes。通常用于狗。

Reload=

填yes或no。这个代码指定该单位装弹的所需时间。

ReloadIncrement=

填yes或no。这个代码指定该单位弹药用完后再装弹的所需时间。默认值为Reload=的值。

Repairable=

填yes或no。这个代码指定建筑是否能够被工程师所修复。当为no时工程师不能进入修复。

RequiredHouses=

填国家名。这个代码指定该单位只能被指定的国家所建造。对于其他国家,即使满足了Prerequisite=和TechLevel=,只要不是指定的这个国家,就不能建造。

RequiresStolenAlliedTech=

填yes或no。这个代码指定该单位是否在已方间谍渗透盟军的高科技实验室后才能建造。

RequiresStolenSovietTech=

填yes或no。这个代码指定该单位是否在已方间谍渗透苏军的高科技实验室后才能建造。

RequiresStolenThirdTech=

填yes或no。这个代码指定该单位是否在已方间谍渗透尤里的高科技实验室后才能建造。

ReselectIfLimboed=

填yes或no。这个代码指定该寄生单位在所寄生的单位被摧毁的情况下能否再次出现。该单位的武器代码要有LimboLaunch=yes 才行。

ResourceDestination=

是否作为矿厂来使用

ResourceGatherer=

是否是奴隶矿山类物体

RevealToAll=

填yes或no。这个代码指定建筑是否会生成雷达事件,这里的雷达事件是指伊娃的报告。

RollAngle=

填数值。这个代码指定空军单位转弯时的滚动次数。默认为30。

ROT=

填数值。这个代码指定该单位转弯的比率,数值越大转弯越快。默认值为0。

-S-

SAM=

填yes或no。这个代码指定建筑是否发射SAM导弹,也就是对空导弹。当设置为yes时,该建筑只能攻击“部分”空军单位。在红色警戒2中不怎么支持,因为它不对所有空军单位发动攻击,只会对“Aircraft Type List”中注册的空军单位发动攻击,而不会对“Vehicle Type List”、“Infantry Type List”中注册的空军单位发动攻击,也就是说像直升机、飞行步兵都不能对其发动攻击。

Secondary=

填武器名。这个代码指定该单位的副武,也就是所谓的次要武器、第二武器。当主武不能攻击某目标时,游戏会自动转为副武攻击,当副武不能攻击时,游戏才会判断该单位不能攻击。

SecretHouses=

在秘密实验室里只有某一方可以取得这项科技

SecretLab=

是秘密实验室

Selectable=

填yes或no。这个代码指定该单位能否被玩家选中。典型的运用是V3导弹。

SelfHealing=

填yes或no。这个代码指定该单位是否能够自动恢复生命点。

SensorArray=

填yes或no。这个代码指定建筑是否能在特定范围内感应到敌人的行动并且用虚线表示出来。

Sensors=

填yes或no。这个代码指定VXL单位是否能够探测隐形。

SensorsSight=

填数值。这个代码指定VXL单位检测其它隐形单位的半径范围。

ShowOccupantPips=

填yes或no。这个代码指定当建筑被步兵驻守后是否显示底下的小格。

Sight=

填数值。这个代码指定该单位的视力范围。数值越高,该单位在探路时拨开的黑雾越大。这个代码也指定了该单位发现目标的距离。

SinkingSound=

填Sound.ini中定义的声音名。这个代码指定海军单位被摧毁后下沉的声音。该海军单位的Weight=要大于3。如果想设定海军单位下沉的Weight=的标准值,可以修改Rules.ini上方ShipSinkingWeight=的数值。

Size=

填数值。这个代码指定该单位的大小。默认为1。

SizeLimit=

填数值。这个代码指定运兵单位最大支持的运兵体积。

Slaved=

是否为奴隶

SlaveReloadRate=

奴隶被"回收"在主物体中的时间

SlaveRegenRate=

奴隶数量不满时候重新释放奴隶的时间

SlavesNumber=

奴隶数量

Soylent=

填数值。这个代码指定该单位被卖掉后所得的资金。对于步兵单位,只有通过进入苏军的“复制中心”(或同类型建筑)才能卖掉。

Spawned=

填yes或no。这个代码指定空军单位是否为重生卵单位。用来和一般的空军单位作区分的。

Spawns=

填空军单位名。这个代码指定召唤重生卵单位的单位召唤重生卵单位的类型。这个单位的召唤武器需要有Spawner=yes设定。

SpawnsNumber=

填数值。这个代码指定召唤重生卵单位的单位召唤重生卵单位的数量。这个单位的召唤武器需要有Spawner=yes设定。

SpawnRegenRate=

填数值。这个代码指定当召唤重生卵单位的可召唤卵数量为0时,重新装载重生卵单位的时间。

SpawnReloadRate=

填数值。这个代码指定召唤重生卵单位的单位,装载重生卵单位的时间。

SpecialThreatvalue=

填0-1的数值。这个代码指定该单位的“潜在恐吓能力”,好象没什么作用,但应该给每个英雄单位设置为1。当设置为1时,应该设置该单位ThreatPosed=0,当为设置为0时或者没有这个代码时,可以任意设置ThreatPosed=的值。

Speed=

填数值。这个代码指VXL单位、步兵单位的运动速度。每个VXL单位、步兵单位都一定要设置这个项。最大值为100。

SpeedType=

填下表中的对应项。这个代码指定该单位的运动类型。应该和Locomotor=、MovementZone=配合使用。注意:当单位设定SpeedType=Amphibious时,Locomotor=可以任意设定。

---------------------------------------------------------------------------------

Underground 潜地运动类型

FloatBeach 海和海滩运动类型

Float 海运动类型

Winged 飞行运动类型

Hover 盘旋运动类型

Wheel 车辆运动类型

Track “轨迹”运动类型

Foot 步兵行走运动类型

---------------------------------------------------------------------------------

SprayAttack=

是否随机使攻击范围内人疯狂

Spyable=

填yes或no。这个代码指定建筑是否能够被间谍渗透,被间谍渗透的建筑会根据建筑类型触发相应的事件,如渗透发电厂类建筑会导致停电等。

SpySat=

填yes或no。这个代码指定建筑是否为“间谍雷达”。当为yes时,该建筑一旦被建造,周围的黑幕会被其消除(在“黑幕产生器”的作用范围除外),效果和“间谍卫星”一样。

StageN=

第N阶停留时间,最后一个停留完后返回第一个

Storage=

填数值。这个代码指定该单位能够储存的矿石数量。只能用在采矿车和矿石精炼厂。

Strength=

填数值。这个代码指定该单位的生命点,当为0时,该单位破坏。

StupidHunt=

填yes或no。这个代码常用于片面武器的单位,即使你强行叫它去攻击它不能攻击的东西,它也不会行动。

SuperGapRadiusInCells=

填数值。这个代码指定“黑幕产生器”类建筑产生的黑幕半径。要和GapGenerator=yes和ExtraPower=配合使用。

SuperWeapon=

填超级武器名。这个代码指定该建筑产生后所激活的超级武器。

SuperWeapon2=

填超级武器名。这个代码指定该建筑产生后所激活的第二个超级武器。

SuppressionThreshold=

填数值。这个代码指定该单位抵御寄生单位的能力。

-T-

TargetCoordOffset=

海军出口位置

TargetLaser=

攻击时是否有瞄准激光(无实际意义)

TechLevel=

该值确定物体在建造栏中的顺序,越小的越在前,同样的按照注册顺序调整,注意:1到10的整数方可建造,-1或者10以上均不可建造

Teleporter=

超时空行动用语句

ThreatAvoidanceCoefficient=

躲避高危险地区的几率

ThreatPosed=

威胁值,电脑优先攻击高威胁的,注意加载物必须为0,因为电脑不可能直接攻击加载物

TiberiumProof=

在矿石中是否能加血(似乎是无效参数)

ToProtect=

有此语句者被其他东西优先保护

TooBigToFitUnderBridge=

无法在桥底停留

Trainable=

为no时则不可升级

Turret=

单位有无炮塔

TurretAnim=

炮台动画

TurretAnimIsVoxel=

炮台是否是VXL

TurretAnimX=

炮台中心点X坐标

TurretAnimY=

炮台中心点Y坐标

TurretAnimZAdjust=

炮台中心点Z坐标

TurretCount=

炮塔种类数(IFV)

TurretRecoil=

开炮时炮口是否后退,典型例子是巨炮

TurretRotateSound=

炮台旋转的声音

TurretSpins=

该物体的炮塔是否为飞碟型,例如飞碟

TurretTravel=

炮台缩的幅度

-U-

UndeployDelay=

释放型武器造成的停顿(无法移动,攻击)时间(限步兵)

Underwater=

是否为水下物体

UnloadingClass=

倒矿时候的车子

UnitAbsorb=

战车单位是否能进入发电

UnitRepair=

是否可以修理单位

UnitsGainSelfHeal=

给单位增加每桢几点的回血

Unsellable=

无法被出售

Upgrades=

能被加载的次数

-V-

VeteranAbilities=

一星升级加的能力

VHPScan=

专门对某一类MoveMentZone攻击,Strong代表所有

VoiceAttack=

接受攻击指令的声音

VoiceCrashing=

被击落的声音

VoiceDeploy=

展开的声音

VoiceEnter=

进入DOCK=的声音(非战斗机)

VoiceFeedback=

害怕时播放的声音

VoiceHarvest=

采收矿物的声音

VoiceMove=

接受移动指令的声音

VoiceSelect=

选择的声音

VoiceSelectDeactivated=

失去控制时候的声音 见遥控坦克

VoiceSelectEnslaved=

奴隶类被解放的声音

VoiceSecondaryWeaponAttack=

副武攻击声音

VoiceSpecialAttack=

接受特殊攻击指令(例如坐下后攻击)的声音

-W-

WalkRate=

移动使用的SHP图象桢数(只用于水中的SHP物体)

Wall=

是否为围墙

WantsExtraSpace=

是否需要额外的空间

WaterBound=

是否为水上建筑

WeaponCount=

武器种类数(IFV)

WeaponStages=

武器盖特效应有几阶

Weight=

重量

WorkingSound=

工作声音

-X-

没有以X开头的语句

-Y-

YuriBarracks=

是否为尤里方的兵营,这个关系到可否设置集结点

-Z-

ZFudgeBridge=

离桥底多远就走不过去了

ZFudgeColumn=

离柱子多远就走不过去了

ZFudgeCliff=

离悬崖多远就走不过去了

ZFudgeTunnel=

离地道多远就走不过去了

至此所有单位类语句完结 欢迎添加或指正

Art解析

对art.ini、artmd.ini规则文件的解析

By: Xgamer

Red Alert 2 art.ini 教程

翻译:小遥指挥官

审核,纠正 MK

art.ini文件用于指定游戏的图画如何显示到用户的屏幕上。游戏中大部分的图像数据都位于这里。art.ini文件的某些部分甚至用于创建附加的特效,例如播放矿的产生的动画。

就像rules.ini一样,art.ini文件也由片断组成。每个独立的对象必须拥有自己的片断。然而,在art.ini文件中,片断头更加重要——在绝大多数情况下,它指定了该对象使用的图像。如果某个步兵的片断头叫做“[SOMEGUY]”,那么游戏将希望有个叫做“someguy.shp”的文件能够与之相对应,而这个shp文件中或许包含了显示该步兵单位的所有需要的图像。另外,在rules.ini中,如果一个对象没有“Image=”这一条标签,那么游戏默认使用art.ini中片断头与之相同的代码。如果某个单位的片断头叫做“[MEGATANK]”,那么游戏将会在art.ini中寻找片断头叫做“[MEGATANK]”的片断来决定如何显示该单位,当然最后也会寻找同名的图片。然而,在art.ini文件中动画对象可能使用另外的图像,此时通过“Image=”的值来指定。

建议不要删除已经存在的片断头,因为游戏会引用某些片断头,删除的话有可能由于游戏找不到其引用的头而导致崩溃。(这句话的意思就是别没事找事胡乱删除原本就有的东西,哪怕你觉得这部分没啥作用……存在必有道理……)

全局标签

这些标签在游戏中所有的对象上都有效,包括动画。

Cameo=

指定该单位使用哪个SHP文件作为图标(就是你点的那个东西来建造它)。如果该对象没有图标,游戏默认使用“Missing

Cameo”图标作为它的图标(就是那个红警2样的图标)。每个图标都必须是SHP格式,并且调色盘要求是红警2的cameo.pal文件。另外,图标的大小要求是60*48像素,即宽60像素,高48像素。

AltCameo=

指定当该单位升级之后使用的图标。升级是指玩家使用间谍渗透对方的兵营或战车工厂之后,单位所产生的变化。规则和Cameo=标签相同。

Voxel=

指定该单位的图像是否是vxl(就是说这个单位是不是使用vxl文件作为图形)。游戏会将它和SHP文件区分对待。某些标签是否起作用取决于这个标签是否设置为“yes”(就是说如果这个标签决定某些涉及vxl的标签是否有效。假如被设置成“no”,那么即使你为那些有关vxl的标签赋了值也无效)。

Remapable=

如果被赋值为yes,那么它将告诉游戏该单位的图像文件(SHP或者VXL)包含特殊的红色像素,这些特殊的红色像素会自动变色为玩家拥有的颜色(就是说如果这个标签赋值yes,那么该单位的图像中采用了特殊红色像素的部分会变成你选择的颜色)。这些特殊的像素位于unittem.pal、unitsno.pal和uniturb.pal这几个调色盘文件中,索引号为16至31。 动画无主,动画上的这个颜色不会被替换

Normalized=

决定是否调节该对象的动画使之以一个恒定的速度播放。只用于建筑,因为步兵和战车不可能使用动画。即使调用动画,动画也是以动画而非单位的形式出现。

NewTheater=

如果被赋值为yes,那么该单位(一般是建筑)将会在不同的场景中使用不同的图形(例如温和气候场景和雪地场景)。游戏通过判断图像文件名的第二个字母来决定使用哪个图像。如果某个建筑名叫“[GARADR]”,那么当建筑在雪地场景中建造的时候,游戏会寻找名叫“garadr.shp”的文件作为图像;当建筑在温和气候场景中建造的时候,则寻找“gtradr.shp”。注意A代表雪地气候,U代表城市场景,T代表温和气候场景。尤里的复仇中,D代表沙漠场景,L代表月球场景。如果游戏找不到与场景相关的图像,那么将默认使用文件名第二个字母为G的图像(也就是普通的场景)。

ShadowIndex=

仅用于使用vxl图像的对象,并且包含多个vxl的对象。它决定了哪个vxl会渲染出单位的影子。例如:直升机,直升机的机体大概包含两个vxl,即机身和螺旋桨。ShadowIndex=决定了游戏到底是绘制机身的影子还是螺旋桨的影子。

DemandLoad=

可以被赋值为true或者false。如果设置成true,游戏将会在装载“Loading…”那个画面的时候预载入图像而不是在建造的载入图像。一般用于平民建筑。(这是当然的!你要是打算在那个“Loading…”画面的时候悠哉悠哉地洗个澡的话,就随便你设置……)

TurretOffset=

指定单位的炮塔位于什么地方,沿着单位的中轴线。换句话说,炮塔距离前后有多远。默认值为0(正中心),单位是“lepton”,其中,256个lepton等于一格。就是说如果某个机体前后长度为1格,相当于前后256个lepton。

PrimaryFireFLH=

SecondaryFireFLH=

ElitePrimaryFireFLH=

EliteSecondaryFireFLH=

决定了炮弹出膛位置和开火动画播放位置,单位是lepton,格式是(数字英文逗号数字英文逗号数字),分别表示前,左,高。如果武器的burst=大于1,第二发炮弹会从F -L H的位置发出。

WeaponXFLH=

与“PrimaryFireFLH=”相似。这里的X代表第几种武器。这个标签仅用于拥有多种武器的单位,如ifv,盖特。光棱用的是weapon1,所以也是这个系统。总之,primaryfireflh只对primary有效,weaponxflh只 对weaponx有效。art要和rules的武器代码对应

游戏中地表单元是60x30的菱形,换算为实际尺寸就是边长为60*2^0.5/2像素的一个正方形,而这个边长等于256个单位,所以每个像素等于256/(60*2^0.5/2)=6.035个单位,因此F和L在平行于屏幕的截图上像素数乘以6即可。H的方向总是和屏幕成60°所以应乘上6.035/sin60°=6.969即7。

AlternateFLH0=

AlternateFLH1=

AlternateFLH2=

AlternateFLH3=

AlternateFLH4=

这些标签和其他有关FLH的标签相似。这些标签仅用于大脑车和要塞。npext中有新的用法,见ext说明书

步兵

Sequence=

决定需要的动画帧是哪一个序列片断头。序列是指定哪些帧用于开火,哪些帧用于行走等等。“Sequence=”决定使用哪一个动作序列作为步兵的SHP图像。更多信息请参见Infantry

Sequences部分。 任何一个步兵素材正常发挥作用都需要sequence。

FireUp=

指定使用第一武器开火的动画的帧的序号。它用来确定例如使用步枪的时候,当你可以看到步枪开火时子弹离开的那一帧的帧序号,不是前一帧也不是后一帧(总之就是那一帧)。仅适用于步兵站着而不是卧倒时。

(YR) FireProne=

(仅用于尤里的复仇)同上。唯一的不同就是步兵是卧倒开火。

(YR) SecondaryFire=

(仅用于尤里的复仇)与“FireUp=”相同,只不过这里是第二武器。

(YR) SecondaryProne=

(仅用于尤里的复仇)卧倒用第二武器开火的……

Crawls=

指定是否单位能够爬行(包括卧倒)。当然步兵的动作序列必须具有爬行的帧。

战车和飞机

WalkFrames=

指定这个SHP战车(不是使用vxl的战车)每个方向的帧数。假定全方向的动画都存在。这些帧在该SHP战车移动的时候发挥作用。(这种SHP战车和步兵非常类似。)

FiringFrames=

同上。只不过这些帧用于SHP战车开火。

Trailer=

这个标签指定哪一个动画被用作尾烟。单位会不停产生动画,动画独立播放,因为单位不停飞远,看起来就是连续的。只对aircraft类单位有效 。对动画也适用。

SpawnDelay= 每隔多少帧产生一个新的尾烟动画

UseLineTrail=

使游戏绘制一条跟从与之相关联的对象的线,就像轨迹一样。限制和“Trailer=”一样。它要求“LineTrailColor=”和“LineTrailColorDecrement=”都存在且值有效。

LineTrailColor=

指定轨迹线的RGB颜色(如果存在的话)。

LineTrailColorDecrement=

指定轨迹线有多长(如果有的话)。数值越大代表轨迹线越短。

建筑

Foundation=

决定建筑有多大,部署该建筑需要多少格。它采用的格式为“宽 x

长”,其中宽为该建筑在东南或者西北方向上所占的格子数,长为该建筑在西南或者东北方向上所占的格子数。

Height=

指定该建筑有多高(单位为格)。它用于决定当选中该建筑时,出现的白色虚线框的高度,还有基洛夫空艇、火箭飞行兵或其他任何飞行单位打算飞过该建筑时需要升高的高度。

Buildup=

决定建造该建筑的时候使用哪个SHP图像作为建造动画。卖建筑的时候,动画倒退播放。这个动画应该少于100帧左右,并且每个可建造的建筑都必须要有“Buildup=”,否则就不能被卖掉。如果你没有建造动画,随便找一个小短动画作为临时建造动画。

DemandLoadBuildup=

提前载入建造动画

FreeBuildup=

可被设定为“true”或者“false”。这个标签的功能未知。不过,一般被设定为true。

Recoilless=

如果被设定为yes,那么它将告知游戏该建筑不使用后坐力武器或者炮塔,从而应该调整。

ToOverlay=

指定该建筑将会转化为哪个覆盖物。一般用于允许玩家建造城墙和公路和宝箱

DamageLevels=

指定一个城墙的SHP文件有多少损坏的程度。每一种损坏的程度都是一整套城墙的图像,而破损增加。(就是说每坏得更厉害一次,都需要一整套城墙的图像。)

PowerUp1Anim=

PowerUp2Anim=

PowerUp3Anim=

指定当该建筑充能1次、2次或3次时加到建筑上的动画。

PowerUp1AnimDamaged=

PowerUp2AnimDamaged=

PowerUp3AnimDamaged=

同上。区别是这3个标签用于建筑被破坏到50%或者更少的HP时使用的动画。

PowerUp1LocX=

PowerUp2LocX=

PowerUp3LocX=

指定绘制建筑的升级模块距离绘制建筑的位置的X轴像素偏移量。建筑的绘制位置是在该建筑的SHP图像的左上方。

PowerUp1LocY=

PowerUp2LocY=

PowerUp3LocY=

同上。不同的是这里指Y轴像素偏移坐标。

PowerUp1YSort=

PowerUp2YSort=

PowerUp3YSort=

为升级模块如何绘制创建顺序。如果和其他升级模块相交迭的话,数值最低的升级模块将会在其他模块和动画后面绘制。这些标签使ActiveAnimYSort关联,确定谁遮挡谁

ActiveAnim=

ActiveAnimTwo=

ActiveAnimThree=

指定当该建筑建造起来之后正常运行或者没有严重损坏(就是绿血的状态……)的时候播放的动画。

ActiveAnimDamaged=

ActiveAnimTwoDamaged=

ActiveAnimThreeDamaged=

指定该建筑以少于50%的HP运行的时候播放的动画。

ActiveAnimX=

ActiveAnimTwoX=

ActiveAnimThreeX=

指定距离该建筑绘制坐标的X坐标。默认值为0。红警2中无用,因为大多数建筑的动态动画和建筑一样大。

ActiveAnimY=

ActiveAnimTwoY=

ActiveAnimThreeY=

同上。涉及Y坐标。

ActiveAnimYSort=

ActiveAnimTwoYSort=

ActiveAnimThreeYSort=

为如何绘制动态动画创建顺序。YSort数值低的动态动画将会在其他ActiveAnim或PowerUp后面绘制。就像“PowerUp1YSort=”一样。

ActiveAnimZAdjust=

ActiveAnimTwoZAdjust=

ActiveAnimThreeZAdjust=

调整动画在层次上的数值。默认为0。ActiveAnim的z值决定了动态动画到底处于哪一个层次上。最低的z值意味着“处于所有图像的后面”,同样,最高的z值意味着“处于所有图像的前方”。

ActiveAnimPowered=

ActiveAnimTwoPowered=

ActiveAnimThreePowered=

如果被设置为yes,那么ActiveAnim只有在玩家拥有足够的电力的时候才被播放(这就是为什么一旦电力不够,电厂就失去了动画效果的缘故……)。否则,在电力切断之前动态动画会在播放完全部的帧之后停止播放并冻结在最后一帧。

SpecialAnim=

SpecialAnimTwo=

SpecialAnimThree=

SpecialAnimDamaged=

SpecialAnimTwoDamaged=

SpecialAnimThreeDamaged=

SpecialAnimZAdjust=

SpecialAnimTwoZAdjust=

SpecialAnimThreeZAdjust=

SpecialAnimX=

SpecialAnimTwoX=

SpecialAnimThreeX=

SpecialAnimY=

SpecialAnimTwoY=

SpecialAnimThreeY=

SpecialAnimYSort=

SpecialAnimTwoYSort=

SpecialAnimThreeYSort=

这些标签就像ActiveAnim一样,只不过这些是用于当该建筑执行特殊功能时。因此并不是一直有效,只有需要的时候才有效。

ProductionAnim=

ProductionAnimDamaged=

ProductionAnimZAdjust=

ProductionAnimYSort=

ProductionAnimX=

ProductionAnimY=

这些标签也像ActiveAnim一样,只不过用于建造厂,当玩家拥有了一个这样的建筑并建造的时候有效。

SuperAnim=

SuperAnimDamaged=

SuperAnimZAdjust=

SuperAnimYSort=

SuperAnimX=

SuperAnimY=

基本同上,只不过这些用于属于该建筑的超级武器激活的时候有效。

PrimaryFirePixelOffset=

SecondaryFirePixelOffset=

规定武器开火的位置。和PrimaryFireFLH不同的是它的单位是“像素”而不是“lepton”。通常用于无炮塔的建筑。第一个参数为距离图像中心的x坐标,第二个参数则是y坐标。默认值为0,0,且不管武器从哪个方向开火,它都只从同一个位置开火。这一点不像PrimaryFireFLH一样考虑开火位置的移动。

PrimaryFireDualOffset=

当设置为true的时候,表示建筑同时使用PrimaryFirePixelOffset和PrimaryFireFLH。它允许建筑使用PrimaryFirePixelOffset来确定0,0,0(从PrimarFireFLH)的位置,而不是正中心。当要求某个不对称的建筑看起来像有个炮塔(其实没有)的时候使用这个标签会很有效。

QueueingCell=

指定当一个矿车在朝矿厂里面倒矿,另一个矿车在旁边等待倒矿的时候,那个等着的矿车所在的格子的x,y坐标(就按照这种顺序)。这个参数按照如下确定:从建筑的西角开始数,向东北方向x坐标增加,向东南方向y坐标增加。

BibShape=

指定用作“Bib”的图像。Bib是指建筑的某个部分,单位可以越过这个部分。此时游戏将单位绘制到Bib的上面而不是下面。

DockingOffset0=

DockingOffset1=

DockingOffset2=

DockingOffset3=

这三个值表示入坞距离建筑的Bib中心(如果有Bib的话)或者建筑本身的偏移量x,y,z坐标(朝向西南意味着y增加,朝向东南意味着x增加,朝向上意味着z增加)。单位是lepton。

DamageFireOffset0=

DamageFireOffset1=

DamageFireOffset2=

DamageFireOffset3=

指定当建筑被破坏到HP少于50%的时候播放的着火的动画。参数的单位为像素,格式为x,y,默认在SHP的中心播放。

IsAnimDelayedFire=

如果被设置为yes,那么当建筑被指定攻击一个在射程范围内的目标的时候,开火前会产生硬直。下面一个标签用于控制该硬直时间。

DelayedFireDelay=

指定开火硬直时间的帧数(游戏在中速的时候大约15fps)。它用于同步建筑开火的动画。

TerrainPalette=

如果被设置为yes,则建筑会使用地形调色盘isotem.pal、

isourb.pal和isosno.pal。尤里的复仇中还包括isodes.pal和isolun.pal。只在泰伯利亚之日中使用

CanHideThings=

可被设置为true或者false。指定是否游戏会自动指明被认为是被该建筑挡住了的动画的格子,并同时显示“隐藏物品”动画。(就是说如果游戏选中了“显示隐藏物品”的选项,且该建筑的这个标签被设为true,则被该建筑挡住的对象会显示出一个闪烁的光标表示这里有东西……)

AddOccupy1=

AddOccupy2=

AddOccupy3=

AddOccupy4=

指定某个单位被设定为隐藏时,在顶层会显示出表示隐藏的动画所附加的格子。(什么意思?)它的格式是从建筑偏移位置开始的x和y的偏移量(未知)。(更加不明白了……)

RemoveOccupy1=

RemoveOccupy2=

RemoveOccupy3=

RemoveOccupy4=

不考虑CanHideThings=所指定的格子。单位能够占据这么多格子,而不会显示表示隐藏的动画。它的格式是从建筑偏移位置开始的x和y的偏移量(未知)。

CanBeHidden=

指定该建筑是否能够被位于它前方的更高的建筑挡住。可以被设置为true或者false。

OccupyHeight=

指定OccupyCell(由AddOccupy和CanHideThings=指定)有多高。漂浮在OccupyCell上且低于OccupyHeight的火箭飞行兵会被认为是被挡住,而飞到其上方,则不被认为挡住。

(YR) DoubleThick=

(仅用于尤里的复仇)如果被设置为true,则该建筑或者动画被超时空兵种攻击的时候会出现额外的半透明效果。用于当建筑有两个或者更多的层且其中一个半透明的层不够用的情况。

用作抛射体的动画

AnimLow

AnimHigh

AnimRate

这三条用于动画抛射体,抛射体飞行中会播放动画而非停留在第一帧。low和high等于是loopstart和loopend

Trailer=

SpawnDelay=

UseLineTrail=

LineTrailColor=

我怎么感觉好像已经翻译过这些标签了……

LineTrailColorDecrement=

指定轨迹线的长度(如果存在的话)。数值越大意味着轨迹线越短。

Rotates=

如果被设置为yes,它将告知游戏这个抛射体使用一个具有64帧的SHP,且这些帧显示出一个旋转了360°的抛射体。这使得游戏能够正确显示出导弹按照它的方向移动的帧。

AnimPalette=

如果被设置为yes,游戏绘制SHP图像时将会使用anim.pal调色盘,而不是unittem.pal、unitsno.pal或者uniturb.pal调色盘。

Voxel=

如果被设置为yes,则该抛射体的图像是vxl而不是SHP。

Flat=

如果被设置为yes,游戏在绘制地表层的时候将会绘制该抛射体,然后在其上面绘制其它部分。这个标签将会让抛射体在其他单位下方移动。

步兵动作序列

步兵动作序列告诉游戏某个步兵的SHP文件的哪些帧用于什么用途。每个标签都有三四个可能的值。

第一个数字是特定动作的开始帧。注意红警2是从0号开始计算SHP的帧数,因此红警2的起始帧被认为是0号。

第二个数字是每个特定动作用到的帧数,包括起始帧。

第三个数字比较复杂。它表示如何到达某个动作特定方向的起始帧。从起始帧开始,游戏会用面向序号(0号代表面向“上”,逆时针方向数字递增)乘以第三个数字来得到面向方向的起始帧。它用于不必添加新绘制的帧就可以得到“卧倒”帧的情况。(就是说,某个特定动作的起始帧序号为第一个数字(从0号开始计算),该特定动作在某个方向上占用的帧数为第二个数字,该特定动作从一个方向转向下一个方向需要跨过的帧数为第三个数字。

总之这是不需要知道的知识,shpbuilder可以帮你写序列。在工具里。

动员兵

Crawl=86,6,6

游戏从第86帧开始,使用6帧包括第87帧作为面向北,然后后6帧作为下一个方向,以此类推。(可以推断,面向北的爬行的动作起始帧为第86帧,每个方向上的爬行动作占用6帧,从面向北转向面向西北需要跨过6帧,也就是说面向西北的爬行动作起始帧为第(86+6=92)帧。以此类推。)

Prone=86,1,6

这里,游戏仅使用第一帧(第87帧)作为面向帧,然后通过计算得到下一个方向所占用的帧序号。(可以推断,面向北的卧倒动作起始帧为第86帧,每个方向上的卧倒动作占用1帧,从面向北转到面向西北需要跨过6帧……后面的我就不用再废话了。)

第四个值是罗盘系统上的“北,南,东,西”。游戏的方向性和你认为的不一样,游戏认为北就是你的屏幕的左上方。基本上游戏的罗盘相当于顺时针旋转了45°。第四个标签仅用于Idle1=、Idle2=、WetIdle1=、WetIdle2=和Cheer=标签中。

下面是有效的动作标签:

Ready=

用于当步兵单位站在那里等待的时候。

Guard=

用于当步兵单位被置于防御模式中。在红警2中似乎使用的不多。

Tread=

指定当步兵单位在水中游泳,并不断打水保持自己浮在水面上的帧序列。(谭雅?)

Prone=

指定步兵单位卧倒(企图减少伤害)的所有帧序列。

Walk=

指定当步兵行走的时候的帧序列。

Swim=

指定当步兵在水中游泳的帧序列。

FireUp=

指定当步兵单位站着向敌方单位开火的帧序列。

WetAttack=

指定当步兵单位在水中向敌方单位开火的帧序列。

Down=

指定当步兵单位遭到攻击卧倒的帧序列。

Crawl=

指定当步兵单位爬行的帧序列。当步兵在移动的时候遭到攻击会出现这种动作。

Up=

和down=相反。指定当危险过后步兵单位站起来的帧序列。

FireProne=

指定当步兵卧倒开火的帧序列。

Idle1=

Idle2=

指定当步兵单位站着闲得没事的帧序列。这会使步兵单位不至于看起来像一尊雕像一样。

WetIdle1=

WetIdle2=

同上。不同点是这里的标签指的是水中。

Die1=

指定当步兵单位被某种拥有InfDeath=1弹头的武器杀死的帧序列。

Die2=

指定当步兵单位被某种拥有InfDeath=2弹头的武器杀死的帧序列。可能会从Die2=和Die3=中随机选择一种。

Die3=

指定当步兵单位被某种拥有InfDeath=1弹头的武器杀死的帧序列。可能会从Die3=和Die2=中随机选择一种。

Die4=

指定当步兵单位被某种拥有InfDeath=3弹头的武器杀死的帧序列。

Die5=

指定当步兵单位被某种拥有InfDeath=4弹头的武器杀死的帧序列。

WetDie1=

指定当步兵单位在水中被杀死的帧序列。可能会从WetDie1=和WetDie2=中随机选择一种。

WetDie2=

指定当步兵单位在水中被杀死的帧序列。可能会从WetDie2=和WetDie1=中随机选择一种。

Deploy=

指定当步兵单位被命令“部署”从而激活某种功能(就像美国大兵会在身边摆放沙袋并架起机关枪)的帧序列。

Deployed=

指定当步兵单位被部署且目前闲的没事的帧序列。

Undeploy=

指定当步兵被命令“取消部署”的帧序列。

Cheer=

指定步兵单位欢呼的帧序列。

Paradrop=

指定当步兵单位被空投到战场上的帧。该帧不要有影子。

(YR) SecondaryFire=

(仅用于尤里的复仇)和FireUp=相同,不同的是这里使用第二武器开火。

(YR) SecondaryProne=

(仅用于尤里的复仇)和FireProne=相同,不同的是这里使用第二武器卧倒开火。

动画覆盖物

这些动画会在其它之上播放。包括火焰,爆炸等。

Scorch=

如果被设置为yes,动画会在战场上留下烧焦的痕迹(燃烧“污染”),纯粹就是图像效果。

Crater=

如果被设置为yes,动画会在战场上留下弹坑的痕迹,当然也是图像效果。

PsiWarning=

如果被设置为yes,动画会在核弹发射的时候为拥有心灵感应器的玩家播放。

Sticky=

如果被设置为yes,动画会附着在目标上。但是这条语句是无效的。

Flat=

告诉游戏绘制的时候在其他对象例如建筑和单位以下的地面上。

Translucent=

如果被设置为yes,它将告诉游戏该动画半透明。导致卡的元凶之一

Translucency=

指定动画的半透明效果为多少。可取值25、50或75意味着25%、50%或75%透明(值越大越透明)。

Damage=

一帧造成一次伤害,范围和动画弹头一样。原版inviso弹头为super,其它为fire2,不能修改

Report=

指定当播放动画的时候播放的声音。声音应当和soundmd.ini文件中的片断头相匹配。

Next=

指定当前动画已经停止播放之后播放的动画。这也包括当它已经循环播放数次之后的情形。

DetailLevel=

推测是指定图像中显示细节的数量。此时观察无效。

UseNormalLight=

如果被设置为yes,那么动画将一直以100%的亮度播放(即使此时屏幕由于闪电风暴超级武器变暗)。

YSortAdjust=

指定动画的YSort值,该值用于使位于某个单位背后(就像超时空部队的空间扭曲图像),或者在单位前方(就像超时空传送启动动画)的动画可以显示出来。

ZSortAdjust=

指定动画的ZSort值,该值用于使某个位于建筑背后或者前方的动画可以显示出来。

AltPalette=

如果被设置为yes,那么动画将会使用unittem.pal,unitsno.pal和uniturb.pal作为调色盘进行描绘,而不是使用anim.pal作为调色盘。

Rate=

决定动画的播放速度。数值越大代表播放速度越快。这个数值以900帧为基数。Rate=300代表游戏将判定动画每帧之间插入900/300帧时间。

Layer=

决定动画在哪个层上播放。“Top”意味着在所有之上(包括力场护盾——试图用闪电风暴击打力场护盾)。“Ground”意味着战场。

Start=

指定动画的起始帧。默认从0开始。

LoopStart=

指定动画开始循环的帧序号。这和Start=不同。游戏会从Start=那一帧开始播放,一直到LoopEnd=那一帧停止,然后从LoopStart=那一帧继续播放。

LoopEnd=

指定动画的结束帧。如果没有到LoopCount=所指定的循环次数,它将会跳到LoopStart=那一帧继续播放。

LoopCount=

指定动画播放的次数。第一次播放被认为是循环次数为0(就是说第一次播放相当于循环了0次,第二次播放相当于循环了一次)。当动画播放到了LoopEnd=那一帧时,循环次数加1,同时检测LoopCount=看是否还需要循环。如果LoopCount=被设置为-1,动画将永远不会停止。(正数再怎么加1也不可能加成-1……)

碎片

碎片是动画的一种,如ts的流星和建筑爆炸时候飞出来的东西。和rules里的vxl碎片一样

Elasticity=

碎片弹性,01之间,越大越强。必须Bouncer= yes才有效

MaxXYVel= 碎片在平面上的速度,不得小于1

MaxZVel= 碎片的竖直速度,正数为向上飞

ExpireAnim= 碎片爆炸动画。可以是另一个碎片的名字

Damage= 被砸到的伤害数值

DamageRadius= 伤害范围,单位lepton,似乎无效,用弹头的cellspread计数

Warhead=碎片弹头

IsMeteor= 此动画将会从天而降

Spawns= 撞击产生子碎片类型

SpawnCount= 子碎片数目

LoopStart=

LoopEnd=

LoopCount=

TrailerAnim=

和之前的一样

TrailerSeperation=

和SpawnDelay= 一样

Bouncer=为yes时此动画作为碎片处理

RandomRate=填两个数字,碎片shp的播放速度从此区间产生

TiberiumSpawnType=产生矿的种类,如GEM01

TiberiumSpawnRadius=

产矿范围,无效,只能一格一层

唔,说实话通行的小遥指挥官的那份翻译还是有些半通不通,咱就重写了一份明白一点的、每个序列里的动作都由三个数字组成,其中第一个数字和第三个数字根据SHP内容可以完全确定(如果你写的序列不是胡闹的话),第二个数字视用户需要书写。 第一个数字是某个动作的开始帧。

注意,序列里的数字要比实际的帧号少1,比如第一帧开始的话第一个数字要写0。

第二个数字暂且不说

第三个数字是这个动作每个方向上的帧数。比如动员兵在SHP文件里每行走6帧换一个方向,则此数字写6

那么第二个数字到底是做什么的呢?通常来说,只要你的SHP正常,只要和第三个数字一样就可以了。第二个数字理论上只能小于等于第三个数字。它的意思是这个动作里每隔多少帧换一个方向。如果等于,自然是走完所有动作再切换方向,小于的话自然就是只播放若干帧就切换

死亡,欢呼,闲置之类4参数动作,第一个数字还是开始帧数-1,第二个数字是动作帧数,第三数字就写0,第四参数是方向,不过感觉没有实际意义

AI解析

对ai.ini、aimd.ini规则文件的解析

TS平台AI(MD).ini教程(LH_Mouse版)

声明:此教程为我个人的独力完成,其内容凝结着我近2年的心血,允许转载但请不要注明“作者未知”之类的字样,

本人保留一切追究的权利。

说明:本文适用于RA2、YR以及其派生出的RP、NP平台所使用的AI(MD).ini文件。阅读时请留意注*的项目。

========================================================================================================================

【第一章】AI基本教程——AI(MD).ini结构及原理简析

AI(MD).ini(以下简称AI),和其他的ini文件一样,控制着电脑玩家的行为。AI是从地图文件中派生出来的,因此

可以将其复制粘贴到地图文件的后面用FinalAlert2打开并编辑。当然,本章主要提供给希望学习手工编辑的Modder们。

§1.1 AI的结构

每一条有效的AI规则由四个部分组成:AI触发(AITrigger)、作战小队(Team)、特遣部队(TaskForce)和脚本(Script)。

* 这四个部分中,只有AI触发是不需要注册的,其余都需要注册。

这四个部分的关系为:

↗特遣部队1

作战小队1

↗ ↘脚本1

AI触发

↘ ↗特遣部队2

作战小队2

↘脚本2

下面分别说明这四个部分的其他结构:

⑴AI触发:控制着AI行为的核心部分。下面以原版谭雅载直升机攻击核弹发射井的AI触发为例说明:

例:0CAD0DCC-G=Allied Anti-Nuke 1 ,08DA125C-G,,9,0,NAMISL,0100000003000000000000000000000000000000000000000000000000000000,70.000000,10.000000,70.000000,1,0,1,0,0CB246CC-G,0,1,1

注册ID 名称 作战小队1 国家 ①②条件单位名 触发条件参数 基础分量 分量下限 分量上限 ③④⑤⑥ 作战小队2 ⑦⑧⑨

①科技等级 ②触发条件 ③遭遇战有效(疑似无效) ④未知 ⑤所属方 ⑥基地防御(无效) ⑦简单敌人允许 ⑧中等敌人允许 ⑨冷酷敌人允许

作战小队1、2:每个AI触发至多可以包含两个小队。AI触发被启动后可以指挥电脑玩家组建特定的作战小队。

国家 :指定只有特定一个国家的电脑玩家才允许激活该触发,典型应用如坦克杀手和磁能坦克。

科技等级 :如果电脑玩家的科技等级低于该水平那么这个AI触发就不会被激活。

* 在原版遭遇战中这个是没有意义的,因为所有玩家的科技级别都是上限10;但是在任务地图以及用NP开启了调节科技等级功能的Mod里,

这个就有必要认真考虑了。具体我会在后文说明。

触发条件 :可以为0-7的任何一个值,这八个值的意思分别是:

0 目标敌方单位满足条件……

1 本方单位满足条件……

2 敌方电力黄

3 敌方电力红

4 目标敌方金钱大于或等于……

5 本方铁幕装置就绪

6 本方超时空传送就绪

7 平民单位满足条件……

条件单位名 :指定在触发条件里评估什么单位。

触发条件参数:必须是一个64位长的16进制数字。目前只有前两位和第十位有用,其余作用不明。

前两位:用十六进制表示0-255之间的一个数字,指定在触发条件中衡量的数量为多少。其中作战单位评估其数量,金钱则除以1000后和该数值比较。

第十位:控制触发条件用何种算法来比较。可以为0-5的任何一个值,这六个值的意思分别是小于、小于或等于、等于、大于或等于、大于和不等于。

基础分量 :指定该触发在没有被执行时候的分量。据说只能用5000,500,70,50,40,20,10七个值(未验证,但是原版只有这七个值),个人以为这种东西稳健一些好。

* 分量就是AI在随机选择应该执行哪条触发的时候考虑的权重。AI在选择触发时,将所有满足条件的触发构成一个集合,然后加权随机抽取一个启动之。

如果该小队成功执行了脚本中的小队任务完成动作,则视为完成目的,将分量提升一些;反之,在完成目的之前该小队单位被全部摧毁,则视为失败,

将分量减小一些。

有关设置请在RulesMD.ini中查找AITriggerSuccessWeightDelta以及AITriggerFailureWeightDelta。

分量下限 :指定该触发反复失败的所能减小到的分量下限。

分量上限 :指定该触发反复成功执行的所能增加到的分量上限。

遭遇战有效 :该触发在遭遇战中是否允许启动,疑似无效,建议使用1。

未知 :作用不明,建议使用0。

所属方 :哪个作战方可以启动该AI触发。1代表盟军,2代表苏联,3代表尤里,4、5、6分别代表第四、五、六阵营。

基地防御 :已废弃,改为使用作战小队中的IsBaseDefense参数。此处建议使用0。

简单敌人允许:是否允许简单的敌人启动该AI触发。

中等敌人允许:是否允许中等的敌人启动该AI触发。

冷酷敌人允许:是否允许冷酷的敌人启动该AI触发。

⑵作战小队:AI触发激活之后执行相应任务的小队。作战小队需要在[TeamTypes]中注册。以上面的作战小队1为例说明:

例:[TeamTypes]

…………

39=08DA125C-G ; 注册

…………

[08DA125C-G] ; 注册ID

Name=Allied Anti-Nuke Team - 1 ; 名称(注释用)

VeteranLevel=1 ; ! x 兵种等级

MindControlDecision=0 ; ! 遭心灵控制后的动作,0=自动,1=加入控制者作战小队,2=送入部队回收厂,3=送入生化反应炉,4=搜索敌人,5=什么也不做

Loadable=no ; ! 可装载

Full=no ; ! x 创建小队成员的时候,如果小队中有运载工具,其他成员是否应该位于运载工具的内部

Annoyance=no ; ! 烦恼效果,作用不明

GuardSlower=no ; ! 降低反应速度,作用不明

House= ; ! x 创建小队成员时的所属作战方

Recruiter=no ; 强制重组优先级较低的小队的成员,如果它们是可以重组的

Autocreate=yes ; ! 自动建造

Prebuild=no ; ! 预先建造,作用不明

Reinforce=no ; ! x 增援部队

Droppod=no ; ! x 使用空降舱进入战区

UseTransportOrigin=no ; ! 使用原始的运载工具

Whiner=yes ; ! 哀叫效果,作用不明

LooseRecruit=no ; ! 解散新兵,作用不明

Aggressive=no ; 侵略性的,电脑在防御达到一定数量之后再开始建造该小队

Suicide=yes ; 自毁式攻击,受到攻击不允许还击

Priority=5 ; 优先级

Max=1 ; 同一作战方至多允许同时存在的该类型小队个数

TechLevel=0 ; ! x 科技等级,疑似无效

Group=-1 ; ! 分组,等同于人类玩家按下Ctrl+数字键组建的小队

OnTransOnly=no ; ! 只能运输,作用不明

AvoidThreats=yes ; 规避威胁,小队成员在移动的过程中将会试图规避途中可能遭遇的敌方单位

IonImmune=no ; ! x 离子风暴免疫

TransportsReturnOnUnload=yes ; 运载工具卸载后返回基地

AreTeamMembersRecruitable=no ; 小队成员是否允许重组

IsBaseDefense=no ; 基地防御小队

OnlyTargetHouseEnemy=no ; ! 只攻击敌方单位,作用不明

Script=0A6E54EC-G ; 指定脚本

TaskForce=0617909C-G ; 指定特遣部队

注:! 一般实际作用不明,建议使用这里的值,不要随便更改

x 在AI中理论上是无效的语句

⑶特遣部队:对于一个作战小队,告诉电脑玩家这个小队中包含什么单位,应该建造什么。特遣部队需要在[TaskForces]中注册。以上面的特遣部队为例说明:

例:[TaskForces]

…………

16=0617909C-G ; 注册

…………

[0617909C-G] ; 注册ID

Name=1 Tanya, 3 GI, 1 Blackhawk, 1 Guard ; 名称(注释用)

0=1,TANY ; 单位列表,格式为[ID=数量,单位类型]

1=3,E1

2=1,SHAD

3=1,GGI

Group=-1 ; 分组,建议保留原始值-1

⑷脚本:告诉电脑玩家控制特遣部队做什么样的动作。

例:[ScriptTypes]

…………

25=0A6E54EC-G ; 注册

…………

[0A6E54EC-G] ; 注册ID

Name=Allied Anti-Nuke Transport ; 名称(注释用)

0=54,0 ; 脚本序列,格式为[ID=动作,参数]

1=14,0

2=43,0

3=47,54

4=8,2

5=49,0

6=46,54

7=0,2

8=0,1

AI在遭遇战中实际可用的脚本动作是有限的。下面给出一个列表,无用的省略:

动作 动作说明 参数 参数说明

0 攻击最接近的敌方目标 1 可攻击的任何目标。

2 敌方建筑物。

3 敌方资源单位,就是矿车和矿场。

4 敌方步兵。

5 敌方载具。

6 敌方工厂,包括建造场、兵营、战车工厂、空指部和造船厂。

7 敌方基地防御。

8 基地威胁,目标在本方基地范围内的敌方单位。

* 这个脚本不能用于战机,否则战机不会等装弹完毕就起飞了,当然无法投弹,再返回、再起飞……

9 敌方发电厂。

10 可以驻守的平民建筑物。

11 可以占领的平民科技建筑物。

5 原地待命 时间 命令单位处于Guard状态一段时间,时间单位是6x秒,就是说1=6秒,2=12秒,等等。

6 转到行 行号 跳至该脚本的指定行处继续执行,一般用于创建不断循环的脚本。

* 行号一般应为序列ID+1,即0=的行其行号是1,不要搞错。

8 运载工具卸载 1 运载工具和卸出的单位都仍然是该小队的成员。

2 运载工具仍然是该小队的成员,卸出的单位不再属于该小队(成为新兵)。

3 运载工具不再属于该小队(成为新兵),卸出的单位仍然是该小队的成员。

4 运载工具和卸出的单位都不再属于该小队(成为新兵)。

9 部署 0 命令小队中可以部署的成员(美国大兵、基地车等,不包括武装直升机)部署。

11 进入状态 5 原地待命。

6 原地永久驻扎。

10 采矿。

11 警戒。

15 搜索敌人。

14 装载到运载工具中 0 命令小队成员依次装载到运载工具中。

43 等待直到运载工装满 0 暂停脚本,直到运载工装满,然后继续。

* 14和43一般应该连用。TS平台对装载逻辑的处理有两个问题:

1.如果小队中有两个以上的运载工具,游戏在装载时,可能会先尝试将其中一个装载至另一个里。

这样脚本就会在43处永久暂停而无法继续。

2.如果小队中使用的是可以运载车辆的运载工具并且准备装载的成员中有车辆,装载完毕后,

并不会触发装载完成的事件,因此脚本同样会在43处永久暂停而无法继续。

46 攻击敌方建筑 建筑ID 攻击/渗透/占领/C4爆破敌方特定的建筑。建筑ID由Rules中的注册相对顺序决定。

* 大家可以去我的网盘http://e.ys168.com?lh-mouse下载用于输出建筑ID的js,网盘上有说明。

47 移动至敌方建筑 建筑ID 移动至敌方特定的建筑。建筑ID由Rules中的注册相对顺序决定。

49 该小队任务完成 0 告诉该作战小队的所属方该小队已完成特定的任务。

* 每个AI触发脚本都应该包含这个动作,否则可能导致AI触发分量处理不正确。

53 在敌方基地附近集结 0 集结于距离敌方基地中心(一般应为建造场所在地)AISafeDistance(在Rules中指定)的位置。

54 在己方基地附近集结 0 集结于本方基地边界之外。

55 请求铁幕,如果可用 0 向该小队的所有者请求铁幕保护。

56 请求超时空传送至敌方建筑物 建筑ID 向该小队的所有者请求超时空传送至敌方特定建筑物。

57 请求超时空传送至敌方目标 同动作1参数 向该小队的所有者请求超时空传送至敌方特定建筑物。

58 移动至己方建筑 建筑ID 移动至己方特定的建筑。建筑ID由Rules中的注册相对顺序决定。

60 送入部队回收厂 0 将小队中所有的单位送进己方部队回收厂转变为资金。

61 送入坦克碉堡 0 将小队中的载具单位送入坦克碉堡。

62 送入生化反应炉 0 将小队中的步兵单位送入生化反应炉。

63 进入战斗碉堡 0 将小队中的步兵单位送入己方可驻守的建筑物。

64 驻守最接近的平民建筑 0 小队中的步兵单位将会搜索并占领平民的可驻守建筑物。

§1.2 AI的原理

(以下参数无特殊说明均为Rules中指定的)

首先,电脑按照TeamDelays的延迟定期检查所有AI触发,然后根据条件判断这些触发是否可用。一旦判断完成,电脑根据AI触发分量加权随机抽取一个触发激活之。

激活的AI触发将向电脑申请作战小队。电脑首先检查是否有空闲单位以及无指令单位,按照作战小队的要求将这些单位按照优先级从高到低的顺序填充到小队中,

剩余的部分电脑将指令工厂生产。一旦有新单位制造出来,电脑将把它们填充到小队中。如果在小队被填充完毕之前(在基地里),有些成员已经被毁灭,

电脑将会补充这些被消灭的单位,直至小队中的所有单位达到指定数量,然后电脑正式组建该小队,小队中的成员按脚本执行。

如果该小队执行了脚本中的49号动作(该小队任务完成),电脑将视该触发为成功一次并提高该触发的分量(不超过上限);反之,在完成任务之前该小队被全灭,

电脑经过DissolveUnfilledTeamDelay的延迟之后记该AI触发失败一次,取消该小队的编制(然后才允许重新创建该小队),并减小相应AI触发的分量(不低于下限)。

现在我们考虑一些特殊情况:

⑴补兵 :一旦某个小队开始执行脚本,AI就不再对其补兵,除非该小队全灭并且经过了DissolveUnfilledTeamDelay的时间,AI取消该小队的编制。

⑵被心灵控制:被心灵控制的单位解除控制后将成为新兵,并且是Guard状态(原地待命)。如果AI再次建立新的小队这些单位也不会加入。

⑶海军的问题:海军不会把陆军当做目标,除非是像驱逐舰这样的单位,能够主动攻击,而敌方的单位恰好在射程内。要让海军单位攻击敌方基地,只能用46号动作。

⑷弹头比率1%:除非使用46号动作或者遭到攻击还击,AI不会主动攻击某个单位,如果该小队中有任何一个成员对目标单位装甲的伤害比率是1%。也就是说,

电脑用鲍里斯只能看家。

【第二章】AI拔高教程——AI的设计

AI无疑是让很多中级甚至高级的Modder们头疼的一件事。不仅是AI(MD).ini中几乎没有任何注释,而且那些随机的数字ID让人头昏眼花。

制作AI不像修改Rules那样简单。制作AI要有一个整体的意识,同时还要有足够的耐心和谨慎。

§2.1 设计AI的基本步骤

首先,作为Modder,和设计Mod一样,设计AI必须要把握好整体战略。这点可以从对战中得到经验。从初期到末期,AI应该用什么样的套路进攻,都要考虑完全。

然后,列出一个提纲,这个提纲从上到下,是AI从有了兵营开始一直到最后拥有高科的过程中作战小队的改变。这些是AI的主攻部队。

再然后,艺术作品当让少不了修饰。AI的主攻部队还需要一些辅攻作支持。比如,战机,或者是间谍,工程师+履带车,等等。

再再然后,还要考虑AI面对敌方应该如何应对。由于AI要隔一段时间才能启动一个AI触发,应当使某一时刻可能被启动的AI触发数量尽可能的少,以避免AI由于

造了许多防御性小队反而没有造攻击性小队的情况。比如,如果敌方造了基洛夫,AI将造一些多功能步兵车防御;但是如果敌方没有造基洛夫,就不用造这些步兵车。

最后,才是正式地编写AI。

有了提纲的帮助,编写AI将变得简单许多。但是有一点是应当忌讳的,就是总觉得AI触发的分量不够,比如开始是50,后来觉得正在写的触发

总该比之前的该重要吧,就加到了70;再写,又总觉得触发越写越不可少,结果写完了发现从前往后触发分量有增无减,越写越大,从50到70、100、150、200……

这种情况,多是由于心切导致的。AI的编写是一份需要细致耐心的工作,绝不能图快而放弃了质量。分量不均衡的AI只能是失败的作品。

§2.2 设计AI的要点

⑴合理分配分量

对AI触发分量要有一个合理的理解。虽然分量上限可以达到5000,但是绝对不能以为分量可以随意设置,比如重要的给4000,中等重要的给500,不重要的给30。

应该说,使用5000分量的AI触发,启动的概率非常大,一般只有两种情况才可以使用:一是危急情况,比如补基地车;二是Rush型AI,比如犀牛海,初期杀伤很大,

后期对于AI的作用大幅下降,条件是本方没有高科;一旦本方建造了高科,触发条件不再满足,分量自然也就失去了意义。

对于一般的攻击,70的分量已经很高了。如果希望电脑造更多的小队,既不应该盲目提升AI触发分量,也不能肆意增加作战小队的Max值,而应该增加AI触发,

赋予一个不同的作战小队,这个作战小队的和那个作战小队特遣部队可以相同,但是脚本尽量不要用相同的,这样可以是AI进攻风格多变化。

⑵合理安排进攻次序

原版的AI很笨,因为它集结了大量的单位,全部瞄准我们的工厂,而半路全被光棱塔解决(甚至是秒杀)了。因此,合理安排攻击次序很关键。

攻击的次序安排要考虑AI进攻小队的单位种类、数量等。比如电脑有6光棱,就应该攻击敌方基地防御;如果电脑有20光棱,就应该攻击任何目标;

如果电脑有20 V3,就应该攻击敌方发电厂和超级武器;如果敌方有20天启,就应该直接攻击敌方建筑物;等等。

攻击动作参数里面有一个8,即基地威胁。这个参数使用得好可以使AI防御更强。方法就是提升基洛夫、幽浮等空中单位的威胁值,然后指定含有坦克杀手、

磁能坦克之类的小队攻击基地威胁。这样,有防空能力的,比如步兵车和盖特将优先攻击基洛夫;没有防空能力的犀牛幻影等等将攻击敌方来犯的天启。

如此一来将使得AI相当难对付。

⑶养成脚本中添加49号动作的习惯

AI小队不同于地图小队,这个完成任务的触发是必不可少的。否则,触发分量只会下降不会上升,最终将导致AI触发失衡。

⑷优先级的选取

从目前做出的测试中来看,优先级起到的作用主要有三个:

①优先级低的小队建造的倾向大,优先级高的小队重组的倾向大;

②优先级高的小队如果指定了Recruiter=yes,并且优先级低的小队指定了AreTeamMembersRecruitable=yes,

高优先级的小队建立时将强制重组低优先级的小队中的成员;

③AI向小队中填充新兵时,优先填充优先级较高的小队。

如果以上三条都成立,那么我们可以得出以下结论:AI根据优先级较低的小队的要求建造单位,但是首先填充到优先级最高的小队中。

这样看起来不合情理但是原因是明白的:如果高优先级小队由于某些原因被解散(触发条件不再满足等),其成员可以立即重新加入低优先级的小队,

以避免类似于电脑造了贪造高优先级小队突然高科被毁导致大量单位积压家中的情况。

如果以上推测都成立,优先级就应该这样设定:Rush型AI的优先级应当比较低,后期大部队的优先级比较高;特殊部队比如补充基地车,

由于没有其他小队拥有同样的单位,优先级应当低一些。

* 优先级低于SuspendPriority(在Rules中,默认为1)的小队,在电脑建造基地防御类小队时将会被挂起,不推荐使用这个优先级。推荐的优先级下限是5。

⑸注意TechLevel

TechLevel,即科技等级,是用于调节某作战方在一场战役中所能建造的部队的。比如生死斗的科技等级就比较低,普通遭遇战就很高。对于电脑来讲,

如果AI触发的科技等级低于该作战方的科技等级,那么这个AI触发就有可能被激活;如果该小队中的某个成员科技等级却高于该作战方的科技等级,

那么这个电脑玩家就无法建造这种单位,进而导致这个小队永远无法建立,白白浪费CPU资源。

为了避免这种情况,基本的要求是,AI触发的科技等级不应该低于AI触发中所有特遣部队中的所有单位的科技等级

【第三章】AI高级教程——AI技能整合运用

“高手”“专家”,多么神圣又多么遥远的名字。其实,无论是“高手”还是“专家”,都是从菜鸟成长起来的,都是用经验一点一滴积累出来的。

只要功夫深,铁杵磨成针。如果本文的读者能有这份兴趣和毅力,相信,你终究会成为高手和专家的。

§3.1 好马配好鞍,好AI配好Rules

虽然TS平台的AI处理多工厂逻辑上存在问题(人类玩家建造多个工厂可以提速生产;电脑玩家建造多工厂不仅提升建造速度,还同时出兵),

但是不得不承认,多工厂仍然是一种必需且有效的手段。然而,让电脑造另一个真重工有难度;目前通行的做法是,复制一个假重工,只给电脑造,

人不能建造。这种方法已经用于多款Mod中。实际使用效果来看,除了占领假重工不能造对应国家的车辆(比如占领假盟军重工造不出灰熊光棱幻影),

此方法并无太大问题。多工厂使得电脑可以更快地建造单位。同时,要注意调整AIBaseSpacing和RelaxedStray以避免堵车和小队过大无法集结的情况出现。

电脑选择激活AI触发是一个周期的过程,具体由TeamDelays决定;AI建造首个小队的时间是从游戏开始到AttackDelay。这些都是可以调整的。

* [IQ]里面的设置不要随意更改。很多人以为把里面的数值改得越大AI智能程度越高。其实不然。除了MaxIQLevels之外,每一条的意思都是,

“允许出现这种行为的IQ值下限”。比如,SuperWeapons=4的意思就是“当电脑玩家IQ≥4时允许自动发射超级武器”,以此类推。

§3.2 旧瓶装新酒,旧平台实现新功能

之前的全军突击就是使用了Recruiter和一个很大的优先级实现的。TS平台的脚本虽然有限,但是综合起来用AI还是能实现很多原版没有的效果的。

盟军用工程师+步兵车偷袭基地,这个是原版中被屏蔽了的。当然要承认这的确是一个好主意,可以启用;

苏联用天启+V3组成一个小队混合攻击,可以极大地提高效率;

尤里用磁电+盖特+神经突击车的方式,可以有效对付敌方来犯部队;

等等。

§3.3 成功的AI需要什么

以下仅仅列出必需的部分,其余请自己联想、逐步添加:

工程师占领科技建筑

使用步兵的基本基地防御

初期各种Rush

间谍偷重工、电厂

反间谍触发(虽然意义不大,只是怎么设计的问题)

切断敌方资源补给的

大部队Bombard

基地防空

海军攻击部队

海军大部队

对抗敌方来犯部队的

对付超级武器的

辅攻部队,清理敌方基地防御及电厂的

专攻敌方重工、高科的

以上仅仅是思路,涉及到具体的部队种类、数量,触发分量等,请自己调试。

§3.4 调试AI应当注意的细节

⑴同时启动的战机小队包含的战机总数量不应大于电脑同时能允许的停机坪机位总数

比如,有三个小队,每个小队各有两架入侵者战机。如果某电脑玩家启动了两个小队而造了四架入侵者,派遣其中两架来攻击我,

被击落一架,返航一架。此时电脑尝试造第三个小队,结果是,第一个小队有两架入侵者,第二、三都只造了一半,由于机位不足,

无法继续建造。此时电脑就只能派遣第一小队进攻,而第二、三小队都不完整,无法进攻。这种情况的解决办法是,削减战机小队的数量。

比如,电脑只有一个小队,这个小队包含两架入侵者战机,而其Max=2。

⑵合理使用AvoidThreats语句

这条语句是很有用的。对于像多功能+工程师这类偷袭战术,使用规避威胁的语句可以大大提高成功率。在有AI.tlb存在的时候,规避威胁的路径可以绕得更大,

使得AI的偷袭更加有效。

* 注意,对于Rush和Bombard以及类似的进攻不要使用规避威胁语句。例如,我在家门口摆了几辆光棱,敌方灰熊海过来,他们试图规避光棱,但是很不幸,

有一辆没有绕开,被光棱击中,光棱的分光伤害到了更多的灰熊,灰熊尝试还击;但是由于灰熊处于光棱射程的边缘,AI的单位被攻击又会减速,结果,

少量的光棱反而吃掉了敌方的灰熊海:这种情况是不允许出现的。

⑶攻击性小队避免使用简单触发条件

什么是简单触发条件呢,就是类似于“本方拥有兵营”“本方拥有重工”这样的条件。这种条件用在基地防御的小队上是可以的;但是如果用在攻击性的小队上,

电脑发展到后期,已经拥有了高科,然而控制灰熊海的触发还占有很大的比重,表现就是电脑造光棱幻影少,造灰熊多。

这种情况很常见。最佳的解决办法是,

将条件改为“本方没有高科”。这就是所谓“Rush型AI”,有人称为“一次性AI”(抱歉这是谁我把名字忘了,好像是紫霞)。因为这种小队初期攻击力很强,

但是等后期敌方造了大量的幻影和光棱塔以后,灰熊海就没什么意义了。此时本方如果拥有高科,就应该全力造光棱幻影,而停止爆灰熊海。

⑷注意辅攻兵种的配合

在遭遇战中,即使是同一作战方的两个小队,想要同步行动也是极其困难的。为此,我们可以借鉴一下原版战斗要塞的AI触发:

脚本的说明中已经讲过,同一个小队中不允许出现两个运载工具。那么,如何实现四个满载(至少是部分满载)的战斗要塞进攻呢?

原版使用了三个AI触发来控制:

首先,有两个AI触发控制了两个小队,这两个小队都是1战斗要塞+5补兵,装载后集结于己方高科附近。每个小队造两个。

然后,第三个AI触发具有极高的分量(500),当己方有四辆战斗要塞时,重组成一个小队并进攻。

此即为神龙天舞中实现全军突击触发的思想:将所有单位重组成一个大“小队”进攻,其力量当然惊人。

这也为我们提供了一个思路:我们可以如此实现光棱幻影与海豹步兵车的混合攻击。对于那些我们不希望加入小队的步兵车,比如基地防空的,可以简单地将

AreTeamMembersRecruitable设置为no。

⑸合理使用IsBaseDefense和Aggressive

IsBaseDefense,即基地防御小队。电脑优先建造这些小队。但是注意基地防御小队是有数量限制的,具体定义于Rules中的

MinimumAIDefensiveTeams和MaximumAIDefensiveTeams。

Aggressive,即侵略性小队。只有当电脑的防御部队和建筑数量达到一定值时电脑才会建造这个小队。因此Rush小队上不要使用这个参数;

但是对于光棱幻影这样的大部队进攻,为了避免电脑出现防守漏洞,就应该加上这个参数。

⑹移动区域不相同的单位不要安排到同一个小队里

比如犀牛和基洛夫。如果指定了“集结于XXXX”的脚本动作,电脑总是选择其中比较大的移动范围做决定,因此有可能把集结点选在水面上或悬崖上,

导致脚本无法执行。

⑺如果小队比较多,尽量增加一条全军重组突击的触发

这点的意义在于,如果AI出兵太多,可能会堵在家里把自己卡死。这条触发的作用就是及时地将家中积压的部队派遣出去,避免堵车。

⑻全部编写好以后照着提纲检查一遍

最好是能画一个草图,然后标明在AI发展的不同阶段(有了兵营、有了重工、有了高科、有了超武,等等)都有哪些触发是激活的、哪些是曾经被激活后来被屏蔽的。

同时还用标记一下不同作用的AI触发的分量,以避免前述分量越写越大的情况。

【后记】

写了三天,总算写完了。这个教程仅仅提供了一个参考,编写AI更多的还是经验,还要广大Modder们多多实验。

本文里的说明绝大多数都是我的个人经验,有一部分从PPM上收集整理而来,难免有疏漏之处,还请大家指正。

附赠:AI检查脚本,能够检查AI(MD).ini中作战小队、特遣部队、脚本是否注册,特遣部队单位是否正确,AI触发条件、分量、所属方是否正确等。

说明文档在网盘中,不定期更新,欢迎下载!http://e.ys168.com/?lh-mouse

风雨相关