Ai Script Builder的进攻代码里为什么有两行Attack Now?
(defrule(game-time > 1)
(defend-soldier-count >= 1)
=>
(attack-now)〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉?
(enable-timer 10 1)
(disable-self)
)
(defrule
(timer-triggered 10)
(defend-soldier-count >= 1)
=>
(set-strategic-number sn-number-attack-groups 1)
(set-strategic-number sn-maximum-attack-group-size 1)
(set-strategic-number sn-minimum-attack-group-size 1)
(set-strategic-number sn-percent-attack-soldiers 1)
(set-strategic-number sn-attack-intelligence 1)
(attack-now)〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉?
(disable-timer 10)
(enable-timer 10 1)
) 第一個規則是開始首次進攻同時運行計時器,你可以看到該規則還有(disable-self),所以只會運行一次;第二個規則是由計時器去啟動,並且會一直運行下去,亦即第二次起的持續進攻。 狂~劇情狂 发表于 2015-2-12 08:45
第一個規則是開始首次進攻同時運行計時器,你可以看到該規則還有(disable-self),所以只會運行一次;第二個 ...
那也就是说 首次进攻不受后面的最大小部队规模设置影响?? 狂~劇情狂 发表于 2015-2-12 08:45
第一個規則是開始首次進攻同時運行計時器,你可以看到該規則還有(disable-self),所以只會運行一次;第二個 ...
我感觉第一行Attack Now代码完全多余有木有! 12345677 发表于 2015-2-12 09:25
我感觉第一行Attack Now代码完全多余有木有!
刪了就只是遲十秒進次,可是寫多一句也沒太多影響…… 第一个规则的作用是一是唤起进攻循环,即唤起第二个规则;二是进行首次攻击.
所谓"多余不多余",就看你何种需求了.
看如下
;Attack Now
(defrule
(game-time > 20)
(defend-soldier-count >= 0)
=>
(attack-now)
(enable-timer 10 240)
(set-strategic-number sn-number-attack-groups 0)
(set-strategic-number sn-percent-attack-soldiers 0)
(disable-self)
)
(defrule
(timer-triggered 10)
(defend-soldier-count >= 0)
=>
(attack-now)
(disable-timer 10)
(enable-timer 10 240)
)
以上 AI, 第一次攻击在游戏 20秒,然后每隔 240 秒攻击一次.完全不多余.去掉第一个 attack-now, 则游戏 20 秒时不会发起攻击 狂~劇情狂 发表于 2015-2-12 09:28
刪了就只是遲十秒進次,可是寫多一句也沒太多影響……
(defrule
(game-time > 240)
=>
(enable-timer 10 120)
(disable-self)
)
(defrule
(timer-triggered 10)
(defend-soldier-count >= 9)
=>
(set-strategic-number sn-number-attack-groups 9)
(set-strategic-number sn-maximum-attack-group-size 40)
(set-strategic-number sn-minimum-attack-group-size 1)
(set-strategic-number sn-percent-attack-soldiers 100)
(set-strategic-number sn-maximum-town-size 255)
(chat-to-all "Fuck!")
(attack-now)
(disable-timer 10)
(enable-timer 10 120)
)
(defrule
(game-time > 240)
=>
(enable-timer 10 120)
(disable-self)
)
(defrule
(timer-triggered 10)
(attack-soldier-count < 9)
=>
(set-strategic-number sn-maximum-town-size 16)
(chat-to-all "Shit!")
(disable-timer 10)
(enable-timer 10 120)
)
其实这个才是本体。。。表示精简之后爽多了。。。开始因为那多出来的一次Attack Now 导致我的Ai在防御判断下依然持续发动进攻。。。坑的我一愣一愣的 卧龙先生 发表于 2015-2-12 09:39
;Attack Now
(defrule
(game-time > 20)
第一次attack 不受后面的进攻规模设置控制。。。不太好用 其實你可以在其他地方以至第一個規則內也設定那堆策略值就行,反正又沒突破代碼行數限制 狂~劇情狂 发表于 2015-2-12 09:52
其實你可以在其他地方以至第一個規則內也設定那堆策略值就行,反正又沒突破代碼行數限制
(defrule
(food-amount < 1125)
(commodity-buying-price food < 33)
(can-buy-commodity food)
=>
(chat-local-to-self "进口食物")
(release-escrow gold)
(buy-commodity food)
)
该代码被触发时市场里的食物价格在150+左右。。。
为什么检查价格的代码被Ai无视了呢?? 狂~劇情狂 发表于 2015-2-12 09:52
其實你可以在其他地方以至第一個規則內也設定那堆策略值就行,反正又沒突破代碼行數限制
怎样让Ai在游戏一开始 不派遣探索工人的情况下获得所有敌方视野呢? 本帖最后由 12345677 于 2015-2-12 19:56 编辑
狂~劇情狂 发表于 2015-2-12 09:52
其實你可以在其他地方以至第一個規則內也設定那堆策略值就行,反正又沒突破代碼行數限制
(defrule
(game-time > 0)
(defend-soldier-count >= 9)
=>
(attack-now)
(enable-timer 10 300)
(disable-self)
)
(defrule
(timer-triggered 10)
(defend-soldier-count >= 9)
=>
(set-strategic-number sn-number-attack-groups 9)
(set-strategic-number sn-maximum-attack-group-size 40)
(set-strategic-number sn-minimum-attack-group-size 1)
(set-strategic-number sn-percent-attack-soldiers 100)
(set-strategic-number sn-maximum-town-size 128)
(chat-to-all "Fuck!")
(attack-now)
(disable-timer 10)
(enable-timer 10 300)
)
(defrule
(game-time > 0)
(defend-soldier-count >= 9)
=>
(attack-now)
(enable-timer 10 300)
(disable-self)
)
(defrule
(timer-triggered 10)
(attack-soldier-count < 9)
=>
(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 32)
(chat-to-all "Shit!")
(disable-timer 10)
(enable-timer 10 300)
)
我明明设置的300秒开始判断 如果不是Fuck 就一定是Shit 可为什么对战中Ai直到13分钟左右时才开始Fuck?并且之前一直都没有Shit。
打完后看录像发现6分30秒左右发动了一次对另一个电脑的进攻 但是没有触发Fuck!效果
攻击间隔随机因子造成的误差有这么大吗?具体是怎样计算的呢??
可以的話希望你不要用這些粗鄙詞彙作為訊息測試例子……
針對 (attack-now) 的循環, Userpatch 有 (up-reset-attack-now) 這一新增動作可以即時註銷。
第一、三條規則完全相同,不知為何你要重寫一次。
十三分鐘的問題,是因為你首條規則同時帶上了九名士兵的條件,實際就是發展去到九人軍隊再加五分鐘的時間,而十三分鐘就差不多了,第四條規則自然也不可能在此前觸發。
另外你的進攻方法似乎是混用了 TSA 、攻擊隊伍與 attack-now ,但 TSA 會因為 100% 的 sn-percent-attack-soldiers 影響而失效, attack-now 與攻擊隊伍的判定也會互相抵消……此外同樣因為 sn-percent-attack-soldiers 影響,第二條規則運行後基本要等第四條規則亦運行( sn-percent-attack-soldiers 設為 0 )才有可能再被判定成立,而這亦為造成時間差的另一可能原因。
本帖最后由 12345677 于 2015-2-12 22:28 编辑
狂~劇情狂 发表于 2015-2-12 22:17
可以的話希望你不要用這些粗鄙詞彙作為訊息測試例子……
針對 (attack-now) 的循環, Userpatch 有 (up- ...
。。。基本攻击方式保持Tsa 沿用AttackNow是因为考虑到海战运输。。。
那么我把进攻比例调整为50%就可以了吧?
然后攻击队伍不需要AttackNow就可以自行发动进攻吗??
可是那样的话 AttackNow最多好像只能支持40人的进攻队伍把?
设定攻击队伍规模 最多可以支持多少人同时进攻呢?
為了保持 TSA 的有效性, sn-percent-attack-soldiers 還是別設 100 為宜;攻擊隊伍與 attack-now 為不同進攻方法,前者毋須 attack-now 就會進攻,單支隊伍的部隊數應該仍受限於 40 人,但你可以透過設置隊伍的數量來克服它,甚至可以造成同時發動 200+ 人進攻,唯一問題就是當隊伍數較多時,每支隊伍抽調人員時可能彼此重複,導致 minimum-attack-group-size 未真正生效。 狂~劇情狂 发表于 2015-2-12 22:43
為了保持 TSA 的有效性, sn-percent-attack-soldiers 還是別設 100 為宜;攻擊隊伍與 attack-now 為不同進 ...
AttackNow最多支持多少人的进攻呢 如果可以支持120以上我就不设定攻击队伍了。。。麻烦死 attack-now 基本上是每運行一次就從攻擊士兵裡抽選成員進攻,其實持續運行的話嚴格來說沒有單位上限,可以做到上百千的部隊都在進攻,但這樣會相當卡機,且會引致前線部隊反應不佳。
页:
[1]