Howerds 发表于 2016-11-12 01:50:04

一个检测某单位正在进行的动作的AI语句

本帖最后由 Howerds 于 2016-11-11 13:12 编辑

最早应该是@狂~劇情狂和@条顿武士 的研究结果。
现成的,大家可以直接用:

(defconst object-data-action 5)
(defconst action X)

(defrule
       (true)
=>
       (set-goal 1 0)
       (disable-self)
)

(defrule
      (true)
=>
      (up-set-target-by-id c:= Y)
      (up-get-object-data object-data-action action)
)


(defrule
      (goal 1 0)
      (up-compare-goal action == Z)
=>
      (chat-to-all “进行动作中”)
      (cc-add-resource food 1)
      (set-goal 1 1)
)

(defrule
      (goal 1 1)
      (up-compare-goal action != Z)
=>
      (chat-to-all "停止动作”)
      (cc-add-resource food -1)
      (set-goal 1 0)
)

作用:如果某单位正在进行某个动作,那么使用这个AI的玩家将获得1食物(供触发检测用);反之,当他停止该动作时,将失去1食物。

其中,X是你自己定义的变量编号,随便改成一个数字就好(最好不大于512)。
          Y是你想要检测的那个单位的ID,可以用AOKTS查看。
          Z是动作代码,请根据你想要检测的动作改成下列对应值:

600攻击
601防御
602建造
603治疗
604转化
605探索
606停止
607逃跑
608撤退
609采集
610移动
611巡逻
612跟随
613捕猎
614运输
615贸易
616躲避
617进入
618维修
619训练
620研究
621卸载


WWWW5602 发表于 2016-11-12 07:53:44

这个好,受教了。{:155:}
页: [1]
查看完整版本: 一个检测某单位正在进行的动作的AI语句