blazefires 发表于 2020-2-10 23:18:41

突破搜寻敌军单位数量时,最多只能搜40个的限制

本帖最后由 blazefires 于 2020-2-10 23:20 编辑

(load "UserPatchConst")
(defconst gl-local-total 100)
(defconst gl-local-last 101)
(defconst gl-remote-total 102)
(defconst gl-remote-last 103)
(defconst gl-TC-point-x 104)
(defconst gl-TC-point-y 105)
(defconst enemy-count 106)


(defrule
    (true)
=>
      (up-full-reset-search)
      (up-get-point position-self gl-TC-point-x)   ;取得自己TC座标(得先确保自己至少有一座TC)
      (up-set-target-point gl-TC-point-x)   ;假设从自己TC处作范围搜寻
      (up-filter-include 4 -1 -1 -1)   ;只搜寻会移动的军事单位
      (up-filter-distance c: -1 c: 30)   ;距离TC 30格范围内
      (set-goal enemy-count 0)   ;初始敌人单位数量为0
      (set-strategic-number sn-focus-player-number 2)   ;只搜索红色玩家的单位
)

(defrule
    (true)
=>
      (up-find-remote c: all-units-class c: 40)   ;先找第一批40个单位
      (up-get-search-state gl-local-total)
      (up-modify-goal enemy-count g:+ gl-remote-total)   ;储存找到的单位数量
      (up-reset-search 0 0 0 1) ;清除结果
      
      (up-find-remote c: all-units-class c: 40)   ;找第二批40个单位
      (up-get-search-state gl-local-total)
      (up-modify-goal enemy-count g:+ gl-remote-total);储存找到的单位数量
      (up-reset-search 0 0 0 1) ;清除结果

      (up-find-remote c: all-units-class c: 40)   ;找第三批40个单位
      (up-get-search-state gl-local-total)
      (up-modify-goal enemy-count g:+ gl-remote-total);储存找到的单位数量
      (up-reset-search 0 0 0 1) ;清除结果

      (up-find-remote c: all-units-class c: 40)   ;找第四批40个单位
      (up-get-search-state gl-local-total)
      (up-modify-goal enemy-count g:+ gl-remote-total);储存找到的单位数量
      (up-reset-search 0 0 0 1) ;清除结果

      (up-find-remote c: all-units-class c: 40)   ;找第五批40个单位
      (up-get-search-state gl-local-total)
      (up-modify-goal enemy-count g:+ gl-remote-total);储存找到的单位数量
      (up-reset-search 0 0 0 1) ;清除结果

      (up-find-remote c: all-units-class c: 40)   ;找第六批40个单位
      (up-get-search-state gl-local-total)
      (up-modify-goal enemy-count g:+ gl-remote-total);储存找到的单位数量
      (up-reset-search 0 0 0 1) ;清除结果
)

(defrule
    (true)
=>
    (up-reset-filters) ;彻底清除所有过滤
    (up-reset-search 0 0 1 1);彻底清除所有搜索结果
    (up-chat-data-to-self "敌人单位数量%d个" g: enemy-count);看TC附近敌人军事单位数量,取值范围0-240个
)

P.S. 1.这个范例於乌拉拉版本不能直接使用,已超过规则限制总数(决定版则OK)
       2.此范例搜敌人最多240个单位,完全还能再超过240继续搜索下去
       3.认真看的人应该注意到某个规则可以直接套迴圈解决,提升执行效率

newtonerdai 发表于 2020-2-11 17:10:00

本帖最后由 newtonerdai 于 2020-2-11 17:13 编辑

可以的。厉害。
1超过的不是规则数,是单规则字符数/行数吧?
2决定版最长多少字符/行数,提升了吗
3不懂就问,为什么wk不能用啊
4中间那个规则用up-jump-rule循环多次也能突破限制是吗

春田一九零三 发表于 2020-2-11 23:41:43

应该是remote只能支持40个吧。不限于敌军。用remote找自己也是一样。

blazefires 发表于 2020-2-12 12:53:58

newtonerdai 发表于 2020-2-11 17:10
可以的。厉害。
1超过的不是规则数,是单规则字符数/行数吧?
2决定版最长多少字符/行数,提升了吗


wk需要缩小规则行数
页: [1]
查看完整版本: 突破搜寻敌军单位数量时,最多只能搜40个的限制