一个检测某单位正在进行的动作的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卸载
这个好,受教了。{:155:}
页:
[1]