TS平台AI(MD).ini教程(LH_Mou版)
声明:此教程为我个人的独力完成,其内容凝结着我近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,<all>,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分别代表第四、五、六阵营。
基地防御 :已废弃,改为使用作战小队中的IsBaDefen参数。此处建议使用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 ; ! 降低反应速度,作用不明
Hou=<none> ; ! x 创建小队成员时的所属作战方
Recruiter=no ; 强制重组优先级较低的小队的成员,如果它们是可以重组的
Autocreate=yes ; ! 自动建造
Prebuild=no ; ! 预先建造,作用不明
Reinforce=no ; ! x 增援部队
Droppod=no ; ! x 使用空降舱进入战区
UTransportOrigin=no ; ! 使用原始的运载工具
Whiner=yes ; ! 哀叫效果,作用不明
LooRecruit=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 ; 小队成员是否允许重组
IsBaDefen=no ; 基地防
御小队
OnlyTargetHouEnemy=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处永久暂停而无法继续。