mozonglin7 发表于 2016-12-18 16:58:32

会拉围墙的加强AI,可联机对战!

本帖最后由 mozonglin7 于 2016-12-18 17:42 编辑




雷光 AIv2.8更新内容:
1.优化AI农民分配,使AI会更合理采集和利用各项资源,更快的发展进入新时代。

2.优化AI兵种搭配,使AI军队会大批集结进攻,禁用AI训练佣兵枪手.长炮.迫击炮这类无用杂兵。

3.使AI前期会建造围墙抵御玩家偷袭,围墙被摧毁会优先补墙。(特殊情况下AI会放弃建造围墙)

4.提高AI在帝王时代建造兵营.马厂.炮厂的数量。(AI后期出兵速度会更快)
==============================
以下情况AI会放弃建造围墙:
1.当电脑的文明=亚洲三国或土著。(因为这些国家缺少给围墙开门的科技链)

2.当电脑的盟友大于3,也就是人机4V4以上的时候。 (因为盟友越多离得就越近,容易互相围死...)
==============================
使用说明:
把游戏目录下AI3文件夹删除(注意是删除,不然跟原来的AI文件混一起会没效果的),把这个解压后粘进去就可以了,不会影响联机的!

特别鸣谢狂~劇情狂,黄栌苦竹两位大神参与指导制作本AI

苦不堪言 发表于 2016-12-18 21:01:40

自虐mod

苦不堪言 发表于 2016-12-18 21:03:59

和天明不冲突吧

mozonglin7 发表于 2016-12-22 21:07:02

苦不堪言 发表于 2016-12-18 21:03
和天明不冲突吧

只适用于帝国时代3亚洲王朝1.03版,那些装了MOD改了游戏文件的不敢保证能正常运行。

如果你的帝国3能在游侠对战平台上正常和其他人联机玩人机或对战,那装这个肯定没有问题。

剑气如虹 发表于 2017-1-1 12:51:59

最后问问楼主,能不能弄个天明版的?

qidanei625 发表于 2017-1-7 16:42:45

非常感谢分享,很喜欢 加强AI的 补丁! 希望楼主继续更新下去!!

流觞、、、 发表于 2017-1-7 17:20:21

试了一下。为什么ai卡组就只有十几张卡牌{:156:}

mozonglin7 发表于 2017-1-7 18:12:59

本帖最后由 mozonglin7 于 2017-1-7 18:16 编辑

流觞、、、 发表于 2017-1-7 17:20
试了一下。为什么ai卡组就只有十几张卡牌
雷光AI就是不带满卡的,Utt才带满卡,但是那个也受玩家等级影响,玩家等级低,AI等级也会跟着降低,很多高级卡片无法使用。AI等级=房间玩家等级总和的平均值

流觞、、、 发表于 2017-1-7 18:15:19

mozonglin7 发表于 2017-1-7 18:12
AI等级=房间玩家等级总和的平均值,如果全是低级玩家,会使电脑等级过低导致很多高级卡片无法使用

主城已经满级了{:160:}

mozonglin7 发表于 2017-1-7 18:20:32

流觞、、、 发表于 2017-1-7 18:15
主城已经满级了

看错了,刚还以为你说Utt。。雷光的帖子我还以为沉了。。雷光AI就是18~22张卡,全都选那种10级能带的卡那个为了不受玩家等级影响。。Utt AI 带满25卡

流觞、、、 发表于 2017-1-7 18:22:11

mozonglin7 发表于 2017-1-7 18:20
看错了,刚还以为你说Utt。。雷光的帖子我还以为沉了。。雷光AI就是18~22张卡,全都选那种10级能带的卡   ...

哦。了解了。我试试utt的{:5_432:}

exand 发表于 2017-1-10 10:48:55

大师你好,
我看了你关于帝国3所有的贴子,由衷的敬佩你,帝国3是我唯一玩的游戏,这么多年一直不离不弃,有2个问题请教你一下好吗?
1、关于帝国3亚洲王朝,AI造墙,我试了你的雷光AI,发现AI围墙不能升级,

2、我参考了其它的帖子,做了些修改,加入了其它民族造墙
关于帝国3亚洲王朝,亚洲3国和美洲3国,围墙损毁,AI不能像其它欧洲国家一样主动修复,想求AI主动修复的修改方法!
求大师帮助,已经尝试修改了几个星期了,依然没能解决

mozonglin7 发表于 2017-1-10 13:20:14

exand 发表于 2017-1-10 10:48
大师你好,
我看了你关于帝国3所有的贴子,由衷的敬佩你,帝国3是我唯一玩的游戏,这么多年一直不离不弃, ...

1.如果你是在我改的AI基础上进行修改的,那AI不升级围墙只有两个原因,一是处于弱势,没有空闲资源升级围墙,二是AI造的围墙总数低于5且游戏时间低于18分钟。。否则正常情况下游戏开局5分钟后AI就会开始拉围墙,18分~20分升级围墙。

2.亚洲三国和土著都存在无法给围墙开门的BUG,这是官方BUG,要修复就得改data文件,改那个就不能联机了!所以我是直接限制了这些国家造围墙和修围墙。 如果你是在我改的AI上解除了这些国家造围墙的限制条件,那他们不修围墙就是因为你还没解除修围墙的限制条件。
rule delayWalls=造围墙相关参数

rule fillInWallGaps=修复围墙相关参数(围墙被摧毁或者占位的树砍掉了才会启用)

两者的半径设置必须一致,否则围墙被摧毁时,AI就不会在原处进行修复。

rule fillInWallGaps
   minInterval 31
   inactive
{
   if (civIsAsian() == true)
   {
      xsDisableSelf();
      return;
   }
   if (cMyCiv == cCivXPAztec)
   {
      xsDisableSelf();
      return;
   }
rule fillInWallGaps红字部分是我加的限制亚洲三国和土著修复围墙的条件,rule delayWallsy也有,你删掉即可。但是这些国家无法给围墙开门,你如果让他们造围墙,那不是把自己围死吗?
虽然不知道你想干嘛,但我可以给你个能让亚洲三国和土著开门的文件,你把这个复制替换到游戏目录data文件里就可以了,但是改了游戏文件就只能自己玩单机了,不能联机,注意备份原文件。

exand 发表于 2017-1-10 20:01:04

mozonglin7 发表于 2017-1-10 13:20
1.如果你是在我改的AI基础上进行修改的,那AI不升级围墙只有两个原因,一是处于弱势,没有空闲资源升级围 ...

感恩 mozonglin 大师,
经您指点,第二个,关于AI围墙损毁问题已经解决,
AI围墙升级,我想把它加入到Utt AI上,只想求大师给一段 AI能在堡垒时代或工业时代,AI升级围墙的完整代码


以下是参考了百度贴吧,“凉悲澄”大师,所写

rule wallUpgradeMonitor
inactive
minInterval 30  
{
if ((kbResourceGet(cResourceWood) < 400) && (kbResourceGet(cResourceGold) < 600))
xsDisableSelf();  // 凉悲澄”大师忽略了这句,进入总是报错,error 0003 aiLoaderStandard.xs 加入后虽不报错,但依然没能实现
return;

if (kbTechGetStatus(cTechBastion) == cTechStatusActive)
{
xsDisableSelf();
return;
}
int WallConnector = getUnit(cUnitTypeWallConnector, cMyID, cUnitStateAlive);
if (WallConnector >= 0)
{
createSimpleResearchPlan(cTechBastion, WallConnector, cEconomyEscrowID,80);
xsDisableSelf();
}
}

工业时代升级rule age4Monitor 加入

//Enable fort upgrade
xsEnableRule("wallUpgradeMonitor");

但依然没能实现AI升级围墙的代码

----------------------------------
引用您修改的,“雷光AI” 怕耽误你时间所以摘录出
rule insertEye
inactive
group tcComplete
mininterval 30
{
   if(cMyCiv == cCivXPSioux)
   {
      xsDisableSelf();
      return;
   }
   if(xsGetTime() < 900000)             // AI围墙升级时间是 18~20 分钟是在这里修改吗?
   {
      return;
   }
   
   vector mainBaseVec = kbBaseGetLocation(cMyID, kbBaseGetMainID(cMyID));
   vector centerOffset = kbGetMapCenter() - mainBaseVec;
   vector targetLocation = cInvalidVector;
   
   int treeQuery = getUnitByLocation(cUnitTypeTree, cPlayerRelationAny, cUnitStateABQ, centerOffset, 300.0);
   
   targetLocation = kbUnitGetPosition(treeQuery);
   int tcQuery = getUnitByLocation(cUnitTypeTownCenter, cPlayerRelationAny, cUnitStateABQ, targetLocation, 60.0);
   int wcQuery = getUnitCountByLocation(cUnitTypeWallConnector, cPlayerRelationSelf, cUnitStateABQ, targetLocation, 30.0);
   if((tcQuery >= 0) || (wcQuery > 1))
      return;
   
   int wcPlan=aiPlanCreate("wall connector plan", cPlanBuild);
   aiPlanSetVariableInt(wcPlan, cBuildPlanBuildingTypeID, 0, cUnitTypeWallConnector);
   aiPlanSetVariableVector(wcPlan, cBuildPlanCenterPosition, 0, targetLocation);
   aiPlanSetVariableFloat(wcPlan, cBuildPlanCenterPositionDistance, 0, 15.0);
   aiPlanSetDesiredPriority(wcPlan, 99);
   aiPlanSetMilitary(wcPlan, false);
   aiPlanSetEconomy(wcPlan, true);
   aiPlanSetEscrowID(wcPlan, cEconomyEscrowID);
   aiPlanAddUnitType(wcPlan, gEconUnit, 1, 1, 1);
   aiPlanSetVariableVector(wcPlan, cBuildPlanInfluencePosition, 0, targetLocation);
   aiPlanSetVariableFloat(wcPlan, cBuildPlanInfluencePositionDistance, 0, 100.0);
   aiPlanSetVariableFloat(wcPlan, cBuildPlanInfluencePositionValue, 0, 200.0);
   aiPlanSetVariableInt(wcPlan, cBuildPlanInfluencePositionFalloff, 0, cBPIFalloffLinear);
   aiPlanSetActive(wcPlan);
}

只想求大师给一段 AI能在堡垒时代或工业时代,AI升级围墙的代码,把它加入到您制作的Utt AI上,对于我来说觉得帝国就完美了!

mozonglin7 发表于 2017-1-10 21:09:31

exand 发表于 2017-1-10 20:01
感恩 mozonglin 大师,
经您指点,第二个,关于AI围墙损毁问题已经解决,
AI围墙升级,我想把它加入到U ...
不是那,升级围墙代码是写在Monitor科技升级监控里的。如果你是想让AI在堡垒时代升级围墙,那就把以下这段升级墙科技代码复制到rule age3Monitor里      

   int upgradePlanID = -1;
   if ((kbTechGetStatus(cTechBastion) == cTechStatusObtainable) && (kbUnitCount(cMyID, cUnitTypeAbstractWall, cUnitStateAlive) >= 5))
   {
      upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechBastion);
      if (upgradePlanID >= 0)
         aiPlanDestroy(upgradePlanID);
      createSimpleResearchPlan(cTechBastion, getUnit(cUnitTypeChurch), cMilitaryEscrowID, 50);
      return;
   }



exand 发表于 2017-1-10 21:22:56

mozonglin7 发表于 2017-1-10 21:09
不是那,升级围墙代码是写在Monitor科技升级监控里的。如果你是想让AI在堡垒时代升级围墙,那就把以下这 ...

感谢大师,经测试可以了,我不懂C++ 瞎捉摸了几个星期了,昨天、今天班都不去上,每天捉摸到4点才睡,唉
真希望能你有的功力、造诣,我的游戏生活就丰富多彩了。
再次感谢!!!

qidanei625 发表于 2017-1-11 08:48:28

本帖最后由 qidanei625 于 2017-1-11 09:57 编辑

exand 发表于 2017-1-10 21:22
感谢大师,经测试可以了,我不懂C++ 瞎捉摸了几个星期了,昨天、今天班都不去上,每天捉摸到4点才睡,唉
...
可否把修改的分享下啊,我基本上也玩单机!!
我也一直用层主的AI!!

1954659076@qq.com

exand 发表于 2017-1-12 11:00:44

首先感谢 mozonglin7 大师,其造诣高,平易近人,乐于帮助我们这么菜鸟。(越是高人,越是随合)
在mozonglin7大师做的雷光AI, v2.8 上做出的修改,修改前请备份原文件

1、修改AI围墙的半径,让围城更漂亮。减少城门数量,当一个盟友时为4个,二个盟友时为3个,三个盟友时为2个。。
2、修改了AI在堡垒时代自动升级围墙。
3、增加城墙、城门抗炮击伤害,和血量,城门稍弱。效果是十几门大炮齐轰的情况,要3~5分钟,如果配合哨塔、士兵防守,基本上是一夫当,关万夫莫开的状态,当然也有弱点,城门就是突破口,城门防炮击伤害比较弱,如果用炸药桶,牺牲个几十人再配合军队,一会就攻破了,整个战场模拟真实战场,可以想象当大军攻城时,都集中攻击城门处。

exand 发表于 2017-1-12 11:15:30

mozonglin7 发表于 2017-1-10 21:09
不是那,升级围墙代码是写在Monitor科技升级监控里的。如果你是想让AI在堡垒时代升级围墙,那就把以下这 ...

请教大师 关于Ai修墙
aiPlanAddUnitType(wallPlanID, cUnitTypeSettler, 1, 1, 1);
中间那个1 代表 农民数,其它2个1,分别代表什么呀?

exand 发表于 2017-1-12 12:09:38

还有一个技术,大师能否实现?
一个优美的地图,打到后期,树被砍光,光秃秃的,很难看,能否让树再生,再长出来?

一个不完美的解决方案,是让树资源多,耐砍一点。
页: [1] 2 3
查看完整版本: 会拉围墙的加强AI,可联机对战!