找回密码
 点一下
查看: 2043|回复: 10

如何偵測"目標範圍"敵軍數量設置攻擊力疑問?

[复制链接]
发表于 2010-11-5 00:22:49 | 显示全部楼层 |阅读模式
請教一下

有沒有辦法 偵測目標範圍 內有多少敵軍 去設置攻擊力呢?

構想大綱是

技能->效果搜索範圍->效果傷害

但是傷害數量的依據是根據搜索範圍內敵軍數量去做調整,

一個敵軍傷害數量2
兩個敵軍傷害數量4
依此類推,

我試著用驗證器但找不到(或說是對驗證器不熟)驗證器可以做到得知範圍敵軍數量的方法,

還是這要用到觸發寫出來?
我對於觸發程式還是不太熟= =|||....目前最多只能做出記分板....

還有一問
是從上述技能延伸出來,

技能->效果搜索範圍->效果套用行為->行為A持續結束->效果傷害

在這技能裡我想請問,
有沒有辦法抓到整個遊戲中有多少敵軍被施放了行為A

只要有有任一敵軍有行為A
施放者技能欄位按鈕  "啟動爆炸" 就可以點擊,
                                                                        
反之                                                                  
如沒有敵軍沒有行為A                                       
"啟動爆炸"按鈕 就不能按                                   

當點下"啟動爆炸" 就會移除所有敵軍身上的行為A
而行為A設定結束時啟動傷害,

傷害也是依據整個遊戲有行為A的敵軍有多個有去做調整,
似乎....

感覺我的構想很難達成= =|||....
发表于 2010-11-5 00:38:07 | 显示全部楼层
第一个问题,你考虑的复杂了。

其实只要这样就可以了吧。

枚举区域内所有单位,然后对每个单位使用一次aoe伤害效果,伤害为2,要注意的是,aoe的中心必须是你区域的中心,这一点不能弄错。


这样,每找到一个单位就会aoe一次,区域里有几个单位就会aoe几次了。



当然,由于2x2的伤害和一次性4x1点伤害其实是有所不同的,所以如果你真的要较真一定要4x1点伤害的话,那只能借助触发器了。
回复

使用道具 举报

 楼主| 发表于 2010-11-5 00:47:38 | 显示全部楼层

回 1楼(Renee) 的帖子

請問Renee大
aoe是...什麼...?
濺射傷害嗎?
我目前是猜到這個。
回复

使用道具 举报

发表于 2010-11-5 00:48:44 | 显示全部楼层
伤害效果本身就可以设置伤害范围的。AOE简单地说就是群体伤害。
回复

使用道具 举报

发表于 2010-11-5 01:01:54 | 显示全部楼层
第二个问题么,如果你不限定必须是敌人,而是只要有人身上有行为就能按,这样会简单很多很多。

因为需求里面本来就可以统计行为数量。



如果一定要限制敌人的话,只能用验证器里的枚举区域内单位CValidatorLocationEnuma。这个验证器,可以查找区域内符合条件的单位数量,并与指定的值相比较。


这种情况下你要比较的是区域内有指定buff而且和源单位是敌人的单位数量。

然后引爆的问题更加简单,只要在使用后搜索区域内所有单位然后删除buff就好。


目前暂时没啥时间,因为手头有事情,你可以自己先去试下,如果明天还没解决的话我做个演示好了。
回复

使用道具 举报

发表于 2010-11-5 02:01:33 | 显示全部楼层
我的想法是,给你自己的单位加个BUFF A,定时扫描范围内的敌军,给敌军加上BUFF B,然后有BUFF B的敌军扫描同等范围内的符合条件的你的单位,给他加上BUFF C,BUFF C每层+2伤害,然后设定一个相当大的叠加层数。然后爆炸设个需求,当你的单位身上有BUFF C的时候才能使用,应该是可以的
回复

使用道具 举报

发表于 2010-11-5 02:20:57 | 显示全部楼层
他上面那两个问题应该是各自孤立的。不过用buff来增加伤害的法子倒也不错。
回复

使用道具 举报

发表于 2010-11-5 10:20:00 | 显示全部楼层
关于攻击力增加是增加自身的吗?如果是的话~下面是另一种思路~
这种思路从XML直接编写,因为可以做成大量的继承结构~效率还是可以的。

自身有一个行为BuffA,定时触发EffectA,给自己加攻击加成的行为BuffB。
行为BuffB的上限假定为9999,每层增加攻击2点。

EffectA用的是CEffectSwitch,其中CaseArray所用的验证器为CValidatorLocationEnumArea。
CValidatorLocationEnumArea的内容为
-侦测半径
-侦测个数
-当然是自身圆点了~

CaseArray的分类为
CValidatorLocationEnumArea中的侦测个数,1个敌人时追加1层BuffB;
CValidatorLocationEnumArea中的侦测个数,2个敌人时追加2层BuffB;
CValidatorLocationEnumArea中的侦测个数,3个敌人时追加3层BuffB;
CValidatorLocationEnumArea中的侦测个数,4个敌人时追加4层BuffB;
...

对了,如果必须过滤出敌人单位,则需要用CValidatorLocationEnuma验证器加在CEffectSwitch上~
回复

使用道具 举报

发表于 2010-11-5 10:23:36 | 显示全部楼层
这法子并不是很适当。而且就算写出来了,9999次的选择结构占用的内存也很大,实际执行效率也说不上好。


完全用xml来编写技能行为的一大原因就是执行效率关系。而如果真要做9999个的话,还是直接触发器效率高一些了。无论是编写效率还是执行效率。
回复

使用道具 举报

发表于 2010-11-5 10:34:04 | 显示全部楼层
只是用来说一下“奇怪的”思路嘛~真要做9999,想想都头疼- -#
那个区域枚举单位个数的验证器还是挺好用的说~
回复

使用道具 举报

 楼主| 发表于 2010-11-5 22:59:56 | 显示全部楼层
感謝各位高手熱情回應,

我今天上班上課不專心思考一天= =|||,

加上各位的意見整理出大致方向,
開始著手去試作,
我先看如何再上來整理與各位討論,

真的很謝謝各位!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-18 21:06 , Processed in 0.032791 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表