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

[教程] 编写AI之要点

  [复制链接]

4

主题

0

精华

3251

积分

公爵

耕战
600
鹰币
285
天龙币
0
回帖
23
附庸关系0
发表于 2012-1-29 17:17:06 | 显示全部楼层 |阅读模式
本帖最后由 忠实帝国粉丝 于 2012-2-10 16:20 编辑

       我个人打帝国的水平很差但又很喜欢帝国2,所以只能寄情于看AI之间决战了。AI是否强大,更多地取决于是否可以发
挥到各民族的优势及游戏中地形,资源的分布。鉴于我自己水平有限,可能我的观点只代表准模式下AI之间的陆地决战,
比较片面,请见谅!推荐一条校验AI规则的指令(chat-to-all " ")。通过这条指令就可以第一时间知道AI是否有执行规则了。
只是校验时使用喔,过分使用会影响游戏流畅度。

第一篇  自定义常数defcons与设定自定义常数set-goal使用介绍
    论坛中老胡有帖子已经介绍过,在这里补充下。自定义常数可以减少规则数量,实现一些无法用常规手法编写的规则。
   
1 自定义常数 defcons  
  这里是从一个AI中复下来的
  (defconst FALSE                    0) ;false
  (defconst TRUE                     1)  ;true
         如果要看官方解释,可以去看官方教程。用我的解释就是告诉“defconst”电脑FALSE=0。我们知道FALSE是可译为假,
电脑并不知道FALSE是假,只知道英文字母“FALSE”等于“0”。英文字母是屏幕前的你看的,数字是电脑看的。自定义常
数本来意义就是将一些阿拉伯数字起一个方便AI编写者记忆的名字。
其实用中文汉字也可以定义,中国人用汉字吧。
  (defconst        0)  
  (defconst        1)  
2 自定义常数defcons按用途性质可分4种类别
例子一
------------------------------------------------------------------------------------------------------------------------------
;这段是逻辑常数
(defconst 封建必要科技  1)
(defconst 城堡必要科技  2)  
(defconst 帝王必要科技  3)
(defconst 普通部队进攻  4)
(defconst 救援同盟进攻  5)
(defconst 城镇范围进攻  6)
(defconst 部队集结进攻  7)

;切记上面先空一行,这段是判断常数
(defconst 0)
(defconst 1)

;上面也要先空一行,这段是数量常数
(defconst 农民系数量  14)
(defconst 轻骑系数量  8)
(defconst 骑士系数量  5)

;上面也要先空一行,这段是计时器常数
(defconst TIMER_部队进攻     1)
(defconst TIMER_救援同盟     2)
(defconst TIMER_攻击方式     3)

;逻辑常数跟判断常数通过set-goal组成一个开关
(defrule
    (true)
=>
    (set-goal 封建必要科技       )  ;将封建必要科技  1  设为 1 0
    (set-goal 城堡必要科技       )  ;将城堡必要科技  2  设为 2 0
    (set-goal 帝王必要科技       )  ;将帝王必要科技  3  设为 3 0
    (set-goal 普通部队进攻       )  ;将普通部队进攻  4  设为 4 0
    (set-goal 救援同盟进攻       )  ;将救援同盟进攻  5  设为 5 0
    (set-goal 城镇范围进攻       )  ;将城镇范围进攻  6  设为 6 0
    (set-goal 部队集结进攻       )  ;将部队集结进攻  7  设为 7 0
    (disable-self)
)
-------------------------------------------------------------------------------------------------------------------------------------------------------------
(1)逻辑常数 一条完整的规则只能有条件加动作共16条指令,超过会出错,但这里有17条或17条以上的指令,怎么办?
                     或者有多条不同的规则都指向结果A,多条不同的规则都指向结果B,而A+B又指向结果C等等复杂的逻辑
                     关系。要实现这些复杂的规则只能用逻辑常数解决。
(2)判断常数 顾名思义就是判断常数。判断常数是结合逻辑常数一起使用的,通过set-goal动作指今设成一个成立或不成
                     立的关系式,再通过goal检查指令使用这个关系式。      
例子二
---------------------------------------------------------------------------------------------------------
(defconst        0)  
(defconst        1)

(defconst 封建必要科技  1)  
(defconst 城堡必要科  2)  
(defconst 帝王必要科技  3)
(defconst 普通部队进攻 4)
(defconst 救援同盟进攻  5)
(defconst 城镇范围进攻  6)
(defconst 部队集结进攻  7)

(defconst TIMER_部队进攻     1)
(defconst TIMER_救援同盟     2)
(defconst TIMER_攻击方式     3)

(defrule
    (true)
=>
    (set-goal 封建必要科技       关)  
    (set-goal 城堡必要科技       关)  
    (set-goal 帝王必要科技       关)  
    (set-goal 普通部队进攻       关)  
    (set-goal 救援同盟进攻       关)  
    (set-goal 城镇范围进攻       关)
    (set-goal 部队集结进攻       关)  
    (disable-self)
)
;17条或17条以上的指令的应用,比如现在想研究好所有城堡时代科技再研究钻井采石业。如果用正常手法不知要写多少条规则才能实现,逻辑常数可很容易解决(这条规则很弱,无人会写这么无聊的规则,借花献佛,但这个原理可以用来优先研究必要的科技)
(defrule
    (research-completed ri-hand-cart)            ;手推车
    (research-completed ri-bow-saw)              ;弓锯
    (research-completed ri-heavy-plow)          ;重犁
    (research-completed ri-elite-skirmisher)     ;精锐掷矛兵
    (research-completed ri-gold-shaft-mining) ;钻井采金业
    (research-completed ri-bodkin-arrow)       ;锥子箭
    (research-completed ri-pikeman)              ;长枪兵
                 .
                 .
                 .
=>
    (set-goal 城堡必要科技  开)      ;将城堡必要科技设为打开
)
(defrule
    (goal 城堡必要科技  开)
             .
             .
             .
    (can-research ri-stone-shaft-mining)
=>
    (research ri-stone-shaft-mining)  ;采石业
)
;结果A+结果B指向结果C的应用。下面是截取的一段AI进攻规则,并不完整,只是一个思路。表达意思就是普通部队进
攻或救援同盟进攻都开启时就发动普通部队进攻,普通部队进攻与救援同盟进攻都关闭时就停止普通部队进攻。帝王成
型后采用TSA方式,不再采用普通部队进攻方式。攻击方式有4种,军事篇中我会说明。
这个例子只体现3种攻击方式。
(defrule
    (current-age >= castle-age)
    (players-military-population any-enemy  < 20)
    (players-building-type-count every-enemy  castle  < 1)
    (soldier-count > 40)
    (goal 普通部队进攻 关)
    (goal 城镇范围进攻 关)
=>
    (set-goal 普通部队进攻 开)
)
(defrule
    (soldier-count < 30)
    (players-military-population any-enemy > 10)
    (goal 普通部队进攻 开)
    (goal 救援同盟进攻 关)
=>
    (set-goal 普通部队进攻 关)
)
(defrule
    (current-age == imperial-age)
    (population > 180)
    (goal 帝王必要科技 开)
    (goal 城镇范围进攻 关)
=>
    (set-goal 救援同盟进攻 关)
    (set-goal 普通部队进攻 关)
    (set-goal 城镇范围进攻 开)
    (chat-to-all "TSA进攻开启")
)
(defrule
    (soldier-count < 45)
    (players-military-population any-enemy > 35)
    (goal 城镇范围进攻 开)
=>
    (set-goal 城镇范围进攻 关)
)
(defrule
    (town-under-attack)
    (soldier-count < 30)
    (timer-triggered TIMER_救援同盟)
    (players-military-population any-enemy > 45)
   
=>
    (chat-to-allies "12 敌人到我城镇了")
    (disable-timer TIMER_救援同盟)
    (enable-timer  TIMER_救援同盟 25)
)
(defrule
    (goal 救援同盟进攻 关)
    (goal 普通部队进攻 关)
    (goal 城镇范围进攻 关)
    (taunt-detected any-ally 12)
    (or
       (unit-type-count knight-line > 6)
       (unit-type-count scout-cavalry-line > 10)
    )
=>
     (set-goal 救援同盟进攻 开)
     (acknowledge-taunt this-any-ally 12)
)
(defrule
    (goal 救援同盟进攻 开)
    (or
       (unit-type-count knight-line < 4)
       (unit-type-count scout-cavalry-line < 6)
    )
=>
     (set-goal 救援同盟进攻 关)
)
(defrule
    (goal 救援同盟进攻 关)
    (goal 普通部队进攻 关)
    (goal 城镇范围进攻 关)
    (timer-triggered TIMER_部队进攻 )
=>
    (set-strategic-number sn-number-attack-groups                        1)   ;攻击部队数量
    (set-strategic-number sn-enemy-sighted-response-distance      20)   ;敌视回应距离
    (disable-timer TIMER_部队进攻)
    (enable-timer TIMER_部队进攻 25)
)
(defrule
    (timer-triggered TIMER_部队进攻 )
    (not (town-under-attack))
    (or
      (goal 普通部队进攻 开)
      (goal 救援同盟进攻 开)
    )
    (goal 城镇范围进攻 关)
=>
    (set-strategic-number sn-number-attack-groups                    200)   ;攻击部队数量
    (set-strategic-number sn-enemy-sighted-response-distance      25)   ;敌视回应距离
    (disable-timer TIMER_部队进攻)
    (enable-timer TIMER_部队进攻 150 )
)
(defrule
    (goal 城镇范围进攻 开)
=>
    (set-strategic-number sn-number-attack-groups                        1)   ;攻击部队数量
    (set-strategic-number sn-enemy-sighted-response-distance      44)   ;敌视回应距离
    (disable-timer TIMER_部队进攻)
    (enable-timer  TIMER_部队进攻 180 )
(defrule
    (goal 城镇范围进攻 开)
    (not (enemy-buildings-in-town))
    (strategic-number sn-maximum-town-size < 40)
=>
    (set-strategic-number sn-maximum-town-size 40)
    (chat-to-all "19 Town-size-attack:40")
)
(defrule
    (goal 城镇范围进攻 开)
    (not (enemy-buildings-in-town))
    (strategic-number sn-maximum-town-size == 40)
=>
    (set-strategic-number sn-maximum-town-size 45)
)
(defrule
    (goal 城镇范围进攻 开)
    (not (enemy-buildings-in-town))
    (strategic-number sn-maximum-town-size == 45)
=>
    (set-strategic-number sn-maximum-town-size 50)
)
(defrule
    (goal 城镇范围进攻 开)
    (not (enemy-buildings-in-town))
    (strategic-number sn-maximum-town-size == 50)
=>
    (set-strategic-number sn-maximum-town-size 55)
)
----------------------------------------------------------------------------------------------------------------------
有些AI是没有判断常数的,它会直接设定,道理是一样的,只是没有那么明白罢了
-----------------------------------------------------------------------------------------------------------------------
例子三
(defrule
    (true)
=>
    (set-goal 普通部队进攻     0)  ;将普通部队进攻  4  设为 4 0
    (set-goal 救援同盟进攻     0)  ;将救援同盟进攻  5  设为 5 0
    (set-goal 城镇范围进攻     0)  ;将城镇范围进攻  6  设为 6 0
    (disable-self)
)
---------------------------------------------------------------------------------------------------------------------
再举一个封快出步兵的例子。当正在升级封建时代的时候出兵,规则怎样写?
例子四
(defconst        0)  
(defconst        1)

(defconst 开始封建时代  1)

(defrule
    (can-research feudal-age)
=>
    (set-goal 开始封建时代 开)
    (research feudal-age)
)
(defrule
    (current-age <= feudal-age)
    (goal 开始封建时代 开)
    (unit-type-count-total militiaman-line < 8)
    (can-train militiaman-line)
=>
    (train militiaman-line)  ;生产步兵系
)
------------------------------------------------------------------------------------------------------------------
(3)数量常数 有些人比较懒,为方便自己修改自造的AI,改一个数字就能实现修改,通常是一些单位、建筑物、资源、
                     城镇范围、人口等等的数量。(真难为我这些研究他AI逻辑的人了,苦啊!!!)
例子五
---------------------------------------------------------------------------------------------------------------------
;骑士系数量大于5或轻骑系数量大于8研究骑兵锁甲
(defrule
    (or
        (unit-type-count-total  knight-line  > 5 )
        (unit-type-count-total scout-cavalry-line > 8 )
)
    (can-research ri-chain-barding)
=>
    (research ri-chain-barding)
)
;骑士系数量大于5或轻骑系数量大于8研究骑兵钢甲
(defrule
    (or
        (unit-type-count-total knight-line  > 5 )
        (unit-type-count-total scout-cavalry-line > 8 )
)
    (can-research ri-plate-barding)
=>
    (research ri-plate-barding)
)
;只要定义了单位数量常数可改为以下
(defconst 轻骑系数量  8)
(defconst 骑士系数量  5)

(defrule
    (or
        (unit-type-count-total  knight-line  > 骑士系数量 )
        (unit-type-count-total scout-cavalry-line > 轻骑系数量 )
)
    (can-research ri-chain-barding)
=>
    (research ri-chain-barding)
)
(defrule
    (or
        (unit-type-count-total knight-line  > 骑士系数量 )
        (unit-type-count-total scout-cavalry-line > 轻骑系数量 )
)
    (can-research ri-plate-barding)
=>
    (research ri-plate-barding)
)
;当运行AI时发现这样设定不理想骑士系数量或轻骑系数量太多了,可以修改自定义常数的骑士系数量或轻骑系数量的阿拉伯
数字了。
---------------------------------------------------------------------------------------------------------
(4)计时器常数 为区分每一个计时器,给计时器起个名字。

3 使用定义常数defcons注意事项
(1)定义的时候计时器常数必须与其它3种类别之间要分段,即是留一行空行。
(2)理论上判断常数、逻辑常数、数量常数可处于同一段,但为了方便区分,防止AI有时会造成数字混淆,建议分段。
(3)所有类别定义的名字都不能相同。
(4)同一段落中阿拉伯数字不能相同。
(5)当数量常数定义过多或阿拉伯数字重叠时可以分段解决。

4 某些对数字有很好记忆力的人士也可以不用常数
例子六 以例子四说明
例子四
(defconst       0)  
(defconst        1)

(defconst 开始封建时代  1)

(defrule
    (can-research feudal-age)
=>
    (set-goal 开始封建时代 开)
    (research feudal-age)
)
(defrule
    (current-age <= feudal-age)
    (goal 开始封建时代 开)
    (unit-type-count-total militiaman-line < 8)
    (can-train militiaman-line)
=>
    (train militiaman-line)
)
;可不使用defconst直接改为纯数字 AI会认识的
(defrule
    (can-research feudal-age)
=>
    (set-goal 1 1)
    (research feudal-age)
)
(defrule
    (current-age <= feudal-age)
    (goal 1 1)
    (unit-type-count-total militiaman-line < 8)
    (can-train militiaman-line)
=>
    (train militiaman-line)
)






回复

使用道具 举报

4

主题

0

精华

3251

积分

公爵

耕战
600
鹰币
285
天龙币
0
回帖
23
附庸关系0
 楼主| 发表于 2012-1-29 17:17:40 | 显示全部楼层
本帖最后由 忠实帝国粉丝 于 2012-1-29 22:19 编辑

第二篇 建筑

建筑可分为经济建筑、军事建筑、城墙系建筑
1 经济建筑 城镇中心、磨坊、木厂、矿场、农田、房子
(1)关于农田BUG我在 https://www.hawkaoe.net/bbs/thread-36613-1-1.html  已经有介绍过了。其它所有建筑也
    有这个BUG。
(2)关于乱建木厂矿场问题,论坛上有帖子已经介绍过是加个计时器在时段上建造,个人认为这个办法不是那么的好,
    由于各地图资源分布不同会造成建造延误,一般加条采集距离距离限制也可解决,但有时也会多造木厂(可接受范
    围内),石与金同一 个矿场也比较麻烦
例子一  以下是木场其中一段规则
-------------------------------------------------------------------------------------------
(defrule
    (resource-found wood)
    (dropsite-min-distance wood > 3)
    (building-type-count-total lumber-camp < 4)
    (can-build lumber-camp)
=>
    (set-strategic-number sn-camp-max-distance 30)
    (build lumber-camp)
)
(defrule
    (resource-found wood)
    (dropsite-min-distance wood > 3)
    (building-type-count-total lumber-camp < 7 )
    (can-build lumber-camp)
=>
    (set-strategic-number sn-camp-max-distance 50)
    (build lumber-camp)
)
(defrule
    (resource-found wood)
    (dropsite-min-distance wood > 3)
    (building-type-count-total lumber-camp < 15 )
    (can-build lumber-camp)
=>
    (set-strategic-number sn-camp-max-distance 100)
    (build lumber-camp)
)
----------------------------------------------------------------------------------------------------------
例子二 以下是建矿场其中一段规则
-----------------------------------------------------------------------------------------------------------
(defrule
    (resource-found gold)
    (building-type-count-total barracks > 0)
    (dropsite-min-distance gold > 3)
    (dropsite-min-distance wood < 6)
    (building-type-count-total mining-camp < 0)
    (can-build mining-camp)
=>
    (set-strategic-number sn-camp-max-distance 30)
    (build mining-camp)
)
(defrule
    (resource-found stone)
    (wood-amount > 150)
    (building-type-count-total barracks > 0)
    (dropsite-min-distance stone > 3)
    (dropsite-min-distance wood < 6)
    (building-type-count-total lumber-camp > 0)
    (building-type-count-total mining-camp < 3)
    (can-build mining-camp)
=>
   (build mining-camp)                                              ;这个有时也会建造在金矿旁边,郁闷
)
(defrule
    (wood-amount > 150)
    (or
        (resource-found gold)
        (resource-found stone)
    )
    (or
        (unit-type-count-total 579 > 3)                        ;采金男工或女工大于3时建分矿
        (unit-type-count-total 581 > 3)
    )
    (dropsite-min-distance wood < 6)
    (building-type-count-total mining-camp < 5 )        ;游戏开始一般为3金矿,2石矿
    (can-build mining-camp)
=>
    (set-strategic-number sn-camp-max-distance 45)
    (build mining-camp)
)
(defrule
    (dropsite-min-distance gold >= 6)
    (building-type-count-total mining-camp < 15)
    (unit-type-count-total villager > 30)
    (or
         (resource-found gold)
        (resource-found stone)
    )
    (dropsite-min-distance wood < 6)
    (can-build mining-camp)
=>
    (set-strategic-number sn-camp-max-distance 100)
    (build mining-camp)
)
;矿场被拆时,AI不会在已建过矿场的金矿或石矿旁边再建矿场,只会在新矿旁边再建,如果没有发现有新矿就会乱建矿场了直到达到限制的数量为止。
--------------------------------------------------------------------------------------------------------------   
2 军事建筑 除经济建筑外所有建筑
军事建筑主要谈谈离城镇中心距离规律
城镇最小范围  sn-minimum-town-size 设成多少AI都默认为3
城镇最大范围  sn-maximum-town-size 不设情况下AI都默认为9—15 设置过小时,再容不下修建建筑物的空位时会停止新建建筑物,不能小于7
看图说话吧

当设置城镇最大范围sn-maximum-town-size == 25 AI会将建筑物放置在25范围的红圈上,形成一个以建筑物视野的范围圈之后,再从农田绿圈外开始由内往外建造建筑物。
AI将建筑物放置在红圈上的条件
1 红圈附近没有经济建筑或障碍物,如有经济建筑或障碍物直接从绿圈外建造
2 城镇最大范围不要大于25,过大就有些不靠谱了
通过这个规律大概可控第1兵营、城堡与城镇中心的距离,在建造军事建筑的规则加条sn-maximum-town-size动作
例子三
-------------------------------------------------------------------------------------------
(defrule
    (unit-type-count villager  > 12)
    (building-type-count-total town-center > 0)
    (building-type-count-total lumber-camp > 0)
    (building-type-count-total barracks == 0)
    (can-build barracks)
=>
    (set-strategic-number sn-maximum-town-size 10)    ;让第1兵营与城镇中心距离的近些
    (build barracks)
)
(defrule
    (wood-amount > 400)
    (building-type-count-total town-center > 0)
    (building-type-count blacksmith > 0)
    (building-type-count-total market == 0)
    (can-build market)
=>
    (set-strategic-number sn-maximum-town-size 25)     ;让市场与城镇中心距离远些,避免贸易车队与农民或部队相互挡路
    (build market)
)
(defrule
    (building-type-count castle == 0)
    (can-build castle)
=>
    (set-strategic-number sn-maximum-town-size 12 )    ;让城堡与1号城镇中心距离的近些
    (build castle)
)
(defrule
    (building-type-count-total town-center < 2)
    (building-type-count-total castle > 0)
    (can-build town-center)
=>
     (build town-center)                                                  ;先建城堡再建第2城镇中心,免得城堡与第一城镇过远
)
(defrule
    (strategic-number sn-maximum-town-size != 20)      ;追加一条规则不开启TSA进攻时,设回城镇最大范围为20
    (goal 城镇范围进攻  关)
=>
    (set-strategic-number sn-maximum-town-size 20)
)
-----------------------------------------------------------------------------------------------
前线建造动作build-forward只适合人机对战使用,AI对战只适合建造A版中的炮塔,就算在前线建造了兵厂但AI不会优先在这个兵厂出兵,只会给敌人有一个固定目标,提高对方的进攻效率。进攻效率会在进攻方式篇谈到。
3 城墙系建筑
在AI对战中建城墙弊大于利,敌人进攻时AI不会躲在城墙后的,建城墙还花费大量时间,数不胜数了。
但是人机对战就不同了,玩家通常都会用阴谋诡计、偷袭、绕过之类,建城墙可有效防止。
例子四
(defrule
   (true)
=>
   (enable-wall-placement 2)                  ;启动环形防线为范围2的设置 可设为1或2 1距离大概为10-15 2距离大概为15-25
   (disable-self)
)
(defrule
    (building-type-count castle > 0)
    (can-build-gate 2)                            ;按环形防线为范围2的距离建城门,建多少城门由AI决定
=>
    (build-gate 2)
)
(defrule
    (stone-amount > 100)                ;最好加这条大于指令,以防止城门被拆而又没有足够石头重建城门时AI建城墙封闭自己
    (building-type-count castle > 0)
    (building-type-count town-center > 0)
    (can-build-wall 2 stone-wall-line)   
=>
    (build-wall 2 stone-wall-line)                 ;按环形防线为范围2的距离建城墙
)

回复

使用道具 举报

4

主题

0

精华

3251

积分

公爵

耕战
600
鹰币
285
天龙币
0
回帖
23
附庸关系0
 楼主| 发表于 2012-1-29 17:18:01 | 显示全部楼层
本帖最后由 忠实帝国粉丝 于 2012-1-29 17:23 编辑

第三篇 兵力生产与农民工作

1 漫谈兵种
(1) AI间的对战与玩家间的对战很大区别。AI不会在没优势的情况下控制部队撤退,不会用相克的兵种有意识地攻击敌人,
     不会根据资源消耗分配农民等等。相同的是民族间的优势。
(2) AI间的对战中并不怎么讲求兵种的相克,看谁能最快形成有效的攻势。
    (a) 早期重要的是封快城快,尽快组织部队以最快速度将兵放到敌方城镇,生产骑马的兵种当然最快了;
         中国、匈奴、玛雅、阿兹、凯尔特等封快民族很有优势,特别是匈奴,不考虑地形因素时弱势民族遇到这些民族通
         常只能讲再见了。
    (b) 持续到到帝王就是缠斗(推兵),拼肉盾、远程兵种的优势了。
         特别以下几种远程兵:
         高丽战车(变态兵种)、匈奴骑射(价格就是硬道理)、凯尔特弩车(血多攻高)、蒙古骑射(打的快加蒙古轻骑)、诸葛弩
         (攻击力最高的远程兵打固定目标一流)、征服者(尴尬耗肉);
    (c)再到后期就拼垃圾兵的缠斗了。
(3) 缠斗(推兵)不外乎肉盾+远程
    (a) 肉盾消耗最快,当然首选轻骑系了(速度第1)、其次长枪系,死了再造,最快速度奔赴前线,尽量减少远程兵受攻击,
        保持阵形。如果黄金多可以造骑士。
    (b) 远程兵才是主宰战场的主角,尽量将黄金用到远程兵身上。
    (C)上面我列的远程兵都是些需要木和金生产的兵种除征服者,是结合到各民族各兵种特点,是否能将3种(木肉金)资源
         有效发挥,所谓的资源平衡性。为什么要有平衡性?如消耗木过多可以多安排伐木,耗肉过多可以多耕田,这样不是
         很好的办法,分配过多农民做同一种事是个挺头痛的问题。
(4)保证经济前提下再生产兵种 农民50F、农田60W、木厂矿场100W、投矛25F35W、长枪35F25W等等。AI中编写生
     产35个投矛,由于投矛资源起点低AI会优先生产投矛,当资源缺乏时会影响到农民、农田等的建造。但又想保持一
     定的军事实力下,先编写一段生产几个投矛,再编写一段加上木材大于135肉大于75进行限制生产其余的。

2农民工作分配
       如果一个民族消耗某一资源较多时可分配多些农民工作,但分配到60以上,60个农民围住木厂或几十个农民围住
一堆金矿,大大不爽,60个以上农民耕田是可以,但耕田效率比较低还是不爽。所以要讲求资源平衡性了。个人建议
伐木与耕田分配不要超50,采金控制在25以下。所以征服者尴尬,消耗太多food嘛,影响肉盾兵种建造。列段能很好调
整农民工作分配规则,免得造成某种资源过多或某种资源过少
规则要点
1  加入计时器来回循环,防止资源处于临界点时来回分配农民影响效率
2  农民采摘同种资源分配比例不要太大,以免太多农民走动
例子一
----------------------------------------------------------------------------------------
;通常处于封建或城堡初期
(defrule
    (timer-triggered 1)
    (unit-type-count-total villager < 40)
    (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage  44)
    (set-strategic-number sn-food-gatherer-percentage   45)
    (set-strategic-number sn-gold-gatherer-percentage     8)
    (set-strategic-number sn-stone-gatherer-percentage   3)
    (disable-timer 1)
    (enable-timer 1 60)
)
(defrule
    (timer-triggered 1)
    (wood-amount > 500)
    (food-amount > 500)
    (gold-amount > 500)
    (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage 40)
    (set-strategic-number sn-food-gatherer-percentage  35)
    (set-strategic-number sn-gold-gatherer-percentage  20)
    (set-strategic-number sn-stone-gatherer-percentage  5)
    (disable-timer 1)
    (enable-timer 1 60)
)
(defrule
    (timer-triggered 1)
    (wood-amount < 500)
    (food-amount < 500)
    (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage  43)
    (set-strategic-number sn-food-gatherer-percentage  40)
    (set-strategic-number sn-gold-gatherer-percentage  12)
    (set-strategic-number sn-stone-gatherer-percentage  5)
     (disable-timer 1)
    (enable-timer 1 60)
)
(defrule
   (timer-triggered 1)
    (wood-amount > 500)
    (food-amount < 500)
   (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage 32)
    (set-strategic-number sn-food-gatherer-percentage  45)
    (set-strategic-number sn-gold-gatherer-percentage  20)
    (set-strategic-number sn-stone-gatherer-percentage  3)
     (disable-timer 1)
    (enable-timer 1 60)
)
(defrule
    (timer-triggered 1)
    (wood-amount < 500)
    (food-amount > 500)
   (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage 47)
    (set-strategic-number sn-food-gatherer-percentage  30)
    (set-strategic-number sn-gold-gatherer-percentage  20)
    (set-strategic-number sn-stone-gatherer-percentage 3)
     (disable-timer 1)
    (enable-timer 1 60)
)
(defrule
     (timer-triggered 1)
    (wood-amount > 500)
    (food-amount > 500)
    (gold-amount < 500)
   (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage 35)
    (set-strategic-number sn-food-gatherer-percentage 35)
    (set-strategic-number sn-gold-gatherer-percentage  25)
    (set-strategic-number sn-stone-gatherer-percentage  5)
    (disable-timer 1)
    (enable-timer 1 60)
)
(defrule
     (timer-triggered 1)
    (wood-amount > 500)
    (food-amount > 500)
    (gold-amount > 500)
    (stone-amount > 900)
   (dropsite-min-distance gold < 7)
=>
    (set-strategic-number sn-wood-gatherer-percentage  40)
    (set-strategic-number sn-food-gatherer-percentage  40)
    (set-strategic-number sn-gold-gatherer-percentage  18)
    (set-strategic-number sn-stone-gatherer-percentage  2)
    (disable-timer 1)
    (enable-timer 1 60)
)
                      .
                      .
                      .
---------------------------------------------------------------------------------------------------
3 一些策略值
例子二
---------------------------------------------------------------------------------------------------
(defrule
    (true)
=>
    (set-strategic-number sn-maximum-food-drop-distance      20)   ;最大采集食物距离
    (set-strategic-number sn-maximum-hunt-drop-distance      15)   ;最大狩猎距离
    (set-strategic-number sn-maximum-wood-drop-distance       6)   ;最大采集木材距离
    (set-strategic-number sn-maximum-gold-drop-distance         6)   ;最大采集黄金距离
    (set-strategic-number sn-maximum-stone-drop-distance       6)   ;最大采集石头距离
    (disable-self)
)
(defrule
    (strategic-number sn-maximum-wood-drop-distance == 4)
    (or (unit-type-count 218 < 8)
          (unit-type-count 123 < 8)
    )
=>
(set-strategic-number sn-maximum-wood-drop-distance           6)   ;最大采集木材距离
)
(defrule
    (strategic-number sn-maximum-wood-drop-distance == 6)
    (or (unit-type-count 218 >= 8)
          (unit-type-count 123 >= 8)
    )
=>
(set-strategic-number sn-maximum-wood-drop-distance           4)   ;最大采集木材距离,缩短距离提高效率
)
--------------------------------------------------------------------------------------------------------------------
最大采集食物距离设大一些防止城镇或磨坊被拆后留下大片农田无人耕种。
最大采集黄金、石头距离不能设置过小,防止AI遇到一些横列形的矿而将矿场建在一端,造成最后一块矿
离矿场太远,而不去开采;也不能设为-1,防止矿场没有建好时或矿场被拆,AI安排农民去开采,效率低。
最大采集木材距离为何加两条规则?
大部分建筑都依赖木材,第1条规则通常处于封建到城堡之间,很多建筑农田还没有建造,这个期间wood缺乏,比较容
易造成第2第3第4木厂延迟建造,但又不能在建造建筑物时加条指令wood-amount(木材大于多少),这样会影响到直城或
农田建造。同时也可防止城镇受攻击木厂被拆,而又没有足够木头重建木厂,的尴尬局面。


回复

使用道具 举报

4

主题

0

精华

3251

积分

公爵

耕战
600
鹰币
285
天龙币
0
回帖
23
附庸关系0
 楼主| 发表于 2012-1-29 17:18:29 | 显示全部楼层
本帖最后由 忠实帝国粉丝 于 2012-1-29 22:31 编辑

第四篇 进攻方式

(一)士兵状态分类:
1 防守士兵 AI没有执行进攻指令时,处于待机状态。通常处在兵厂旁边或城镇范围内,或城镇受攻击时参于防守的士兵
2 进攻士兵 当然是编入部队进攻敌人的士兵了
3 停顿士兵 执行进攻命令时一顿一顿的士兵
   停顿士兵产生原因要从AI给士兵下命令的方法说明:士兵下命令的方法:
(1)AI进攻敌人是先以视野范围内敌人单位为目标发动进攻
(2)其次以视野范围内敌人建筑物为目标发动进攻当
(3)再次视野范围内没有发现敌人单位或建筑就以探测时发现的敌方建筑发动进攻
      当以目标发动进攻时,进攻士兵中途遇到敌人单位会无视一直往目标方向进军。当士兵以建筑物为目标,在目标建筑
物附近遭遇到敌人士兵时(大概4格视野范围内)会优先攻击敌人士兵。当进攻士兵对目标发动进攻,而这个目标消失或被
摧毁,进攻士兵就会处于停顿状态,而停顿状态士兵又迟迟不能再编入进攻士兵中,又不能编入防守士兵就严重影响AI的进
攻与防守的效率。人机对战时由于玩家会尽量避免士兵死亡,并龟缩在城堡炮塔附近对抗AI,AI就会有很好的目标发动
进攻潮水般涌来。(应该没有玩家在优势没那么大时拉军队去跟AI野战吧,多多不够死;优势大时,都是直接进攻AI城镇)
两个同样优秀AI对战中,(资源分布差异不大情况下)就经常在两者城镇之间发生缠斗,谁的经济保证好,谁能更好调动
士兵就是取胜关键。

(二)进攻方式分类
1 集队进攻
(调动进攻士兵)即是将士兵集结成队再向敌人目标进攻。
优点:
应该没有什么优点,少量士兵集队或人机对战可能还有一点可取之处,一大队涌过来还是有一定威胁力。
缺点:
(1) 胡乱编队 玩家是编队之后再进攻,比较好控制,不过AI将士兵编队不是按兵种速度、远近程等编队,随机编队,当将
      骑士与冲车编成一队、轻骑与驽手编成一队等影响兵种战斗力发挥的就呕气了。
(2) 进攻动作反应缓慢 如果有条规则判断到敌人兵少要马上发动进攻,而集结部队需要一定时间加上与敌人城镇也有一段
     距离,这样就比较延误战机了。
(3) 浪费火力 集队进攻攻击任何目标都是一整队一起行动,那怕敌人是一个濒血的投矛系。如果能写一段规则到达敌人目
     标时分开攻击,XD了呵呵!
(4) 对机器配置较高 编队士兵数量过大、编队的队列数过多、多个AI对战而每个AI都有采用这种进攻方式“卡”回到286时代了
(5) 缠斗中容易产生停顿士兵(最致命的一点)
使用这种进攻方式的AI: 电脑默认AI


2 分散进攻 (调动进攻士兵) 集队进攻的分开版
优点:
(1)每个士兵意单独控制各自向目标进攻。兵多与兵种速度相近的时候,进攻力一流。AI对战中用于早期、中期
     进攻的首选方式。
(2)多个AI对战时能按照(sn-attack-winning-player 攻击积分领先游戏者)专攻其中一个AI。3V3以上AI的对战的首选方式。
缺点:缠斗中容易产生停顿士兵(最致命的一点)
使用这种进攻方式的AI: 只有The Horde真正采用 其中它的匈奴完全就体现到这种方式的威力

3 城镇范围进攻(TSA) (调动防守士兵)
优点:
虽然都会产生停顿士兵相对其它方式而言进攻效率最好一种。(一个花环就能成就最高点,太不公平了!!!)
缺点:
(1)不能有太多士兵参于 最好不要超过110,80-90为佳,参于士兵太多时,产生的停顿士兵更多,达到大概150
      以上时甚至罢工。(好像不是缺点吧,没人去造这么多士兵吧)
(2)太过后期才能使用 要等城堡后期城镇成型才能才用。不然就造成建筑物过于分散,兵厂过于分散对于防
    守与进攻都不利的。(遇到强势民族还没到出场,就被干掉了)
(3)不能专攻其中一个AI 顾名思义"范围"当然是发现敌人建筑就进攻了。
使用这种进攻方式的AI: 自从我教程发表以后很多AI都有采用TSA了

4 敌视回应距离进攻 (调动防守士兵)
策略值sn-enemy-sighted-response-distance的设定。
这个策略值只能调动没有目标的闲置防守士兵,比较被动的方式,只是城镇范围进攻与防守城镇时的补充。兵多时设为40
左右为最佳,不要设置过大。设置过大也不会有士兵去执行,实践中只会按士兵的基本视野攻击敌人,等于把这个策略
值废了。不防在开启TSA时改大一些,可以提高一下效率。

       集队进攻与分散进攻在进攻过程中发生缠斗时很容易产生停顿士兵。在进攻到敌方城镇附近而敌方士兵大幅度减少,
这时视野范围内目标减少,进攻士兵就会以建筑物为目标进攻,停顿士兵会减少,进攻效率又会马上提高。毕竟建筑物耐
抗进攻士兵不容易丢失目嘛。为何AI会调动防守士兵会比调动进攻士兵要好?帝国的AI真的很蠢、很多BUG没有很好的办法
解决,这个游戏可能当初只是设计玩家之间对战,没有考虑到会有人热衷于AI吧!如果AI能做到有玩家一半聪明,都怕很少人
打AI了!

(三)进攻方式设定

       其实进攻方式的设定是改变一些策略值的设定 指令attack-now可以只是一个摆设,它要结合(sn-percent-attack-soldiers
攻击士兵比率)使用,等同于(sn-number-attack-groups 攻击部队数量)

例子一 主要控制士兵策略值的基准(不进攻状态)(以下有些策略值如要问我理论鉴于我水平有限,我也不能很好解释,
实践中能提高一定效率)
-------------------------------------------------------------------------------------------------------------------------------------------------
;第1,2组为可按一定条件更改
(defrule
(true)
=>
(set-strategic-number sn-percent-attack-soldiers                     0) ; 攻击士兵比率
(set-strategic-number sn-number-attack-groups                     0) ; 攻击部队数量
(set-strategic-number sn-maximum-attack-group-size             1) ; 最大进攻部队规模
(set-strategic-number sn-minimum-attack-group-size              1) ; 最小进攻部队规模
(set-strategic-number sn-number-defend-groups                    1) ; 防御部队数量
(set-strategic-number sn-maximum-defend-group-size            1) ; 最大防御部队规模
(set-strategic-number sn-minimum-defend-group-size             1) ; 最小防御部队规模
(set-strategic-number sn-enemy-sighted-response-distance  20) 敌视回应距离
(set-strategic-number sn-group-form-distance                        0) ; 部队组织距离
(set-strategic-number sn-attack-group-gather-spacing            0) ; 攻击部队集合点留间隔
(set-strategic-number sn-task-ungrouped-soldiers                   0) ; 指派未归队士兵 不开启进攻时可加一个计时器循环改
                                                                                                   ;变为1, 以免兵多挡路
(set-strategic-number sn-attack-winning-player                      0) ; 攻击积分领先游戏者
(set-strategic-number sn-attack-winning-player-factor            0) ; 攻击积分领先游戏者因子
(set-difficulty-parameter ability-to-maintain-distance                0) ; 持距力 兵多有优势时改为100
(disable-self)
)
(defrule
(true)
=>
(set-strategic-number sn-maximum-town-size                       20) ; 最大城镇规模
(disable-self)
)

;3,4组为一次性设置
(defrule
(true)
=>
(set-strategic-number sn-group-commander-selection-method 0) 部队长选择方式
(set-strategic-number sn-percent-enemy-sighted-response   100) ; 敌视回应比率
(set-strategic-number sn-attack-separation-time-randomness    0) ; 攻击间隔时间随机性
(set-strategic-number sn-allow-civilian-defense                           1) ; 容许村民自卫
(set-strategic-number sn-gather-defense-units                           0) ; 聚集防御部队
(set-strategic-number sn-consecutive-idle-unit-limit                   0) ; 部队闲置时限
(set-strategic-number sn-build-frequency                                  1) ; 每次生产单位或研究科技间所进行的更替数量
(set-strategic-number sn-scaling-frequency                               0) ; 估算频率
(set-strategic-number sn-target-evaluation-siege-weapon      100) ; 攻城武器附加目标评估等级
(disable-self)
)
(defrule
(true)
=>
(set-difficulty-parameter ability-to-dodge-missiles                     100) ; 回避力
(set-strategic-number sn-coop-share-information                        1) ; 同盟计算机游戏者共享信息
(set-strategic-number sn-coop-share-attacking                           1) ; 同盟计算机游戏者合作攻防
(set-strategic-number sn-coop-share-attacking-interval              20) ; 同盟计算机游戏者合作攻防间隔时间
(disable-self)
)
-------------------------------------------------------------------------------------------------------------------
例子二 集队进攻

要点:要组织大规模的部队将组织距离、集合间隔点改大些。共要改变5个值
(defrule
=>
(set-strategic-number sn-number-attack-groups                     200) ; 攻击部队数量
(set-strategic-number sn-maximum-attack-group-size               20) ; 最大进攻部队规模
(set-strategic-number sn-minimum-attack-group-size                  4) ; 最小进攻部队规模
(set-strategic-number sn-group-form-distance                           60) ; 部队组织距离
(set-strategic-number sn-attack-group-gather-spacing              20) ; 攻击部队集合点留间隔
)
或使用指令attack-now
(defrule
=>
(set-strategic-number sn-percent-attack-soldiers                     100) ; 攻击士兵比率
(set-strategic-number sn-maximum-attack-group-size               20) ; 最大进攻部队规模
(set-strategic-number sn-minimum-attack-group-size                  4) ; 最小进攻部队规模
(set-strategic-number sn-group-form-distance                           60) ; 部队组织距离
(set-strategic-number sn-attack-group-gather-spacing              20) ; 攻击部队集合点留间隔
(attack-now)
)
-----------------------------------------------------------------------------------------------------
例子三 分散进攻
要点:改变1个值 最大进攻部队规模、最小进攻部队规模、部队组织距离、攻击部队集合点留间必须基准
(defrule
=>
(set-strategic-number sn-number-attack-groups                      200) ; 攻击部队数量
)
或使用指令attack-now
(defrule
=>
(set-strategic-number sn-percent-attack-soldiers                       100) ; 攻击士兵比率
(attack-now)
--------------------------------------------------------------------------------------------
例子四 城镇范围进攻(TSA) 逐步扩大城镇范围,敌视回应距离改大一些配合一下。
注意策略值攻击士兵比率与攻击部队数量为改变士兵状态为进攻状态,不能改大,不然就没有士兵参加TSA了。
很多AI都会加(not( town-under-attack))这条指令,如果遇到对方AI也采用TSA就麻烦了,当己方AI万一处于弱势,就比较难反攻了。
(defrule
=>
(set-strategic-number sn-enemy-sighted-response-distance   44) ; 敌视回应距离
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number  sn-maximum-town-size < 40)
=>
(set-strategic-number sn-maximum-town-size 40)
(chat-to-all "Town-size-attack:40")
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size == 40)
=>
(set-strategic-number sn-maximum-town-size 50)
)
       .
       .
       .
或 直接将城镇范围设为999。转下话题 集队进攻与分散进攻都会由近到远续蚕食对方建筑物,同一距离内就会优会攻击
对方带攻击性建筑物。而城镇范围进攻不会由近到远续蚕食对方建筑物,第一时间攻击对方带攻击性建筑物。所以上面
规则就写续步增大城镇范围加而限制。如果是1V1时直接开大城镇范围会更强大,多个AI对战时就不好了,反效果.

(defrule
=>
(set-strategic-number sn-enemy-sighted-response-distance 44) 敌视回应距离
(set-strategic-number sn-maximum-town-size 999)
)
例子五 地面部队大于90时城镇范围进攻与其它进攻方式结合按各百分比分配
(defrule
(soldier-count > 90)
=>
(set-strategic-number sn-number-attack-groups                  45) ; 攻击部队数量
(set-strategic-number sn-enemy-sighted-response-distance 44) ; 敌视回应距离
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size < 40)
=>
(set-strategic-number sn-maximum-town-size 40)
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size == 40)
=>
(set-strategic-number sn-maximum-town-size 50)
)
       以上所举的改变攻击方式的例子(例子二--例子五)只是一个基本方向,实际中还要根据很多的指令进行判断,
进行改变。同时可以加一条限制指令或计时器防止AI长期读取规则,提高游戏流畅度。

(四) 策略值(sn-special-attack-type1首位特殊攻击类别)
      很多AI设置都误解了,这个策略值只能设为1(修道院)时有效,设其它数字、单位名称、ID都无效。如果有一个AI造很多
修道院(应该没有吧),就爽了,这个策略值会加快AI的进攻效率,减少停顿士兵产生。

       地形、资源分布最能影响AI的发挥,我个人比较喜欢采用2V2方式校验AI强弱,这样可以减少地形、资源对AI影响。没有
最强的AI,只有最强的民族。封快的民族就很有优势了,进攻永远是最好的防守,万一来个农田BUG就笑了。其中以匈奴第
一、中国第二(如果诸葛驽射程加1中国就有可能坐头把交椅了)、往后就很难界定了,遇到这两个民族很可能升级帝王的机
会也没有!



回复

使用道具 举报

592

主题

11

精华

8万

积分

教皇

耕战
14500
鹰币
104418
天龙币
0
回帖
7419

翔鹰十周年帝国Online纪念章翔鹰建站十周年纪念章一级帝国勋章二级嘉禾勋章俾斯麦勋章十字军勋章火十一水王

附庸关系2
发表于 2012-1-29 23:04:25 | 显示全部楼层
本帖最后由 weiliqiang 于 2012-1-29 23:04 编辑

回复 忠实帝国粉丝 的帖子

楼主好认真,好勤奋,付出会有回报的,支持一个
回复

使用道具 举报

15

主题

3

精华

3万

积分

征服者

耕战
6612
鹰币
4914
天龙币
0
回帖
735

三级翔鹰勋章雏鹰勋章第七届火箭筒杯最佳新人翔鹰建站十周年纪念章

附庸关系0
发表于 2012-1-30 11:38:30 | 显示全部楼层
再看看……我学会了进攻篇了
滑稽。
回复

使用道具 举报

6

主题

0

精华

507

积分

子爵

耕战
47
鹰币
340
天龙币
0
回帖
121
附庸关系0
发表于 2012-2-2 20:27:39 | 显示全部楼层
这么好的教程一定要顶
回复

使用道具 举报

52

主题

2

精华

2万

积分

圣徒

耕战
4903
鹰币
79
天龙币
0
回帖
1043

翔鹰建站十周年纪念章二级翔鹰勋章三级嘉禾勋章二级帝国勋章

附庸关系0
发表于 2012-2-2 21:40:56 | 显示全部楼层
领教了
内疚、自责、今生有愧……
回复

使用道具 举报

0

主题

0

精华

11

积分

扈从

耕战
0
鹰币
593
天龙币
0
回帖
3
附庸关系0
发表于 2012-2-19 09:07:53 | 显示全部楼层
很有帮助!谢谢!
回复

使用道具 举报

6

主题

0

精华

163

积分

男爵

耕战
15
鹰币
23
天龙币
0
回帖
34
附庸关系0
发表于 2012-3-15 21:48:17 | 显示全部楼层
楼主真是下个很大的功夫,敬佩~谢谢了,有时间会学习的!
回复

使用道具 举报

6

主题

0

精华

163

积分

男爵

耕战
15
鹰币
23
天龙币
0
回帖
34
附庸关系0
发表于 2012-3-15 21:54:20 | 显示全部楼层

楼主真是下个很大的功夫,敬佩~谢谢了,有时间会学习的!
回复

使用道具 举报

1

主题

0

精华

16

积分

骑士

耕战
-10
鹰币
303
天龙币
0
回帖
15
附庸关系0
发表于 2012-7-12 20:39:24 | 显示全部楼层
回复 忠实帝国粉丝 的帖子

从你编写的教程中,我看出了你的勤奋、认真和辛苦。非常好!
回复

使用道具 举报

156

主题

1

精华

4445

积分

公爵

耕战
441
鹰币
22
天龙币
0
回帖
2449

二级翔鹰勋章

附庸关系0
发表于 2012-7-12 23:03:42 | 显示全部楼层
支持啊。。楼主好人(这话肿么这么熟悉)
回复

使用道具 举报

96

主题

0

精华

2万

积分

宗主教

耕战
4464
鹰币
2237
天龙币
48
回帖
2280

翔鹰建站十周年纪念章三级翔鹰勋章

附庸关系9
发表于 2012-7-12 23:07:54 | 显示全部楼层
回复 超级喜羊羊 的帖子

从你回覆中,我看出了你當自己是老師。非常好!
回复

使用道具 举报

96

主题

0

精华

2万

积分

宗主教

耕战
4464
鹰币
2237
天龙币
48
回帖
2280

翔鹰建站十周年纪念章三级翔鹰勋章

附庸关系9
发表于 2012-7-12 23:08:19 | 显示全部楼层
回复 黑心查理 的帖子

像貼吧要種子的= =
回复

使用道具 举报

156

主题

1

精华

4445

积分

公爵

耕战
441
鹰币
22
天龙币
0
回帖
2449

二级翔鹰勋章

附庸关系0
发表于 2012-7-12 23:09:47 | 显示全部楼层
回复 WTYTONY 的帖子

中了。。。。
————
顶个,支持楼主
回复

使用道具 举报

0

主题

0

精华

11

积分

骑士

耕战
0
鹰币
55
天龙币
0
回帖
8
附庸关系0
发表于 2012-8-13 19:28:50 | 显示全部楼层
谢谢楼主谢谢楼主
回复

使用道具 举报

2

主题

0

精华

86

积分

骑士

耕战
0
鹰币
134
天龙币
0
回帖
28
附庸关系0
发表于 2012-8-17 08:21:45 | 显示全部楼层
经济建筑中说看图说话,图怎么没有啊
回复

使用道具 举报

307

主题

5

精华

-4万

积分

流徒

耕战
-9331
鹰币
-9084
天龙币
0
回帖
5289

二级帝国勋章OL截图大赛冠军冒险七王者

附庸关系0
发表于 2013-4-28 14:09:09 本帖来自手机 | 显示全部楼层
强大
回复

使用道具 举报

688

主题

30

精华

8万

积分

教皇

耕战
10902
鹰币
542472
天龙币
512
回帖
7008

翔鹰建站十周年纪念章翔鹰十周年帝国Online纪念章特级帝国勋章特级翔鹰勋章特级嘉禾勋章特级皇家勋章鹰之王者雄鹰勋章第四届火箭筒杯最佳战役第五届火箭筒杯最佳战役第九届火箭筒杯最佳战役第二届战鹰杯单人赛季军第八届战鹰杯单人赛季军鸽子勋章

附庸关系12
发表于 2014-7-5 20:37:47 | 显示全部楼层
这篇教程真不错

点评

TT这属于挖坟不。。。  发表于 2014-7-5 21:06
回复

使用道具 举报

本版积分规则

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

GMT+8, 2024-4-28 01:45 , Processed in 0.212736 second(s), 224 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

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

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