电脑库曼对抗印度四民族
本帖最后由 wangzhen 于 2022-7-20 15:05 编辑弓矛群进攻
需要考虑到因素有哪些
Set group条件
搜索目前在组的里所有远程单位
条件 数量=0 搜索目前所有远程单位 清空组 去除组标签 加入到组 加上组标签
计算组平均位置
组成员所有坐标相加除人数
分别以X,Y轴以小到大排序获得X,Y的平均值
时刻搜索新训练出来的单位加入到组里
搜索不在组的单位移动到组平均值位置 在组平均值位置搜索1格的单位记录该ID
在搜索所有远程单位后 加入该ID 再次重置组
军事能力统计
在组里的军事人数
对抗玩家数2~3 增加50% 对抗玩家数4 增加70%
时代升级优势 已研究升级兵种科技 目标玩家时代 以上条件大于等于8
组的军事人数 与目标玩家军事人数 比较值
组的弓手和掷矛手数量 目标玩家弓手和掷矛手数量
本地弓手数小于目标掷矛数 是劣势
本地掷矛数大于目标弓手数 是优势
本地掷矛数大于目标弓手数 目标弓手数大于本地弓手数 劣势 怕近战单位
重新计算组平均坐标位到敌方搜索到城镇中心的/15距离
敌方玩家数小于3 计入23%兵力数 敌方玩家数大于等于3 计入21%兵力数
18 min 30 sec 在线敌方玩家数大于2 没研究远攻二 军事能力-35
正在研究城堡时代 军事能力-12
正在升级弩手或正在研究远攻二 军事能力-20
以自己TC为参照 自己组平均坐标位置在敌方tc后方距离太远不撤退
攻击时机计算每个AI制作者不同
最后10次传球的平均间隔时间
起点必须是将起始值设置为666,然后开始
从这里将平均值复制到临时目标中,乘以4,减去平均值
添加到自上次通过以来的总帐时间,并除以4。最后,将平均值替换为临时目标
军事能力数大于0 开启远程组进攻目标优势
先搜索整体再缩小类型
在组平均坐标值位置搜索10格范围所有序号目标玩家单位
上面搜索到再以敌方TC距离 移除距离该点5格内的单位
如果找到就设定目标为所有单位
在组平均坐标值位置搜索11格范围所有序号目标玩家靶场弓手马弓火枪手单位
上面搜索到再以敌方TC距离 移除距离该点5格内的单位
如果找到数量大于2设定目标为远程单位
根据科技研究数调整 已知一个矛对抗2弓还剩8血
计算科技影响后能力
自己弓 自己的矛
研究了远攻1 远防1 远攻2 远防2 弩兵 精锐投矛目标时代还在封建 后影响能力
没研究远攻2和目标时代在城堡时代 没研究远防2和目标时代在城堡时代 没研究弩手 没研究精锐投矛 后影响能力
在组平均坐标位置搜索12格范围内弓手数+35% 投矛手*125*230/10000
如果自己的弓和矛数除以目标弓和矛数大于=200自己的调整科技后数大于=300 如果目标是远程单位 改为目标是所有单位(军队规模是敌人的两倍多)
在组平均坐标位置搜索4格内的骑兵步兵飞镖骑兵斥候兵 距离敌方TC大于5 以敌方TC 搜索自己的远程单位
如果搜索到上面单位数大于0
搜索到上面单位数大于5或者
在平均坐标位置搜索11格内远程单位距离敌方TC大于5格的数量小于10
目标设为近战单位
(找到设定目标后 搜索组平均坐标位置附近是否有驻扎数大于0的防御塔 设所有单位为目标时发现军队靠近塔和附近塔大于附近自己单位数 重置目标
目标玩家TC与自己TC距离大于5格
敌对玩家TC到组平均坐标位置距离小于8.75或回避敌人TC的计时器在运行
重置目标
城镇最大范围设定40
自己远程单位数大于0 军事能力小于0 TC距离组平均坐标位置大于40或者没有敌人单位在自己城镇或group-retreat-timer组后退计时运行
重置目标
下次攻击时间在大于2000或小于400时 攻击等待)
在组平均坐标位置
如果目标设定远程单位
搜索所有弓火枪马弓
在组平均值坐标距离小于10的远程单位并以距离最小排序筛选出前4个
如果目标设定为近战单位
搜索所有骑兵步兵飞镖骑兵斥候单位
在组平均值坐标位置距离小于10的近战单位并以距离最小排序筛选出前10个距离最近的
如果目标设定为所有单位
按顺序搜索所有村民弓手步兵攻城武器贸易马车骑射弩炮投石车带圣物僧侣
在组平均值坐标位置距离小于10的所有单位以距离最小排序筛选出1个
如果有敌方TC 以敌人TC位置 再次排除距离敌人TC位置小于4的
计算出搜索到目标单位的平均坐标点
判断是否军队能力处于劣势
组成员平均坐标点位置搜索12格范围敌方军事单位
附近我方军队数比附近敌方军队数小于75你的兵力不足敌军的80%
敌方掷矛手比我方的多and敌方弓手比我方多 或者
附近我方军队数比附近敌方军队数< 120 我方比敌人数少于20%
附近我方掷矛数比附近敌方掷矛数>200 我方掷矛比敌掷矛人数大于200
搜索单位数小于敌方总体军事能力(人数上劣势和时代科技升级劣势)
在自己城镇中心搜索30格所有敌对军事单位数量大于1
再次检测是否发现有敌人的芒果或蝎子
搜索组成员平均坐标位置 距离小于9格的投石弩炮
检测大多数敌人单位是否有弹道学超过50%
计算弓箭攻击伤害值 初始攻击是4 升级两个时代单位+2 科技远攻123化学各+1
如果投矛数大于弓手数 以投矛伤害基数
计算投矛攻击伤害值 初始攻击是2 如果是射手系+3 升级单位+1 科技远攻123化学各+1 目标是所有单位-1
搜索组平均坐标位置11格内附近所有序号的敌方单位(没法准确判断知道是哪个玩家要循环)
目标是远程单位 搜索射手骑射火枪 以地图小大排序
目标是近战单位 搜索骑兵步兵飞镖骑兵斥候 以地图小大排序
目标是所有单位 搜索军事所有单位,所有村民 以地图小大排序
计算出以生命值最大值-剩余多少值可一击必杀
攻击伤害值-单位护甲=最终伤害 单位当前生命值/最终伤害=要攻击次数要攻击次数乘以攻击伤害值=最少值
单位距离组平均坐标位置大于3.25格 找下一个 如果找到就记录是哪个序号的单位
记录0-39序号每个单位的生命,单位护甲 不断的用伤害值
记录目标单位的下次攻击时间 循环找出攻击冷却的单位不在(小于76 大于600)
找到目标单位准备要去目的地 向组平均坐标偏移3格位置 否则以敌方组平均坐标点
搜索所有自己单位 以敌方平均坐标为中心 以距离小大排序
计算出自己单位 最短攻击时间 最长攻击时间
以组平均坐标位置搜索11格目标
目标是远程单位 搜索射手骑射火枪 以地图小大排序
目标是近战单位 搜索骑兵步兵飞镖骑兵斥候 以地图小大排序
目标是所有单位 搜索军事所有单位,所有村民 以地图小大排序
排除每个单位序号不是之前找到的最少生命值的单位 循环0-39个序号
如果投矛手比较多 加入成员的序号ID 以他的位置 排除距离小于1的单位 (贴近单位)
排除距离大于组成员最大射程范围的目标单位
以目标单位的目的地位置距离排序小
改回以成员位置
如果找不到目标单位 点数小于120 返回去重新计算血最少的单位
点数120了还是没有找到 不能设定搜索列表的单位为目标
以组成员位置
以成员最大射程+1格
排除距离组成员位置大于射程+1格的单位
以目标单位的目的地位置距离以小排序
目标设为近战单位 开启随机数
组成员平均坐标与敌方平均坐标距离小于1.50
随机10% 排除血量小于16的
攻击时机
组成员平均坐标与敌方平均坐标距离小于7.50或者
或者下次攻击时间小于=600且 下次攻击时间大于=76
或者目标设定不是远程单位 且 下次攻击时间大于0
随机70%
能力不是劣势
组成员对目标射击
记录被攻击的目标ID
监测远程列表里面的单位是否有被攻击过的ID
移动条件
控制队伍移动方向
如果敌人研究了弹道学,不断改变移动方向
cross
顺时
组成员平均坐标位置与敌方平均坐标位置小于组成员射程*100+45+200
组成员平均坐标点 向敌方平均坐标点 偏移直角350距离(没弹道750)
逆时
组成员平均坐标位置与敌方平均坐标位置小于组成员射程*100+45+200
组成员平均坐标点 向敌方平均坐标点 偏移直角-350距离
如果在准备偏移点发现树,则更改方向
偏移点与敌方目的点距离小于5
敌方平均坐标点与敌方目的点小于6
正在射击
或者
偏移点所在有树 或者
或者(偏移点与敌方TC距离小于10)
(偏移点与敌方塔距离小于10)
顺时
条件目标设定是远程单位
设定方向为逆时
返回偏移计算
确保单位在射击时可以移动
条件 组成员平均坐标位置与敌方平均坐标位置 < 组成员射程*100+45+200
确保在单位完成首次射击后,立即允许单位行走
750< X < 3290 or 750 < X < 2521
搜索在组的单位 单位数据是闲置1 数量大于0
如果敌人已全部死亡,则调整首选距离
在组平均坐标的位置搜索10格内组成员单位和所有敌方单位
如果所有敌方单位小于等于4
A=组成员射程*100+45-225
如果所有敌方单位大于4或组成员数量小于等于8(8个同时能杀一个兵)
没弹道学 A=组成员射程*100+45+100 否则-100
目标是远程单位
B 组平均坐标点到敌方平均坐标点的距离
组平均坐标点向敌方平均坐标点 偏移(B -A)
目标是近战单位
组平均坐标点向敌方平均坐标点 偏移-110
如果偏移点所在是树 作为移动时要转变方向
目标是近战单位
没研究完成远攻一
B 组平均坐标点到敌方平均坐标点的距离
A =-375
组平均坐标点向敌方平均坐标点 偏移(A +B)
目标是近战单位
研究完成远攻一
B 组平均坐标点到敌方平均坐标点的距离
A =-475
组平均坐标点向敌方平均坐标点 偏移(A +B)
偏移点 向敌方平均坐标点 直角 偏移 50
目标是所有单位
组成员平均坐标位置与敌方平均坐标位置距离大于0
敌方平均坐标位置敌方TC
目标是所有单位
组成员平均坐标位置与敌方平均坐标位置距离大于0
矛比弓多
敌方平均坐标位置 向 组成员平均坐标位置 偏移 125
敌方TC 与 敌方平均坐标位置距离 小于950
B 敌方TC 与 敌方平均坐标位置距离
A = -950
敌方平均坐标位置向敌方TC位置偏移 -A+B
B =敌方TC 与 偏移点 距离
没解释部分移动规则设置
(defrule
(or(goal gl-temp15 0)
(or(and(up-compare-goal gl-temp10 c:> 0) ;
(up-compare-goal gl-temp10 c:< 1450));
(and(up-compare-goal gl-time-since-last-shot > 0)
(up-compare-goal gl-archer-micro-priority == ranged-units))))
=>
(set-goal gl-temp 1)
条件 最长攻击时间大于0 且 小于1450 或者目标是远程单位
设定可以移动
条件 组成员平均坐标 与 敌方平均坐标 距离 小于 射程*100+45+200
可以移动
没弹道学
目标是远程单位
附近没投石车
远程列表搜索到单位数量大于0
军事能力不是劣势
搜索所有在组里的单位以横列移动到偏移点
条件 组成员平均坐标 与 敌方平均坐标 距离 小于 射程*100+45+200
可以移动
没弹道学
目标是远程单位
附近有投石车
远程列表搜索到单位数量大于0
搜索所有在组里的单位以分散移动到偏移点
条件目标是所有单位或者目标是近战单位
不满足射击
远程列表搜索到单位数量大于0
军事能力不是劣势
不是执行移动
没发现树 and没发现投石车
搜索所有在组里的单位以横列移动到偏移点
执行移动
条件目标是所有单位或者目标是近战单位
不满足射击
远程列表搜索到单位数量大于0
军事能力不是劣势
不是执行移动
没发现树 and发现投石车
搜索所有在组里的单位以分散移动到偏移点
执行移动
条件不满足射击
目标是近战单位
不是执行移动
发现树
条件 组成员平均坐标 与 敌方平均坐标 距离 大于等于 射程*100+45+200 或者
组成员平均坐标 与 敌方平均坐标 距离 大于等于 射程*100+45+200
搜索到远程单位小于4 and 搜索到成员单位大于6
目标是远程单位
搜索到远程单位大于0
军事能力不是劣势
成员单位以横列移动到敌方平均坐标点
没发现敌人时移动
后退
在城镇范围40 搜索组成员的数量 TC向敌方TC偏移11
设定计时时间
条件 军事能力小于0
搜索组成员的数量大于0
没有目标
偏移点 与 组成员平均坐标距离 大于 1200
后退计时器不是在运行
设定开启计时器为28秒 (需要测试得到的时间)
条件 军事能力小于0
搜索组成员的数量大于0
没有目标
敌人军事单位在自己城镇范围数量=0
偏移点 与 组成员平均坐标距离 大于 100
后退计时器不是在运行
设定开启计时器为10秒
条件 军事能力小于0
搜索组成员的数量大于0
没有目标
偏移点 与 组成员平均坐标距离 大于 1200或者
敌人军事单位在自己城镇范围数量=0and偏移点 与 组成员平均坐标距离 大于 100
搜索成员单位以横列移动到偏移点
敌方单位在城镇范围内 指派组成员到现场
在城镇范围40内 搜索所有目标单位 单位类型不是普通建筑和农田的敌方单位
条件 军事能力小于0
后退计时器不是在运行
没有目标
远程列表第一个单位可以设为目标
记录该单位的移动目的地坐标
搜索成员单位以横列移动到敌方单位移动目的地
搜索敌人
在成员平均坐标位置搜索11格
包容军事命令ID的单位 再次包容村民命令ID的单位
A 敌方TC 向自己TC偏移7
条件 组成员平均坐标与敌方TC距离大于2500(25格)
没目标
军事能力大于等于0
搜索组成员单位以横列移动到偏移点(距离敌人TC7格外)
回避敌方TC
找到敌方TC位置
没目标
组成员平均坐标与敌方TC距离大于900且小于2500
军事能力大于等于0
回避TC计时器不是运行中
队伍方向是顺时
组成员平均坐标点 敌方TC 直角偏移 -5(队伍方向是逆时 +5)
偏移点向敌方TC 偏移 (偏移点与敌方TC距离-11)
搜索组成员单位以横列移动到偏移点
以敌方TC与组成员位置距离由小到大排序
条件 敌人TC 自己TC距离大于500
敌人TC 组成员平均值距离小于900 或者
敌人TC 搜索本地列表的序号位置 距离小于825 and 等待射击时机
搜索组成员的单位
组平均坐标值 向 敌方TC 偏移 -500
偏移点向敌方TC 直角偏移 -200
组成员单位以横列不还击状态移动到偏移点
开启回避TC计时器 5秒
回避塔
组成员平均坐标位置搜索9格范围内所有目标玩家 物件状态是完好的塔记录它的坐标
条件 敌人的塔位置 与 组成员平均坐标点的距离大于500
没目标
军事能力大于0
A = 组平均坐标 敌人的塔位置 距离
B = -1450
组平均坐标点向敌人塔位置偏移(B+A)
偏移点到敌人塔位置直角偏移 50
组成员的单位以横列移动到偏移点
开启回避TC计时器 5秒
组成员距离组平均坐标点太远
搜索在组里的成员 排除以组平均坐标点位置与组里成员距离小于5的单位 移动到组平均坐标点
每20秒检测一次城镇是否被攻击
自己TC 敌方TC的距离
自己TC 组平均位置距离
条件 自己TC与组平均位置减去自己TC与敌方TC距离差>200
(自己TC 与组平均位置距离)大于城镇范围
计时不等于到期既是城镇被攻击了
指派城镇范围外不等于组成员单位回来TC位置
指派城镇范围内不等于组成员排除正在进攻单位赶到
不在组的单位靠近组平均坐标点
页:
[1]