风雨技安 发表于 2012-6-25 01:13:19

写了一个分大小波进攻的AI,顺便提出几个问题,望高手解答,不胜感激

;分大小波进攻的AI:

(defconst G_YES 1)                     ;定义'是'
(defconst G_NO 2)                      ;定义'否'
(defconst if-attack-big 6)         ;定义是否为大进攻

(defrule                                       ;初始化
(true)
=>
(set-strategic-number sn-task-ungrouped-soldiers 1)
(set-strategic-number sn-number-explore-groups 1)
(set-strategic-number sn-percent-attack-soldiers 50)            ;初始化电脑的进攻部队为50%
    (chat-to-all "有作用了" )
(enable-timer 1 2400)                                       
(disable-self)
)

(defrule                                                 ;小波进攻规则(兵力50%)
(goal if-attack-big G_NO)
(timer-triggered 1)
(not (town-under-attack))
=>
(attack-now)
(set-goal if-attack-big G_YES)
(enable-timer 2 300)
(disable-timer 1)
(enable-timer 1 900)                                    
)

(defrule
(timer-triggered 2)
=>
(set-strategic-number sn-percent-attack-soldiers 90)
(disable-timer 2)                                 
)


(defrule                                                ;大波进攻规则(兵力90%)
(goal if-attack-big G_YES)
(timer-triggered 1)
;   (not (town-under-attack))
=>
(attack-now)
(set-goal if-attack-big G_NO)
(enable-timer 3 300)
(disable-timer 1)
(enable-timer 1 900)                                    
)

(defrule
(timer-triggered 3)
=>
(set-strategic-number sn-percent-attack-soldiers 50)
(disable-timer 3)
)


以上就是鄙人写的分大波小波循环进攻的AI。


现在有个几问题,请各位老师指教:
问题一:我(P1)有一个电脑同盟(P2),和一个电脑敌人(P3);把上面的AI代入P3后,P3不进攻P1而优先进攻P2,这就与我的设计原意违背了。要如何才能让P3优先进攻P1呢?(或者说,指定其进攻特定的玩家)

问题二:(与上面AI无关的问题)有些战役的主ai(即直接与玩家X关联的AI)用load语句导入其副ai文件,但AOKTS却只能导主ai,而导不了副ai。问:用什么工具导出副ai?

问题三:(也与上面AI无关)鄙人想对帝国默认的ai进行小修改,要如何导出帝国的默认ai?

狂~劇情狂 发表于 2012-6-25 01:54:27

利用策略值sn-attack-winning-player及sn-attack-winning-player-factor決定是否攻擊分數較高的玩家; 如果是場景, 還可以為電腦玩家放置地圖啟示者/領航員打開視野, 協助其判斷敵人所在地

AOKTS執行時, 同一目錄下會有已經解壓的scendata.tmp, 打開該文件即可見到AI內容

遊戲默認AI位於gamedata.drs

风雨技安 发表于 2012-6-25 02:17:07

谢狂兄,开某之愚窍{:155:}
页: [1]
查看完整版本: 写了一个分大小波进攻的AI,顺便提出几个问题,望高手解答,不胜感激