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

[求助] 关于Beginner AI以及up group语句的疑问。

[复制链接]

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
 楼主| 发表于 2020-2-26 11:32:43 | 显示全部楼层 |阅读模式
本帖最后由 春田一九零三 于 2020-2-26 11:43 编辑

Beginner AI中,有一组语句这样:    (up-create-group 0 0 c: retreat-group)————定义撤退组,并把本地结果存入
    (up-set-group search-local c: retreat-group)————好像效果同上一句
    (up-modify-group-flag 0 c: retreat-group)
    (up-modify-group-flag 1 c: retreat-group)
    (up-reset-group c: retreat-group)————撤销撤退组

对这段的意思不太理解。

up-modify-group-flag 这句经过测试,作用也不太理解
注解上说:Modify the ctrl group flag for units in a search group.
• Modify the ctrl group flag for units in a search group. You must manage the group flag carefully in order to avoid unexpected situations. Please remove the group flag before modifying a flagged search group. You can find units from a flagged search group using object-data-group-flag, which is set to the group id.

但实际上我无论怎么编号,都不能被检测flag的筛除语句影响
    (up-remove-objects search-local object-data-group-flag c:== retreat-group)

以上 retreat-group定义为9

望解答,谢谢!


                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
 楼主| 发表于 2020-2-26 12:07:30 | 显示全部楼层
本帖最后由 春田一九零三 于 2020-2-26 13:33 编辑

目前的感觉,up group主要是针对搜索结果直接进行操作。
如果要调用某个组的话,只能通过flag筛选后取得。

(up-create-group 0 0 c: 组号)
这句是建立组,一切组的编号、计算都的先有这个。不用时要及时reset,否则影响后续组的建立。比如建立了9号组,但是没有reset,下次就无法向组内写入单位。

(up-set-group search-local c: 组号)
这句大概只是为了区别引用本地和远方搜索结果。平时必要性不高

(up-modify-group-flag 1 c: 组的flag号)
这句似乎涉及到:组和组flag是两个概念,一个单位可以因为不同的搜索结果被编入不同的组,但是只能有一个组flag。组被撤销时,单位的组flag不会消失。
例如:
    (up-modify-group-flag 1 c: 9)
    (up-modify-group-flag 1 c: 8)

比如连续写的话,这个单位最后同时属于8组和9组(对8、9组计算单位时,他都计入),但是做flag判断时只算9的。后写的flag不能覆盖,只能先通过    (up-modify-group-flag 0 c: 9)。 清除第9组单位的flag(哪怕这个flag此时是8)

总结来说,组只是各组交换单位的缓冲区。组flag才是真正的分组结果。标记,消除flag,都需要先建立组,再把要加,要消除flag的单位通过筛选方式纳入组内。加的组flag号,就是当前组(缓冲区)的编号。
比如先筛选得到9组单位20个,给他们加flag(编号为flag9)。
再筛选得到8组单位12个(都在前面20个内),消除他们的flag,再加flag(编号为8)。
此时9组单位20个,8组单位12个。编号flag9的单位8个,flag8的单位12个。
组和组编号flag大概是上面这种关系?

望大佬们指教补充


                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

15

主题

0

精华

1033

积分

伯爵

耕战
175
鹰币
580
天龙币
0
回帖
188
附庸关系0
发表于 2020-2-26 20:14:47 | 显示全部楼层
本帖最后由 blazefires 于 2020-2-26 20:29 编辑

    (up-create-group 0 0 c: 0)———— 為local-search-list定一組群 等於人類按下ctrl+0編隊效果 所以最多只能40個 決定版不知道能否60個 這個我沒測試 至少玩家是可以60個
    (up-set-group search-local c: 0)———— 這個等等單獨講
    (up-modify-group-flag 0 c: 0) ———— 這個重要,為單位們先移除該組群標籤,防止出bug
    (up-modify-group-flag 1 c: 0) ———— 為單位們加入第0組標籤 等同於 人類按下ctrl+0鍵
    (up-reset-group c: 0)———— 你只是要編隊伍的話,這裡頭的單位數最好都清光光,上面提過了編隊最多就40個,不清光滿了就gg

簡單說 c: 0-9 groupid 就是等同於ctrl+1 ctrl+2 ctrl+3..... ctrl+0 這樣子,每隊最多40個

up-set-group這個是將group裡所有單位通通加入到local-list裡頭
意思是如果你只要加一個單位進local-list裡,就用(up-add-object-by-id search-local g: gl-store-id)
那一次性加入所有單位到local-list裡,就用(up-set-group search-local c: 0) 將第0隊伍內所有單位加入到local-list裡

评分

参与人数 1耕战 +5 鹰币 +20 收起 理由
newtonerdai + 5 + 20 分享交流

查看全部评分

回复

使用道具 举报

15

主题

0

精华

1033

积分

伯爵

耕战
175
鹰币
580
天龙币
0
回帖
188
附庸关系0
发表于 2020-2-27 14:54:32 | 显示全部楼层
想了一下,依據實用程度還是少用up-reset-group清光光
舉例子,今天命令第3組裡頭共有30個單位前往某地點,有2方法:

1.
(defrule
    (true)
=>
        (up-full-reset-search)
        (up-set-group search-local c: 3)
        (up-target-point 0 action-default -1 -1)
)

2.
(defrule
    (true)
=>
        (up-full-reset-search)
        (up-find-local c: ??? c: 240)
        (up-remove-objects search-local object-data-group-flag c:!= 3)
        (up-target-point 0 action-default -1 -1)
)

很明顯,第1方法執行速度快很多,效率高
回复

使用道具 举报

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
 楼主| 发表于 2020-2-27 23:58:06 | 显示全部楼层
up-set-group原来是选组存本地、远方的意思啊,谢谢了

                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
 楼主| 发表于 2020-2-29 23:24:02 | 显示全部楼层
本帖最后由 春田一九零三 于 2020-3-1 00:37 编辑
问题解决了,删除


                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
 楼主| 发表于 2020-2-29 23:25:59 | 显示全部楼层
本帖最后由 春田一九零三 于 2020-3-1 00:37 编辑

删除

                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

23

主题

1

精华

2万

积分

征服者

耕战
3880
鹰币
3530
天龙币
75
回帖
1132

翔鹰建站十周年纪念章二级翔鹰勋章第八届火箭筒杯最佳战役第八届火箭筒杯最佳新人

附庸关系0
 楼主| 发表于 2020-3-1 00:43:51 | 显示全部楼层
本帖最后由 春田一九零三 于 2020-3-1 01:03 编辑
blazefires 发表于 2020-2-27 14:54
想了一下,依據實用程度還是少用up-reset-group清光光
舉例子,今天命令第3組裡頭共有30個單位前往某地點, ...

原来是想问为什么第一种方法失效的。然后发现把组reset了。本来以为解决了,但是回头一想其实您这两种方法不是等价的。
见我2楼最后的兰字,组和组flag不是一个概念。也就是up-create-group建立的是组
up-modify-group-flag则是组Flag(相当于您说的Ctrl+0)

您的第一种方法是把组的单位30个存到本地搜索里。
而第二中方法是在本地搜索结果中筛选出把带有组flag的单位30个。相当于是把带组flag的单位30个存到本地搜索结果里。

差别在哪里呢?因为一个单位可以同时在很多组里,但是他只能拥有一个组flag。
所以如果等效起来ai就会出bug了,这是我今天测试ai时发现的。

                 【2021】天堂之路DE版                                   【2016】霭之坡的窈蔚之森
个人网盘
回复

使用道具 举报

本版积分规则

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

GMT+8, 2024-3-29 23:52 , Processed in 0.239108 second(s), 97 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

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

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