您好,欢迎访问三七文档
红色警戒二使用了“脚本化”的人工智能(指一个系统只对预知的行动和脚本作出反应而非启发式的人工智能–对一个动作作出反应并且根据一个动作而预测下个动作,普遍的一个脚本化的系统是这样工作的计算机使用一个对象,或一组对象,称做[TaskForces]中文名[使命部队],[使命部队]按照他们的基本属性被控制并归类为[TeamTypes]中文名[组类],当进行行动,或系列行动时,[组类]被[ScriptTypes]中文名[脚本类]控制,[脚本类]可能会或者可能不会被预先定义的事件叫做[AITriggerTypes]中文名[人工智能撞针]激活。打开AI.ini文件[TaskForces]使命部队项这项用来列出基本上所有红警二的[TaskForces]使命部队,列表从0号开始,号随着这个使命部队包括的单位的数量增加而增加。如果你想人工智能造新单位或使用更多的单位你就必须改这项。在这里每个使命部队所对应的条目都是用十六进制数值来表示的(你实际上可以用其它的,但是我建议你保持十六进制的传统)。下面举个详细例子。在[TaskForces]使命部队项下[某使命部队的十六进制代码]Name=a=x,UNITb=x,UNITc=x,UNIT...Group=[某使命部队的十六进制代码]–这是用来查找相应的使命部队用的,就像在[vehicletypes]加了新单位后你必须也有相应的项。Name=这个是专门给你用写注释的,对游戏毫无作用,你可以随便写什么。n=x,UNIT–用来定义有那些单位在使命部队里,每定义一个新的使命部队你必须新起一行,你沿用的使命部队的名称必须和Rules.ini里[BuildingTypes],[InfantryTypes],[VehicleTypes]或[AircraftTypes]列表里部队的名字一样,记住,使命部队必须从0号开始.例子,定义一个有5个美国大兵和2个灰熊坦克的部队[使命部队的十六进制代码]Name=5GI'sand2GrizzlyTanks0=5,E11=2,MTNKGroup=-1Group=-n当使命部队被造出来或被选择完时,这个会使使命部队造成形成某种特殊的集结,-1是缺省值,它的功能是使这个使命部队所有的单位移动当这些单位被遗留下来时(如果使命部队包含了运输类单位你就应该用-1,关于怎么把一些单位装上运输类单位请看[组类]).如果你不使用-1的话可能造成问题(请看[脚本类]‘换组’一节专门关于这个的描述)。[ScriptTypes]脚本类项这项用来列出基本上所有红警二的[ScriptTypes]脚本类,列表从0号开始,号随着这个脚本类的数量增加而增加。在这里每个脚本类所对应的条目都是用十六进制数值来表示的(你实际上可以用其它的,但是我建议你保持十六进制的传统)。下面举个详细例子。在[ScriptTypes]脚本类项项下一个例子[脚本类的十六进制代码]Name=a=x,yb=x,yc=x,y...[脚本类的十六进制代码]–这个必须和你在[ScriptTypes]脚本类项定义的名称一样Name=这个是专门给你用写注释的,对游戏毫无作用,你可以随便写什么。n=x,y–这个定义一个使命部队将做的行动,每做一个新行动,你必须在写的时候新起一行,第一个行动从0号开始,行动总数可以无限的沿长或非常的复杂。这就是红警系列人工智能的关键所在在这里,第一个值,x,代表将做的行动,有些行动需要一个辅助数,这就是我们的y(假设x代表抽烟,但抽烟可以站着抽也可以坐着抽,y就起到区分的作用)下面举个例子。第一行(0=0,5)使计算机攻击任何遭遇的敌方车辆,第二行使计算机当完成第一行的任务后攻击任何目标。[脚本类的十六进制代码]Name=Attackanyvehiclethenattackanything0=0,51=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当X=7时7,Y=玩家胜利,Y=0强迫游戏以TeamType的所有着获胜为条件(他们赢得游戏)。注:此X,Y值一般无实在意义。当X=8时8,Y=卸货,Y=卸货的类型Y=0时,当运输单位和单位全部在小队中时,执行剩下的脚本。Y=1时,当只剩下运输单位且单位失去时,只有运输单位执行剩下的脚本。Y=2时,当只剩下单位且运输单位失去时,只有单位执行剩下的脚本。Y=3时,当单位和运输单位都失去是,不执行剩下的脚本。当X=9时9,Y=部署,Y=0如果TaskForce含有单位能够部署的设置(例如,一个单位有DeployInto=一个建筑类型,或者有Deployer=yes,DeployFire=yes,DeployToFire=yes等设置),那么才可以促使它们部署在某个地形单元(和点选一个单位,然后按D键或点命令栏里的Deploy按钮的效果相同)。当X=10时10,Y=跟随友军,Y=0当一个单位移动的时候,这个指令引起TaskForce跟随最近的友军单位,虽然它将没有作用,但好像它是在“保卫”友军单位。跟随不是永远,当这个TaskForce分配到另一个任务时会放弃跟随。提示:如果其支持的TeamType在它的ScriptType中有这个XY值且是在第一行,那么它将会护送第一个TeamType。=11,15;搜索攻击=54,0;集合=53,0=5,10;守卫范围10=47,317;移动=46,131389;攻击=49,0;重复以上行动直至就绪=46,131143可能的修桥=63,0可能的修桥[0C85ADEC-G]Name=CHINABB-AIZVeteranLevel=1;设置老兵的状态,在AI.ini中都设为1,也可设成2或3Loadable=no;一般都设为No.如果部队中有成员需要Reload的(例如弹药ammo=)就设为YesFull=noAnnoyance=no;yes是使AI的部队攻击完后撤退,并且待会再次发动攻击GuardSlower=no;部队在基地中作出还击时不会变慢House=;可以生产这种部队的国家/阵营Recruiter=no;AI会动用现有的单位去组成队伍,优于去建造新的单位来组成队Autocreate=yesPrebuild=no;AI是否在还没需要时预先建造此队伍Reinforce=no;设置此部队是否为援军。多数用于守卫的部队会设成YesDroppod=noUseTransportOrigin=noWhiner=yes;(大概,可能)决定AI是否自动补充队伍中被消灭的成员。通常用于防守队伍=[这句好象不对]LooseRecruit=no;决定部队是否在完成scripttype定义的任务后解散,而且不会再作为新兵加入其他队伍Aggressive=yes;不是使AI集结军队并盲目地去执行指令.Suicide=no;设置此部队是否忽略任何攻击并继续前进,常用于战机Priority=5;建造部队时的优先权。通常为整数,数字越小,AI建造的可能性越大Max=1;AI自动创建此部队的次数。范围(1~3)。当teamtype中没有autocreate=yes时,把它设成1TechLevel=0;指定可以制造此队伍的最低科技水平,通常设为0Group=-1OnTransOnly=noAvoidThreats=no;控制AI是否在遇到敌人时停下并还火=[这句好象不对]IonImmune=no;是否对IonStroms免疫,一般都设为No.(在RA2中好象没用)TransportsReturnOnUnload=no;设置运输单位是否在完成卸载时返回基地AreTeamMembersRecruitable=no;YES=若当前的部队完成任务后还有剩余单位,将会加入另一队中。默认为noIsBaseDefense=no;决定部队是留在基地周围防守=[这句好象不对]OnlyTargetHouseEnemy=no;是否只对付敌对玩家的单位,而不攻击中立的单位(neutrals阵营的)Script=0D9E236C-GTaskForce=0D0222FC-G0C0000DC-G=NationRussian,XXXX,Russians,10,1,NARADR,0100000003000000000000000000000000000000000000000000000000000000,500.000000,10.000000,500.000000,1,0,2,0,,0,1,1他们的含义是:AI名称,AI组名称
本文标题:红警Ai全解
链接地址:https://www.777doc.com/doc-4236440 .html