一窍不开 发表于 2015-1-17 00:40:47

检测区域内单位数量的问题

有没有什么方法能够较快的(1秒)检测出一个区域内特定单位的数量?最好没有副作用,比如人口变化什么的。。骑士不怕长枪的方法似乎需要10秒左右,而且如果不只是检测军事单位还会出现人口的变化。。不知道有没有什么新颖的奇妙方法。。

羅傑 发表于 2015-1-17 01:09:24

本帖最后由 羅傑 于 2015-1-17 01:16 编辑

要解決LZ的問題,只使用幾個觸發似乎是不夠的
最簡便的做法是改變思路,這種做法要視戰役的性質適當加以調整
否則,就只能用AOKTS複製觸發,勤能補拙了吧

一窍不开 发表于 2015-1-17 02:15:43

羅傑 发表于 2015-1-17 01:09
要解決LZ的問題,只使用幾個觸發似乎是不夠的
最簡便的做法是改變思路,這種做法要視戰役的性質適當加以調 ...

假如我要做这么一个效果:在一个区域内有X个村民,每秒钟就会得到X黄金,该如何变通。。

(前辈半夜都帮我回答问题,好感动{:158:})

ZoomZip 发表于 2015-1-17 04:12:27

一窍不通 发表于 2015-1-17 02:15
假如我要做这么一个效果:在一个区域内有X个村民,每秒钟就会得到X黄金,该如何变通。。

(前辈半夜都 ...

恐怕你最多有多少村民,就需要做多少触发,然后一个触发扣着另一个。这里不能利用二进制消去法了

条顿武士 发表于 2015-1-17 13:34:48

我提供一个用up的AI语句解决问题的思路,不过还没有经过测试,有能力的童鞋可以参考实验一下。

AI的战略数值中有一个sn-maximum-town-size的数值,以该玩家的城镇中心为圆心,该数值为半径的区域,会被认定为是该玩家的城镇区域。

如果是检测这个区域内的单位,用AI是可以直接提取变量的。而利用自我驻扎的技术,很容易可以在地图任何位置创造出这样一个区域。

up-unit-type-in-town
语法
up-unit-type-in-town 类型操作符 (in)(op)单位编号 比较运算符 (in)(op)值
功能
检查城中敌人某类型单位的数量。
示例
检查sn-maximum-town-size范围内是否存在敌方骑士,如果有,则提取骑士数量。
(defconst unit-type-in-town 45)
(defconst gl-data 101)
(defrule
      (up-unit-type-in-town c: knight-line > 0)
=>
      (up-get-fact unit-type-in-town c: knight-line gl-data)
)

读取变量后…在AI中判断一下数值大小也好,转换数值进贡也好就都十分简单了。

页: [1]
查看完整版本: 检测区域内单位数量的问题