仰望坡大刀 发表于 2020-10-15 14:06:59

防止被敌人放风筝

本帖最后由 仰望坡大刀 于 2020-10-15 14:08 编辑

原理是,找到距离TC最远的部队,然后以这个点为中心搜索12格之内的敌人和我军,如果我军部队小于对方敌军的1半,那就撤退14格。 代码如下。可是为啥操作起来,电脑的部队一直在后撤,即使明显看出来我军部队已经远远大于对方的一半?是哪里出了问题?; ====================================================================
;-----------------------------regroup for large-amount enemy------------------------
; ====================================================================
(defrule
        (up-compare-goal regroup-large-amount != 1)
        (or        (up-timer-status regroup-large-amount-timer == timer-running)
        (up-point-distance my-precise-army-point-x gl-position-self-x c:<= 30))
=>
        (up-jump-rule 6)
)
(defrule
        (military-population > 1)
=>        (up-full-reset-search)
        (up-set-target-point gl-position-self-x)
        (up-filter-include cmdid-military -1 -1 -1)
        (up-find-local c: all-units-class c: 100)
        (up-remove-objects search-local object-data-action == actionid-explore)
        (up-remove-objects search-local object-data-order == orderid-explore)
        (up-remove-objects search-local object-data-class == monastery-class)
        (up-remove-objects search-local object-data-class == unpacked-trebuchet-class)
        (up-remove-objects search-local object-data-type == battering-ram)
        (up-remove-objects search-local object-data-type == bombard-cannon)
        (up-clean-search search-local object-data-distance search-order-desc)
        (up-set-target-object search-local c: 0)
        (up-get-point position-object my-precise-army-point-x))
(defrule
        (up-timer-status regroup-large-amount-timer != timer-running)
        (up-compare-goal my-precise-army-point-x > -1)
=>        (up-full-reset-search)
        (up-set-target-point my-precise-army-point-x)
        (up-filter-distance c: -1 c: 12)
        (up-filter-include cmdid-military -1 -1 -1)
        (up-find-local c: -1 c: 21)
        (up-find-remote c: -1 c: 40)
        (up-get-search-state gl-local-total))
(defrule
        (up-timer-status regroup-large-amount-timer != timer-running)
        (up-compare-goal gl-local-total > 0)
        (up-compare-goal gl-remote-total > 0)
        (up-compare-goal my-precise-army-point-x > -1)
=>
        (up-modify-goal army-value g:= gl-remote-total)
        (up-modify-goal army-value c:/ 2)
        (up-modify-goal army-value g:- gl-local-total))
(defrule
        (up-timer-status regroup-large-amount-timer != timer-running)
        (up-compare-goal gl-local-total > 0)
        (up-compare-goal gl-remote-total > 0)
        (up-compare-goal my-precise-army-point-x > -1)
        (up-compare-goal army-value >= 0)
        (up-point-distance my-precise-army-point-x gl-position-self-x c:> 30)
=>        (up-full-reset-search)
        (up-filter-include cmdid-military -1 -1 -1)
        (up-find-local c: -1 c: 120)
        (up-get-search-state gl-local-total))
(defrule
        (up-timer-status regroup-large-amount-timer != timer-running)
        (up-compare-goal gl-local-total > 0)
        (up-compare-goal my-precise-army-point-x > -1)
        (up-compare-goal army-value >= 0)
        (up-point-distance my-precise-army-point-x gl-position-self-x c:> 30)
=>       
        (set-goal regroup-large-amount 1)
    (up-copy-point regroup-point-x my-precise-army-point-x)
        (up-lerp-tiles regroup-point-x gl-position-self-x c: 14)
    (up-target-point regroup-point-x action-move formation-line stance-defensive)
    (chat-to-player my-player-number "retreating for large-amount enemy")
        (enable-timer regroup-large-amount-timer 20))
(defrule
    (goal regroup-large-amount 1)
        (up-point-distance my-precise-army-point-x gl-position-self-x c:<= 30)
=>
        (up-set-attack-stance -1 c: stance-aggressive)
        (set-goal regroup-large-amount 0)
)
(defrule
        (or (timer-triggered regroup-large-amount-timer)
        (up-compare-goal threat-time-goal > 6000))
=>
        (up-set-attack-stance -1 c: stance-aggressive)
        (disable-timer regroup-large-amount-timer)
)

wangzhen 发表于 2021-4-9 00:01:38

很多goal参数没有声明 默认是0 导致触发无效
页: [1]
查看完整版本: 防止被敌人放风筝