hongfa694 发表于 2015-2-12 21:08:52

怎样让AI收到你的贡品,然后改变对你的外交态度就像战役里那样。

求助!

DreamLord 发表于 2015-2-12 21:57:12

比如:电脑收到玩家1的100食物后,更改外交为联盟,可以这样写:
用这样的代码:
(defrule
    (players-tribute 1 food >= 100)
=>
    (set-stance 1 ally)
)
这里面,前面的条件语句中,资源类型可以是food(食物), wood(木头), gold(黄金), stone(石料),可以同时写多种资源,比如
    (players-tribute 1 food >= 100)
    (players-tribute 1 wood >= 200)
    (players-tribute 1 gold >= 300)

而后面的更改外交语句也可以把ally改成neutral(中立), enemy(敌对),看楼主的需要

狂~劇情狂 发表于 2015-2-12 22:05:13

官方戰役裡唯一一段單靠人工智慧腳本檢查貢品並改變外交關係的代碼祇有沙拉丁第五關聖戰的底比利亞斯:

(defrule
        (event-detected trigger 1)
=>
        (enable-timer 16 1)
        (disable-self)
)

(defrule
        (timer-triggered 16)
        (players-tribute 1 gold > 999)
=>
        (set-signal 11)
        (enable-timer 17 1)
        (clear-tribute-memory 1 gold)
        (disable-self)
)

(defrule
        (timer-triggered 17)
        (players-tribute-memory 1 gold > 999)
=>
        (set-stance 1 ally)
        (disable-self)
)

第一個規則的人工智慧事件是用戰役地圖觸發於遊戲時間 3700 秒後開啟的,並且發出訊息「底比利亞斯:國王陛下,我們已經厭倦這種毫無意義的打打殺殺。拿 1000 單位的黃金來表示你的誠意,我們就宣告停戰」,作出首次 1000 單位黃金貢品要求,這對應了用人工智慧計時器 16 啟動的第二條規則。收到首筆貢金以後,底比利亞斯會再要求另一筆同等的款項,於是發出人工智慧訊息來讓戰役地圖觸發顯示訊息「底比利亞斯:我是說 1000 單位的黃金嗎?我說的是 2000 單位的黃金才對…」,同時用人工智慧計時器 17 啟動的第三條規則。
页: [1]
查看完整版本: 怎样让AI收到你的贡品,然后改变对你的外交态度就像战役里那样。