翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 7905|回复: 12

[教程] 为战役配AI的基础(卧龙先生)

[复制链接]

132

主题

12

精华

5万

积分

圣徒

耕战
10009
鹰币
1090
天龙币
0
回帖
4763

特级翔鹰勋章一级帝国勋章第二届火箭筒杯最佳战役第三届火箭筒杯最佳战役雄鹰勋章

附庸关系0
发表于 2007-8-1 23:48:44 | 显示全部楼层 |阅读模式
本帖最后由 孟雨亲王 于 2015-3-28 20:05 编辑

首先要知道怎么做**.ai、**.per文件,可以运行WINDOWS自带的“记事本”,然后点击“另存为”,这将打开一个新的窗口,在“文件名” 处敲“**.per”或者“**.ai”,将 “保存类型” 下拉菜单定 义为: “所有文件”,最后点确定,OK,就生成了一个“**.per”或者“**. ai”。  

关于编辑AI的,可以使用一些像AIEDITOR类的AI编辑器。没办法也可 以用记事本。编辑 AI 要在"**.per"文件里工作,编辑的成了的整个 "**.per"里不能有一个字打错。

------------------------------

接下来要了解一些AI的规格。 看这个句法:
(defrule   
(difficulty == hard)
=>
(chat-to-all "一二三四五六")   
(disable-self) )

当你用一个拥有上面句法的AI选择难度为难进入游戏,一开始就可以 看到聊天显示:一二三四五六 。但选择难度为标准或别的, 都不能 看到“一二三四五六”。

分析:
(defrule
(内容)
=>
(内容) )

这是编写AI的基本格式,所有的句法都是如此,每一个这样子的句法 就是一个动作。   
(difficulty == hard) 这一句是说选择难度为“难”。   
(chat-to-all "一二三四五六") 这一句是发送聊天信息:一二三四五六 。
(disable-self) 这一句以后说明。

我们可以将这AI语法格式理解为
(defrule         
(difficulty == hard)   ;(条件)
=>      
(chat-to-all "一二三四五六")  ;(效果)   
(disable-self)                ;(效果) )                 

现在比较明确了,这句语法就是说:当选择的难度为 “难” 的时候 ,就发送聊天信息为:一二三四五六。所以当我们选择难度为别的的 时候便不会再发送聊天信息:一二三四五六。

补:条件和效果都可以不止一个。

(defrule   
(game-time > 60)           
(difficulty == hard)
=>
(chat-to-all "一二三四五六")   
(disable-self) )

使用这一句发送聊天信息必须在游戏开始60秒后才发出。至此,AI的 一般规则应该看得懂了吧!

------------------------------

下面列出一些实用的句法,兄弟所后做AI如果懒的编写,也可以从这 里COPY。不过自己还是要知道每一句都是些什么意思,要懂得修改。
开始:
(defrule
(true)
=>
(set-strategic-number sn-percent-civilian-explorers 0)   
(set-strategic-number sn-percent-civilian-builders 15)   
(set-strategic-number sn-percent-civilian-gatherers 85)   
(set-strategic-number sn-food-gatherer-percentage  30)   
(set-strategic-number sn-gold-gatherer-percentage  20)   
(set-strategic-number sn-stone-gatherer-percentage 20)   
(set-strategic-number sn-wood-gatherer-percentage  30)   
(set-strategic-number sn-maximum-food-drop-distance 20)   
(disable-self) )

其中,“(true)”是无条件,所以下面的动作就一定会发生了。   

(set-strategic-number sn-percent-civilian-explorers 0)   (set-strategic-number sn-percent-civilian-builders 15)   (set-strategic-number sn-percent-civilian-gatherers 85) 这三句中第一句指百分之几的农民用于侦察地图;第二句指百分之几 的农民用于建造建筑;第三句指百分之几的农民用于采集资源。三句 语法是关系着的,如:百分之20用于侦察地图,百分之20用于建造建 筑,百分之60用于采集资源,加上要等于100。   

(set-strategic-number sn-food-gatherer-percentage  30)   (set-strategic-number sn-gold-gatherer-percentage  20)   (set-strategic-number sn-stone-gatherer-percentage 20)   (set-strategic-number sn-wood-gatherer-percentage  30) 这四句中第一句指百分之三十的农民采集食物;第二句指百分之二十 的农民采集采集黄金;第三句指百分之二十的农民采集石头;第二句 指百分之三十的农民采集木头。可以随时修改百分比。  

(set-strategic-number sn-maximum-food-drop-distance 20) 这一句是指农民采集食物离城镇中心的对答距离为20,当然也可以规 定采集别的资源的最大范围。 其实这一类的还有很多,就不说了,免得太复杂。以后自己学习吧。

-----------
再一句:
(defrule   
(unit-type-count-total knight-line < 12)   
(can-train knight-line)
=>  
(train knight-line) )

其中:  
(unit-type-count-total knight-line < 12) 指所有的骑兵系数量总和少于12个         
(can-train knight-line) 指能够训练骑兵         
(train knight-line) 指动作:训练骑兵

明确的解说:当骑兵系(包括骑士、重骑、游侠)的数量总和少于1 2个并且可以训练骑兵系的时候,就训练骑兵系。当然可以修改。如 果将其中所有的knight(骑兵)修改为archer(努手),那么将不再 造骑兵系,而改为造努手,数量也当然可以改。

如:
(defrule   
(unit-type-count-total archer-line < 8)   
(can-train archer-line)
=>  
(train archer-line) )

想知道所有单位的英文名字的另找资料。

-----------

再来一个造建筑的:
(defrule   
(building-type-count-total market less-than 1)   
(can-build market)
=>  
(build market) )

其中:  
(building-type-count-total market less-than 1) 指市场数量总和少于 1 个   
(can-build market) 指能建造市场   
(build market) 建造市场 这一句和训练军事单位没什么两样。其他的如此推类。 想知道所有建筑英文名请自己找资料。

-----------

另外研究科技也和造单位差不多,如:
(defrule   
(can-research ri-long-swordsman)
=>
(research ri-long-swordsman) )

其中  (can-research ri-long-swordsman) 能研究长剑士      
(research ri-long-swordsman) 研究长剑士
想知道所有技术英文名请自己找资料。

-----------

再一个:
(defrule   
(game-time > 800)
=>
(attack-now)   
(enable-timer 2 600)   
(disable-self) )  

(defrule   
(timer-triggered 2)
=>
(attack-now)   
(disable-timer 2)   
(enable-timer 2 500) )

这一个是进攻系统。  
(game-time > 800) 指游戏时间大于800秒   
(attack-now) 指动作:进攻   
(enable-timer 2 600) 指使用一个定时器,命名为 2 ,定时器的时间为600秒。   
(timer-triggered 2) 指定时器2的时间600秒到达时   
(attack-now) 指再度进攻一次   
(disable-timer 2) 指使定时器2残废,意思使不要再使用定时器2了   
(enable-timer 2 500) 指使用新的定时器2,不过时间改为500秒了。

所有动作解说: 当游戏进行800秒后电脑就第一次进攻,600秒后,因为定时器2的发 作又进攻一次,再500秒后,因新的定时器 2 再度发作, 便再度进 攻,以后也每隔500秒就进攻一次。这一句有一点复杂,看不懂以后 自己研究吧,不难。

-----------

现在该说到
(defrule   
(difficulty == hard)
=>
(chat-to-all "一二三四五六")   
(disable-self) )

其中的  (disable-self)  了。 它的作用是使这它所在的那一个语法只产生一次的作用。如果上面 这一句不加上后面的  (disable-self)  ,那么  一二三四五六 将不停的显示出来,而有了  (disable-self)  这一段,一二三四 五六就只显示一次而已。

-----------

再谈个目标(goal)的:
(defrule   
(unit-type-count-total knight-line == 1)
=>
(set-goal 6 10)   
(chat-to-all "一二三四五六")   
(disable-self) )  

(defrule   
(goal 6 10)
=>
(chat-to-all "第二个动作")   
(disable-self) )

其中:   
(unit-type-count-total knight-line == 1) 只骑兵系数量等于1   
(chat-to-all "一二三四五六")   
(set-goal 6 10) 发送聊天信息  一二三四五六  ,并且: 设置目标:  6 10   (goal 6 10) 指接受目标 6 10 的信息   
(chat-to-all "第二个动作") 发送聊天信息 第二个动作

总体解说: 当玩家的骑兵系数量等于1的时候,便同时发出两个聊天信息:     一二三四五六      第二个动作 至此,目标的使用兄弟应该懂了!

----------

再一个,作弊的:
(defrule   
(true)
=>
(enable-timer 4 2400)   
(disable-self) )  

(defrule   
(timer-triggered 4)
=>
(cc-add-resource wood 7000)   
(disable-timer 4)   
(enable-timer 4 1440) )

这个不多说,电脑在游戏开始2400秒后就自动为自己添加 7000 木 头,再以后每隔1440秒又为自己加7000木头。 为什么要使用作弊,因为有的时候我们会为了地图的美观而不想让 多事的农民将美丽的树木一伐而尽,就将农民伐木的百分之* 定义 为0,不过没有木头玩家又不行,所以作弊的优势就显露了出来。 可参考我的“匈奴第一场”里的汉朝。既要表现汉朝的农 田 特别 多又要不让伐木,还是作弊帮的忙呀!:)

-----------

最后一个,难度的使用:   

(defrule  
(difficulty == normal)  
(unit-type-count-total militiaman-line &lt; 12)   
(can-train militiaman-line)
=>
(train militiaman-line) )

(defrule  
(difficulty == moderate)   
(unit-type-count-total militiaman-line < 15)   
(can-train militiaman-line)
=>
(train militiaman-line) )

(defrule  
(difficulty == hard)  
(unit-type-count-total militiaman-line < 20)  
(can-train militiaman-line)
=>
(train militiaman-line) )


使用难度是作战役必须的。看第一个:
(defrule   
(difficulty == normal)   
(unit-type-count-total militiaman-line < 12)   
(can-train militiaman-line)
=>
(train militiaman-line) )

指当难度选标准时,民兵系的数量总和少于12时便训练民兵系。


(defrule   
(difficulty == moderate)   
(unit-type-count-total militiaman-line < 15)   
(can-train militiaman-line)
=>
(train militiaman-line) )

指当难度选中等时,民兵系的数量总和少于15时便训练民兵系。


(defrule   
(difficulty == hard)   
(unit-type-count-total militiaman-line < 20)   
(can-train militiaman-line)
=>
(train militiaman-line) )

指当难度选难时,民兵系的数量总和少于20时便训练民兵系。 就这样,难度的选择发挥了作用。用在进攻或者别的都很不错。
You'll never walk alone!
回复

使用道具 举报

132

主题

12

精华

5万

积分

圣徒

耕战
10009
鹰币
1090
天龙币
0
回帖
4763

特级翔鹰勋章一级帝国勋章第二届火箭筒杯最佳战役第三届火箭筒杯最佳战役雄鹰勋章

附庸关系0
 楼主| 发表于 2007-8-1 23:50:12 | 显示全部楼层
由于旧的那帖不见了,现在我再发一次上来。
You'll never walk alone!
回复

使用道具 举报

15

主题

1

精华

2295

积分

侯爵

耕战
222
鹰币
915
天龙币
0
回帖
172
附庸关系0
发表于 2007-8-10 07:45:08 | 显示全部楼层
真是宝典啊!令小弟受益匪浅!
回复

使用道具 举报

8

主题

0

精华

26

积分

骑士

耕战
-2
鹰币
5
天龙币
0
回帖
67
附庸关系0
发表于 2007-11-11 21:12:27 | 显示全部楼层
真是宝典啊!.............:D :D
考试结束了.....
神情一下放松了.................
回复

使用道具 举报

0

主题

0

精华

-5

积分

奴隶

耕战
-1
鹰币
5
天龙币
0
回帖
5
附庸关系0
发表于 2007-12-15 23:05:57 | 显示全部楼层
真是宝典啊!.............:) :lol :lol :handshake
回复

使用道具 举报

4

主题

0

精华

-11

积分

奴隶

耕战
-5
鹰币
5
天龙币
0
回帖
85
附庸关系0
发表于 2007-12-16 10:40:12 | 显示全部楼层
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
如果您能坚持1200月都编辑战役那么您一定能活到100岁- -!
回复

使用道具 举报

1

主题

0

精华

7

积分

扈从

耕战
1
鹰币
5
天龙币
0
回帖
4
附庸关系0
发表于 2008-2-6 12:54:01 | 显示全部楼层
可惜呀,当年英语没学好,一句也看不懂哦,悲哀~
回复

使用道具 举报

7

主题

0

精华

76

积分

骑士

耕战
12
鹰币
5
天龙币
0
回帖
24
附庸关系0
发表于 2008-2-7 21:22:46 | 显示全部楼层
虽然现在英语成绩不懂 不过借助翻译工具 经过3天3夜的研究终于弄懂了 谢谢尼克  
祝大家新年快乐
回复

使用道具 举报

4

主题

0

精华

-11

积分

奴隶

耕战
-5
鹰币
5
天龙币
0
回帖
85
附庸关系0
发表于 2008-2-9 15:42:23 | 显示全部楼层
D!!!!!!!!!对我有帮助~~~~~~~~~~~~我把BOOM2拆了,发现BOOM2还有一些小小的插曲~DDDDDDDDDDDD
如果您能坚持1200月都编辑战役那么您一定能活到100岁- -!
回复

使用道具 举报

2

主题

0

精华

19

积分

骑士

耕战
3
鹰币
5
天龙币
0
回帖
7
附庸关系0
发表于 2008-8-7 12:30:35 | 显示全部楼层

````

回复

使用道具 举报

21

主题

0

精华

278

积分

男爵

耕战
39
鹰币
0
天龙币
0
回帖
182
附庸关系0
发表于 2008-8-7 15:51:39 | 显示全部楼层
不知所云。。。。。。
壁立千仞,有欲则刚。(载自《格言》)
回复

使用道具 举报

zbaowei8 该用户已被删除
发表于 2008-12-27 06:01:55 | 显示全部楼层

最肉麻的短信送给你

当你看到这条短信息时,你已经中了猛烈无比的爱毒,唯一的解药就是嫁给我,不用考虑了,咱们结婚吧!
性用品 成人用品  SM用品 性保健品
回复

使用道具 举报

10

主题

0

精华

3290

积分

公爵

耕战
615
鹰币
1645
天龙币
0
回帖
108
附庸关系0
发表于 2017-10-12 15:40:36 | 显示全部楼层
上学时候完全看不懂,现在从事C语言方面的工作两年后发现,这个比C语言简单多了。。多谢卧龙先生的普及。这个算挖坟吗?
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-4-29 19:19 , Processed in 0.183157 second(s), 152 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

快速回复 返回顶部 返回列表