系统计算某个地方的敌人到底有多少个
不知道怎么用触发做一个效果:就是一群敌人(不限单位)到某个地方,系统会计算这个地方到底有多少敌人,会随着敌人的到来而增加,但不会随着敌人被杀或离开而减少。我能想到的,就是:
触发1:条件-区域已有物体,数字为1;效果-变量值(赋予某个变量值+1),然后根据你在“分享一下我一个月以来的地编测试结论(写了好多啊……)”一贴中写的方式让它在右上角显示“有XX/20敌人已经到了某地”
触发2:条件-这个变量值大于等于20;效果:玩家战败
测试发现:如果触发1不循环则完全无效,但如果触发1循环的话,那么XX(数字)就会一直增长下去。
求助这是为啥?
https://www.hawkaoe.net/bbs/thread-116800-1-1.html
你需要先攻读完宝典,这样就不会被这些简单的问题困扰了 看来是我表达不清。我想实现的是,如何让1个敌方单位进入某个区域之后,计数器+1,但这个单位在进来之后就只+1了,无论这个单位在这个区域里是死是活,计数器都不变,直到下一个单位(可能是同一种,可能是其他单位)进来之后,计数器再+1。我看过帖子里关于那个“20匹马”的触发,有个动作是“移除”,但如果用了“移除”,就不符合逻辑了。 这很简单,因为触发统计一次后,不会把已经统计过的排除在外。
像您要求的那种功能(在多个区域统计单位数量并求和)实现起来会很繁复,具体来说便是在条件区域A分别设置21个触发表示此处拥有1到20个单位,而且每次要先清零对应的变量值,然后拥有一个单位则值+1,拥有两个单位再+1……另外几处也如此,最后把变量的值加起来进行统计,这是能够想到通过触发实现的办法。 我是谁004 发表于 2019-12-22 23:04
这很简单,因为触发统计一次后,不会把已经统计过的排除在外。
像您要求的那种功能(在多个区域统计单位数 ...
那这个事情确实比较复杂:如果有4个敌人的话,要做到任意4个敌人的任意20个单位到达某处,再触发某效果,确实比较困难。 用ai语句直接清点区域内某种敌对单位总量,然后用资源形式反馈到游戏中供触发提取即可
部分范例供参考
;// 判断敌情第1类:长枪系 //
(defrule
(up-compare-goal TROOP > 0) ;游击队模式开启
=>
(up-full-reset-search) ;重置直接寻的系统的搜索索引和筛选状态、搜索状态
(up-get-search-state gl-local-total) ;重置搜索数量
(set-goal gl-player 1) ;初始化搜索从玩家1开始
(up-modify-sn sn-focus-player-number g:= gl-player) ;设置当前玩家为焦点玩家
(up-modify-goal gl-point-x4 c:= 0) ;初始化搜索结果为0
)
;// 判断敌情第1类:循环起点C1 //
(defrule
(up-compare-goal TROOP > 0) ;游击队模式开启
(or (players-stance focus-player enemy) ;只侦察敌对或中立玩家
(players-stance focus-player neutral))
=>
(up-set-target-point gl-point-x5) ;将游击队分布重心座标x5,y5设置为搜索圆点
(up-filter-distance c: -1 c: 10) ;设置搜索半径为10
;搜索筛选条件必须和后面分开,否则会出错
)
(defrule
(up-compare-goal TROOP > 0) ;游击队模式开启
(or (players-stance focus-player enemy) ;只侦察敌对或中立玩家
(players-stance focus-player neutral))
=>
(up-find-remote c: spearman-line c: 40) ;搜索指定的有威胁单位(长枪系)
(up-get-search-state gl-local-total) ;记录搜索记录
(up-modify-goal gl-point-x4 g:+ gl-remote-total) ;累加威胁单位数量
(up-reset-search 0 0 0 1) ;保留远程索引,清除远程搜索结果
)
(defrule
(up-compare-goal TROOP > 0) ;游击队模式开启
(or (players-stance focus-player enemy) ;只侦察敌对或中立玩家
(players-stance focus-player neutral))
(up-compare-goal gl-remote-total == 40) ;游击队模式开启
=>
(up-jump-rule -2) ;跳回上一条语句起始处
)
(defrule
(up-compare-goal TROOP > 0) ;游击队模式开启
(up-compare-goal gl-player < 8)
=>
(up-modify-goal gl-player c:+ 1) ;搜索下一个玩家
(up-modify-sn sn-focus-player-number g:= gl-player) ;设置当前玩家为焦点玩家
(up-full-reset-search) ;重置直接寻的系统的搜索索引和筛选状态、搜索状态
(up-get-search-state gl-local-total) ;重置搜索数量
(up-jump-rule -4) ;跳回循环起点C1
)
最终结果存放在gl-point-x4里
页:
[1]