10. AI修改
以下内容较长,收录为如下链接txt文件:
https://gitee.com/junjacobyoung/mo336ini-guide/blob/develop/ststl/【11L】AI修改.txt
也可继续在本文档阅读,内容与txt文件一致:
AI造建筑时会从可造建筑(AIBasePlanningSide与AI的Side相同的建筑)中随机的去建造,而防御建筑(IsBaseDefense=yes)的建造由General、AI中的代码控制
首先说明Side的定义,Side是在[Sides]选项中定义的,可以理解为国家(子阵营)所属的大阵营。
在MO中:
UnitedStates(美国)、Europeans(欧洲联盟)、Pacific(太平洋阵线)的Side为GDI
USSR(苏俄)、Latin(拉丁联盟)、Chinese(中国)的Side为Nod
PsiCorps(心灵军团)、ScorpionCell(天蝎组织)、Headquaters(不是headquarters,总部守卫)的Side为ThirdSide
Guild1(狂鲨先锋 )、Guild2(科洛尼亚侧翼)、Guild3(最后堡垒)的Side为FourthSide
Neutral的Side为Civilian
Special的Side为Mutant
Side中决定了游戏背景、UI、EVA等信息,同时Ares也支持在Side中微观定义这个Side的一些AI属性。
然后再讲一些控制AI建筑建设的代码,以下列出一些主要控制代码
[General];以下代码为rules中General项的全局控制条目
GDIPowerPlant=GAPOWR ;指定盟军的电厂
GDIPowerTurbine=GAPOWRUP ;指定盟军电厂升级
NodRegularPower=NAPOWR ;指定苏联基础电厂
NodAdvancedPower=NANRCT ;指定苏联进阶电厂(核电)
ThirdPowerPlant=YAPOWR ;指定尤里电厂
AlliedBaseDefenseCounts=40,20,12 ;指定GDI子阵营的AI防御建筑(IsBaseDefense=yes)数量
SovietBaseDefenseCounts=40,20,12 ;指定Nod子阵营的AI防御建筑(IsBaseDefense=yes)数量
ThirdBaseDefenseCounts=40,20,12 ;指定ThirdSide子阵营的AI防御建筑(IsBaseDefense=yes)数量
[AI];以下代码为rules中AI项的AI控制条目,具体AI使用哪些建筑由AIBasePlanningSide决定
BuildConst=GACNST,NACNST,YACNST,FACNST ;指定AI的建造厂
BuildPower=GAPOWR,NAPOWR,NANRCT,YAPOWR,YAPOWRB,FATRAP ;指定AI的电厂
BuildRefinery=GAREFN,NAREFN,YARIREFN,FAREFN ;指定AI的矿石精炼厂
BuildBarracks=GAPILE,NAHAND,YABRCK,FABARR ;指定AI的兵营
BuildTech=GATECH,NATECHR,NATECHC,NATEK,YATECH,FACLDP ;指定AI的高科建筑
BuildWeapons=GAWEAP,NAWEAP,YAWEAP,FAWEAP,GAWEAPB,NAWEAPB,YAWEAPB,FAWEAPB ;指定AI的重工
BuildRadar=GAAIRC,NARADR,YAPSIS,FACYBR ;指定AI的雷达
ConcreteWalls=GAWALL,NAWALL,GAFWLL,FAWALL ;指定AI的围墙
NSGates=GAGATE_C,NAGATE_A,YAGATE_A ;指定AI南北向闸门
EWGates=GAGATE_D,NAGATE_B,YAGATE_B ;指定AI东西向闸门
BuildNavalYard=GAYARD,NAYARD,YAYARD,FAYARD ;指定AI的船厂
BuildDummy=GAPILL,NALASR ;指定AI基础防御建筑
BuildPDefense=ATESLA,GTGCAN,TESLA,NAHAMM,YAGGUN,YARAIL,YAPSYT,YAHADE ;指定AI的进阶防御建筑
BuildAA=NASAM,NAFLAK,YAGGUN,FAGUAR ;指定AI的防空建筑
NeutralTechBuildings=CAOILD…. ;指定AI识别为科技建筑的建筑
AlliedBaseDefenses=GAPILL,ATESLA,GAGUN,NASAM,GTGCAN ;指定GDI的AI的防御建筑
SovietBaseDefenses=NALASR,TESLA,NAFLAK,NAHAMM ;指定Nod的AI的防御建筑
ThirdBaseDefenses=YAGGUN,YARAIL,YAHADEAI ;指定ThirdSide的AI的防御建筑
XXXBaseDefenseCoefficient=1.2 ;无效代码,作用被XXXBaseDefenseCounts取代
AIForcePredictionFudge=70,35,25 ;指定AI困难、中等、简单的防御参数,计算方式说明如下
These values are used to decide what base defense to use. The AI will examine the enemy force in terms of money, and select Anti-Air, Anti-Armor or Anti-Infantry. This examination is then fudged by difficulty level (Brutal, Normal, Easy) by the percentages specified here (+/- n%).Once the decision is made, all buildable base defenses will be converted into a weighted distribution based on their AntiAirValue, AntiArmorValue or AntiInfantryValue. The AI is not so dumb as to use Rocketeers in the AntiInfantryValue analysis, or Kirov Airships in the AntiArmorValue analysis. It will treat them as air units.
MaximumBaseDefenseValue=100 ;无效代码,作用被AIForcePredictionFudge取代
PowerEmergency=75% ;指定AI电力告警百分比(负载占产生电力的百分比),高于这个值AI会补电厂
[FourthSide];在某个Side项下有效的代码
AI.BaseDefenses=FAGUAR,FASONI,FARAIL,FACOMPAI ;这个Side的防御建筑
AI.BaseDefenseCounts=40,20,12 ;这个Side的防御建筑建造数量
然后是AI出兵,AI的出兵包括四个重要部分,分别是AI触发、作战小队、动作脚本、特遣部队。这些部分都在ai文件中(aimo.ini)
作战小队、特遣部队、动作脚本的编辑与地编中相应内容的编辑完全一致,是记事本改图必备知识
(该部分在吧盘里的DIY教程中可以找到)
1.特遣部队
注册在TaskForces中,指定AI在某个作战小队中使用的兵种和数量
Name= ;纯粹的注释
非负整数A=非负整数B,单位注册名 ;指定其中一个组成,A从0开始,B为数量
Group=-1 ;指定分组,必须与作战小队中的Group相同,通常都是-1
特遣部队例子
[YURTA099B-G]
Name=Splatters & Brutes
0=2,PLAG
1=6,BRUTE
Group=-1
2.动作脚本
注册在ScriptTypes中,指定AI某个作战小队的行为模式
Name= ;纯粹的注释
非负整数=行动代码,行动目标 ;行动代码是一个整数,行动代码和相应目标表可以在DIY教程中查到,Ares3.0说明书中补充了Ares添加的动作脚本
动作脚本例子
[CAPST001-G]
Name=Capture Tech Plant
0=46,131925
1=46,131163
2=46,131162
3=49,0
4=0,2
3.作战小队
注册TeamTypes中,是AI触发需要的东西,指定了一个完整的部队编制和相应的行动方针
作战小队代码较多,且存在大量无效代码,建议查阅吧盘中的DIY教程
注意以下地图编辑中才有效或值可以变化的重要代码:
House=AIPsiCrops ;指定作战小队的所属方,如果是Prebuild=yes的则必须与相应所属方相同,直接刷出来的作战小队所属完全由这一句决定
Autocreate=no ;指定是否是AI造出来的,yes则可以使用触发结果让AI自动建造并派遣该作战小队,aimo中这项只能是yes
VeteranLevel=1 ;初始等级,用于刷出来的兵1为新兵2为老兵3为精英
Waypoint=HI ;路径点,现在直接刷援军一般都用80号触发结果,一般不用了
Loadable=yes ;是否把所有特遣部队的单位装到有载员位的某一个(选择依据不明,建议只有一个有载员位)载具里,无视SizeLimit、乘客数量上限、能否手动装载等代码直接装进去,aimo中这项只能是no
作战小队例子
[01000755];ainsomnia.map
Max=5
Full=no
Name=Paradox 217
Group=-1
House=ParadoxEngine ;指定所属方
Script=01000748 ;指定动作脚本
Whiner=no
Droppod=no
Suicide=yes
Loadable=no
Prebuild=no
Priority=5
Waypoint=HI
Annoyance=no
IonImmune=no
Recruiter=no
Reinforce=no
TaskForce=01000153 ;指定特遣部队
TechLevel=0
Aggressive=no
Autocreate=no
GuardSlower=no
OnTransOnly=no
AvoidThreats=no
LooseRecruit=no
VeteranLevel=3 ;指定等级
IsBaseDefense=no
UseTransportOrigin=no
MindControlDecision=0
OnlyTargetHouseEnemy=no
TransportsReturnOnUnload=no
AreTeamMembersRecruitable=no
[UNATT043-G];aimo.ini
Name=Jackal with Suppressor
VeteranLevel=1
MindControlDecision=0
Loadable=no
Full=no
Annoyance=no
GuardSlower=no
House=
Recruiter=no
Autocreate=yes
Prebuild=no
Reinforce=no
Droppod=no
UseTransportOrigin=no
Whiner=no
LooseRecruit=no
Aggressive=no
Suicide=no
Priority=5
Max=2
TechLevel=0
Group=-1
OnTransOnly=no
AvoidThreats=yes
IonImmune=no
TransportsReturnOnUnload=no
AreTeamMembersRecruitable=yes
IsBaseDefense=no
OnlyTargetHouseEnemy=no
Script=FOEST048-G ;指定动作脚本
TaskForce=UNATF043-G ;指定特遣部队
4.AI触发
注册在AITriggerTypes中,全部详细内容可在DIY教程中找到,这里只简单提一下格式
等号后面的格式为
Name(注释),作战小队A,使用的国家(子阵营),科技等级,条件代码,条件建筑,条件判定码(DIY教程有教写法),基础分量(越大使用可能性越大),分量下限,分量上限,1(作用未知建议为1),0(作用未知建议为0),会使用的Side,作战小队B,简单启用,中等启用,困难启用
AI触发例子
YURDHAND01-T=Epsilon - Hand of Ereshkigal Attack,YURDHANDL01,
YURHEPH01-T=Epsilon - Ganzir Defense,YURHEPH01,
SOVPERUN01-T=Soviet - Perun Attack,SOVPERUN01,