为战役配AI的基础(卧龙先生)
本帖最后由 孟雨亲王 于 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-percentage30)
(set-strategic-number sn-gold-gatherer-percentage20)
(set-strategic-number sn-stone-gatherer-percentage 20)
(set-strategic-number sn-wood-gatherer-percentage30)
(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-percentage30) (set-strategic-number sn-gold-gatherer-percentage20) (set-strategic-number sn-stone-gatherer-percentage 20) (set-strategic-number sn-wood-gatherer-percentage30) 这四句中第一句指百分之三十的农民采集食物;第二句指百分之二十 的农民采集采集黄金;第三句指百分之二十的农民采集石头;第二句 指百分之三十的农民采集木头。可以随时修改百分比。
(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 < 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时便训练民兵系。 就这样,难度的选择发挥了作用。用在进攻或者别的都很不错。
由于旧的那帖不见了,现在我再发一次上来。 真是宝典啊!令小弟受益匪浅! 真是宝典啊!.............:D :D 真是宝典啊!.............:) :lol :lol :handshake DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 可惜呀,当年英语没学好,一句也看不懂哦,悲哀~ 虽然现在英语成绩不懂 不过借助翻译工具 经过3天3夜的研究终于弄懂了 谢谢尼克
祝大家新年快乐 D!!!!!!!!!对我有帮助~~~~~~~~~~~~我把BOOM2拆了,发现BOOM2还有一些小小的插曲~DDDDDDDDDDDD
````
不知所云。。。。。。最肉麻的短信送给你
当你看到这条短信息时,你已经中了猛烈无比的爱毒,唯一的解药就是嫁给我,不用考虑了,咱们结婚吧!性用品 成人用品SM用品 性保健品 上学时候完全看不懂,现在从事C语言方面的工作两年后发现,这个比C语言简单多了。。多谢卧龙先生的普及。这个算挖坟吗?
页:
[1]