|
数字效果的历史大概不止两三年了吧,不过既然一直是个比较热门的问题,就再开专帖来个一劳永逸好了。哼哈,不废话,下面开始……
数字效果,就是输入数字达成效果的简称,由于触发中没有“输入数字”这一条件(状况、“反对”……),而AI正好有检测数字语音嘲弄的功能,将两者结合起来,既是数字效果系统了。而其中分为两种——循环和不循环,原理各不相同,请看下面:
不循环的数字效果:
这个比较简单,AI中有“发送触发信号”的功能,当AI检测到语音嘲弄时,就回馈一个触发信号,当触发收到信号就会有相应的效果产生了。
AI可以这么写(分号后面的为注释):
(defrule
(taunt-detected 1 XXX);检测到玩家1(也就是玩家啦)输入的数字XXX(好象是1~255之间的任意整数都行)
=>
(set-signal XXX);回馈一个信号XXX给触发系统
(acknowledge-taunt 1 XXX);注销掉玩家1的发送的嘲弄数字XXX,这条可要可不要
(disable-self);关闭规则,可要可不要。
)
(defrule;这个指令是保证触发不会因为很久以前输入的数字而莫名其妙地激活的
(taunt-detected 1 XXX);收到玩家输入的数字XXX
=>
(acknowledge-taunt 1 XXX);注销这个数字信号,也就是不再保留它
)
触发:
不循环
条件:AI信号 XXX (就是刚才AI中回馈的信号)
其他条件\效果自定
循环数字效果:
先说明一下,这里说的不是输入一次数字就让效果不停触发(这只需要把触发弄成循环就可以了),而是每输入一次数字,效果就激活一次。
这就不能光把触发设置成循环来实现了,如果只把触发设置成循环,AI不变的话,只要一输入指定的数字,触发就会不停地循环触发,达不到预期效果。这是因为触发中又缺少了“注销AI信号”的效果,也就是如果AI发送了一个AI信号,那么它就永远存在无法消除了(这里暂不讨论S/L后的情况),于是触发的条件就永远会达成,效果就不断触发了。
那么怎样才能让触发听玩家的话,叫一声应一声,不叫就不应呢?
AI信号不能用触发消除,就得用别的东西代替了,其中资源和单位是比较好的东西:
资源法:
AI:
(defrule
(taunt-detected 1 XXX);接受到玩家输入的数字XXX
=>
(acknowledge-taunt 1 XXX);注销输入的数字XXX,一定要注销,否则AI规则会不停地循环
(cc-add-resource gold 1);作弊增加黄金1,也可改为其他资源:木材(wood)食物(food)石头(stone)
)
触发1: 循环
条件 堆积属性 AI所属玩家 1单位黄金(或其他,与AI中的对应)
效果 进贡 将AI所属玩家的 999999黄金 进贡给 盖亚
触发2:
条件同上
其他条件\效果自定
建筑/单位法:
让触发检查AI造出来的兵或建筑,再移除掉可能是个办法,但是响应时间慢不说,造出来的位置也难控制。。。所以太麻烦,就别用了吧`~~
但毕竟最多7个电脑玩家28个资源栏,如果用完的话,就得考虑建筑单位了,当然不是用AI造,而是用AI……对,DELETE!
这里以 炮塔 为例子。
AI:
(defrule
(taunt-detected 1 XXX);接受到玩家输入的数字XXX
=>
(acknowledge-taunt 1 XXX);注销输入的数字XXX,一定要注销
(delete-building bombard-tower);删除火炮塔,如果是单位要用delete-unit
)
触发1:循环
拥有较少物件 建筑 火炮塔 0
建立火炮塔
触发2:循环
条件同上
其他条件\效果自定
写了这么多,真是累死了,不知道有没有什么纰漏…… |
|