12345677 发表于 2015-2-15 23:21:18

关于进攻时增加建筑最大建造数量的问题

本帖最后由 12345677 于 2015-2-15 23:24 编辑

(defrule
    (building-type-count farm less-than 64)
    (can-build farm)
=>
    (build farm)
)
这条代码限制普通状态下农田最大数量64
然后我想让Ai在发动进攻时
(defrule
    (game-time > 0)
    (defend-soldier-count >= 0)
=>
    (attack-now)
    (enable-timer 10 300)
    (disable-self)
)
(defrule
    (timer-triggered 10)
    (defend-soldier-count >= 80)
=>
    (set-strategic-number sn-number-attack-groups 8)
    (set-strategic-number sn-maximum-attack-group-size 40)
    (set-strategic-number sn-minimum-attack-group-size 5)
    (set-strategic-number sn-percent-attack-soldiers 50)
    (set-strategic-number sn-maximum-town-size 255)
    (set-strategic-number sn-mill-max-distance 255)
    (set-strategic-number sn-camp-max-distance 255)
    (chat-local-to-self "——attack——")
    (disable-timer 10)
    (enable-timer 10 80)
)
农田最大数量增至128
然后再进攻失败时
(defrule
    (game-time > 0)
    (defend-soldier-count >= 0)
=>
    (attack-now)
    (enable-timer 10 300)
    (disable-self)
)
(defrule
    (timer-triggered 10)
    (defend-soldier-count < 80)
=>
    (set-strategic-number sn-number-attack-groups 0)
    (set-strategic-number sn-maximum-attack-group-size 0)
    (set-strategic-number sn-minimum-attack-group-size 0)
    (set-strategic-number sn-percent-attack-soldiers 0)
    (set-strategic-number sn-maximum-town-size 16)
    (set-strategic-number sn-mill-max-distance 16)
    (set-strategic-number sn-camp-max-distance 16)
    (chat-local-to-self "——defend——")
    (disable-timer 10)
    (enable-timer 10 80)
)
恢复回64
该怎么办?


狂~劇情狂 发表于 2015-2-17 07:41:19

你的代碼全未使用目標變數,自然不可能針對攻擊狀況來調整農田數量。

為了達到此一目的,你可以先自行定義一個稱為 farm-amount 的目標欄常數,開局時用 set-goal 設為 64 ,發動進攻時用 up-modify-goal 改為 128 ,進攻失敗時用up-modify-goal 改回 64 ,另外建造規則裡的 building-type-count 動作也得改成 up-object-type-count 才能調用目標數值作為判定數量。

12345677 发表于 2015-2-17 07:58:02

狂~劇情狂 发表于 2015-2-17 07:41
你的代碼全未使用目標變數,自然不可能針對攻擊狀況來調整農田數量。

為了達到此一目的,你可以先自行定 ...

已用其他方法解决 不过还是谢谢了 欢迎来玩我的新Ai——上帝之鞭
页: [1]
查看完整版本: 关于进攻时增加建筑最大建造数量的问题