找回密码
 点一下
查看: 2283|回复: 28

怎么让英雄增加攻击力等于周围单位的数量?

[复制链接]
发表于 2016-2-29 22:12:07 | 显示全部楼层 |阅读模式
就是英雄有一个增加攻击力的被动技能,增加的攻击力等于周围的单位的数量,这个要怎么做?

我想到一个方法就是每过1秒寻找周围的单位,然后让找到的单位给英雄添加1层加攻击力的行为

还有没有其他的方法?
问这个问题关键是我不知道怎么让添加的攻击力跟周围单位数量联系起来,周围的单位数量可以通过搜索解决,但是同类的其他问题就不知道怎么办了

比如说,给英雄添加攻击力,攻击力相当于血量的1/10,怎么样将攻击力和血量的1/10联系起来,我就不会了



发表于 2016-2-29 22:26:13 | 显示全部楼层
行为:攻击光环
行为:攻击光环 - attack
效果:攻击光环 - 集合(执行攻击光环搜索以及攻击光环移除)
效果:攻击光环 - 移除(应用目标源,移除所有的攻击光环 - attack)
效果:攻击光环 - 搜索
效果:攻击光环 - 行为应用(应用目标源,持续时间一秒)

将集合中的第一个效果填上移除行为,第二个效果填上搜索
将搜索后执行的效果填上应用行为的效果

这样每次搜索会移除原来的 攻击光环 - attack ,并且根据敌人数量在施法者上应用搜索数量的 攻击光环- attack

攻击光环 - attack 行为最大叠加数根据需求任意,并且持续1秒(其实持续几秒无所谓),属性修改是提示伤害量1点
纯物编就可以完成~
回复

使用道具 举报

发表于 2016-2-29 22:27:42 | 显示全部楼层
第二个,血量,这个不是很好做,需要用触发器,也是一个行为周期执行,每次周期执行时,用触发器响应周期效果,动作是移除原来的所有加成,并且添加等量的加成效果,

总之,行为的周期执行非常好用,因为触发器可以响应 效果的执行,那么计时的功能没必要用触发器,用物编就可以,而且简单

点评

建议使用不同“币值”的行为来做,可以减少行为叠加数量。思路如下。 做一套加攻击的行为,增加量为2^n,即:1、2、4、8、16....,具体到多少,根据单位的最大血量而定,因为指数增长及其迅速,所以在血量极大的情  详情 回复 发表于 2016-3-1 11:01
多谢了,那以后这样的问题就配合触发做好了  详情 回复 发表于 2016-3-1 10:42
回复

使用道具 举报

 楼主| 发表于 2016-3-1 10:42:10 | 显示全部楼层
东方油瓶 发表于 2016-2-29 22:27
第二个,血量,这个不是很好做,需要用触发器,也是一个行为周期执行,每次周期执行时,用触发器响应周期效 ...

多谢了,那以后这样的问题就配合触发做好了
回复

使用道具 举报

发表于 2016-3-1 11:01:53 | 显示全部楼层
本帖最后由 yxxiaobin 于 2016-3-1 11:03 编辑
东方油瓶 发表于 2016-2-29 22:27
第二个,血量,这个不是很好做,需要用触发器,也是一个行为周期执行,每次周期执行时,用触发器响应周期效 ...

建议使用不同“币值”的行为来做,可以减少行为叠加数量。思路如下。
做一套加攻击的行为,增加量为2^n,即:1、2、4、8、16....,具体到多少,根据单位的最大血量而定,因为指数增长及其迅速,所以在血量极大的情况,buff数量也不会很多。然后将他们用一个数组记录起来,下标依次为0,1,2,3....。这里边有个小窍门就是把你的行为分别命名为***01,***02,***03,这样就不必手动一个一个添加了,而是采用循环组合字符串即可。
至于如何应用行为的算法,最直接的方法就是判定血量的log2,然后取整,比较行为序列的最大下标是否小于这个值,如果小于,就增加一个最大下标的行为,然后减去对应的血量,再次进行上述操作,如果不小于,就减去这个值作为下标的行为序列项,然后减去对应血量,再次进行上述操作。因为是递归运算,所以算法写起来非常简单。

点评

在星际里面不是有行为计数了吗,比如有一个行为是加1攻击 如果想让单位加5攻击,就用添加行为 动作,计数5 就行了 这样不就好了么  详情 回复 发表于 2016-3-2 15:29
这不就是原来war3的 二进制攻击之爪么~~  详情 回复 发表于 2016-3-2 15:07
听不明白,直接上附件学习学习  详情 回复 发表于 2016-3-1 13:18
回复

使用道具 举报

发表于 2016-3-1 13:18:14 | 显示全部楼层
yxxiaobin 发表于 2016-3-1 11:01
建议使用不同“币值”的行为来做,可以减少行为叠加数量。思路如下。
做一套加攻击的行为,增加量为2^n ...

听不明白,直接上附件学习学习

点评

因为这属于专用函数,对别人没啥用,就不写演示了。再解释下思路好了。 先定义一组行为,第一个行为加攻击1,第二个加2,第三个加4,第四个加8。也就是说让它们形成依次乘以2的增长规律。具体做几个,取决于你的地  详情 回复 发表于 2016-3-1 15:48
回复

使用道具 举报

发表于 2016-3-1 15:48:12 | 显示全部楼层
本帖最后由 yxxiaobin 于 2016-3-1 15:56 编辑
sky282438525 发表于 2016-3-1 13:18
听不明白,直接上附件学习学习

因为这属于专用函数,对别人没啥用,就不写演示了。再解释下思路好了。
先定义一组行为,第一个行为加攻击1,第二个加2,第三个加4,第四个加8。也就是说让它们形成依次乘以2的增长规律。具体做几个,取决于你的地图中单位最大血量是多少,比如最大血量不会超过1024,那么你的行为做到增加512即可(一共10个)。
然后定义一个数组,比如叫做BuffA[],从元素0开始依次把行为记录起来,BuffA[0]就增加攻击1,buffA[3]就增加攻击8。记录完毕后,用变量Bmax记录最大的下标。
准备工作就做完了。然后说如何使用这些行为。

1.用实数变量“Hmax”来记录单位的血量。根据你自己的算法预处理Hmax,比你要加最大血量1/10的伤害量,就把Hmax除以10。
2.用“log2”函数处理Hmax,然后取整,把结果记录到变量“Hi”中。
2.比较Hi是不是大于BuffA[]的最大下标Bmax(如果处理得当是不会出现这种情况的,这么做是为了以防万一)。
3.如果大于,那么为单位添加一层BuffA[Bmax],
4.把Hmax减小buffA[Bmax]增加的伤害值,回到步骤2;
5.如果不大于,为单位添加一层buffA[Hi],
6.把Hmax减小buffA[Hi]增加的伤害值,
7.用“log2”函数处理Hmax,然后取整,把结果记录到变量“Hi”中。
8.比较Hi是不是等于0
9.如果等于,为单位附加buffA[0],函数结束。
10.如果不等于,为单位添加一层buffA[Hi],回到步骤6。

大致就是这样,意见仅供参考,因为没有实际测试,不排除bug的可能。这样做的好处就是,只有当血量明显高于预估值时,buffA[max]会叠加多层,而其余的buffA[n]则肯定是1层。比如你只做一个增加攻击1的行为,如果需要增加1000的攻击,就需要让行为叠加1000层!如果你频繁的增加减少极大层数的行为,运行流畅性会变差的。另外,buffA[n]的增加攻击值是成2^n增长的,即使你只做15个buff,也能在无行为叠加的情况下让攻击叠加到32767,如果你做了20个buff,则攻击会叠加到1048575。当然,这种算法的话很容易处理精确到1的攻击加成,如果你需要精确到小数位,比如0.01,则需要的行为数量会增加许多。

点评

问一下,地图字体怎么改?我用的war3 mod 字体是war3的 不如SC2的好看,如何修改字体或者换回来  详情 回复 发表于 2016-3-1 16:43
回复

使用道具 举报

发表于 2016-3-1 16:43:00 | 显示全部楼层
yxxiaobin 发表于 2016-3-1 15:48
因为这属于专用函数,对别人没啥用,就不写演示了。再解释下思路好了。
先定义一组行为,第一个行为加攻 ...

问一下,地图字体怎么改?我用的war3 mod 字体是war3的 不如SC2的好看,如何修改字体或者换回来
回复

使用道具 举报

发表于 2016-3-1 16:43:04 | 显示全部楼层
yxxiaobin 发表于 2016-3-1 15:48
因为这属于专用函数,对别人没啥用,就不写演示了。再解释下思路好了。
先定义一组行为,第一个行为加攻 ...

问一下,地图字体怎么改?我用的war3 mod 字体是war3的 不如SC2的好看,如何修改字体或者换回来

点评

太多了,找不到是哪个,而且貌似同名无法覆盖  详情 回复 发表于 2016-3-2 23:14
在文本->字体样式页面直接同名覆盖就可以了。比如war3的字体叫abc,你也定义一个abc就能覆盖掉它。  发表于 2016-3-2 10:51
回复

使用道具 举报

发表于 2016-3-2 15:07:24 | 显示全部楼层
yxxiaobin 发表于 2016-3-1 11:01
建议使用不同“币值”的行为来做,可以减少行为叠加数量。思路如下。
做一套加攻击的行为,增加量为2^n ...

这不就是原来war3的 二进制攻击之爪么~~
回复

使用道具 举报

 楼主| 发表于 2016-3-2 15:29:31 | 显示全部楼层
yxxiaobin 发表于 2016-3-1 11:01
建议使用不同“币值”的行为来做,可以减少行为叠加数量。思路如下。
做一套加攻击的行为,增加量为2^n ...

在星际里面不是有行为计数了吗,比如有一个行为是加1攻击

如果想让单位加5攻击,就用添加行为 动作,计数5 就行了

这样不就好了么

点评

加入每层加1点攻击,一共加3000点攻击,每0.125秒刷新一次(即全部移除再添加上),一共有200个这种单位。尤其是:行为改变可能触发触发器事件。你觉得效率如何?  发表于 2016-3-2 19:56
人家的意思是说,+1会使用很多层数,如果上千上万,可能会卡的。。。  详情 回复 发表于 2016-3-2 17:05
回复

使用道具 举报

发表于 2016-3-2 17:05:14 | 显示全部楼层
god_mukin 发表于 2016-3-2 15:29
在星际里面不是有行为计数了吗,比如有一个行为是加1攻击

如果想让单位加5攻击,就用添加行为 动作, ...

人家的意思是说,+1会使用很多层数,如果上千上万,可能会卡的。。。

点评

我试过了,添加1次行为计数1000的行为不卡,添加1次行为计数10000的行为会明显卡顿,添加1次行为计数60000的行为直接就卡死了  详情 回复 发表于 2016-3-3 08:51
会卡吗? 也就是说添加1次计数100的行为和添加100次计数1的行为,对电脑来说是1样的吗?  详情 回复 发表于 2016-3-3 08:37
回复

使用道具 举报

发表于 2016-3-2 23:14:50 | 显示全部楼层
sky282438525 发表于 2016-3-1 16:43
问一下,地图字体怎么改?我用的war3 mod 字体是war3的 不如SC2的好看,如何修改字体或者换回来

太多了,找不到是哪个,而且貌似同名无法覆盖
QQ拼音截图未命名.jpg
QQ拼音截图未命名.jpg

点评

你把数据源设置为war3mod试试。  发表于 2016-3-5 22:29
回复

使用道具 举报

 楼主| 发表于 2016-3-3 08:37:40 | 显示全部楼层
东方油瓶 发表于 2016-3-2 17:05
人家的意思是说,+1会使用很多层数,如果上千上万,可能会卡的。。。

会卡吗?
也就是说添加1次计数100的行为和添加100次计数1的行为,对电脑来说是1样的吗?
回复

使用道具 举报

 楼主| 发表于 2016-3-3 08:51:35 | 显示全部楼层
东方油瓶 发表于 2016-3-2 17:05
人家的意思是说,+1会使用很多层数,如果上千上万,可能会卡的。。。

我试过了,添加1次行为计数1000的行为不卡,添加1次行为计数10000的行为会明显卡顿,添加1次行为计数60000的行为直接就卡死了

点评

好吧,仔细解释一下。 采用指数增长的方案,添加的行为总层数几乎不可能超过20层,这是因为指数增长的速度是难以想象的,不信你拿计算器计算一下,2^20是多少。所以这种方案可以极大的减少行为总层数。如果单纯是行  详情 回复 发表于 2016-3-3 21:54
回复

使用道具 举报

发表于 2016-3-3 21:54:27 | 显示全部楼层
god_mukin 发表于 2016-3-3 08:51
我试过了,添加1次行为计数1000的行为不卡,添加1次行为计数10000的行为会明显卡顿,添加1次行为计数6000 ...

好吧,仔细解释一下。
采用指数增长的方案,添加的行为总层数几乎不可能超过20层,这是因为指数增长的速度是难以想象的,不信你拿计算器计算一下,2^20是多少。所以这种方案可以极大的减少行为总层数。如果单纯是行为,这无所谓,可是有多少人的地图中有任意行为发生增长/减少的事件,大家都知道,触发器的效率远远低于数据,所以说引起卡机的通常不是数据本身。假入有一个任意行为增加的事件,当你重复的添加多层行为时可能会多次触发这一事件。更何况自定义地图中,数百个单位是常有的事,本身电脑的负荷就很重了,然后你再加上一根稻草,会如何?相信瞬间触发一个触发器数万次,是可以成为那根稻草的。

点评

数据源是什么?哪里设置?  详情 回复 发表于 2016-3-6 00:23
你说的指数计算方法我知道,我以前也用WE的 我试验的并不需要太多触发关联,只需要对一个单位添加 1个计数60000的行为,就会卡死。。。 比想象中要严重  详情 回复 发表于 2016-3-3 22:15
回复

使用道具 举报

 楼主| 发表于 2016-3-3 22:15:29 | 显示全部楼层
yxxiaobin 发表于 2016-3-3 21:54
好吧,仔细解释一下。
采用指数增长的方案,添加的行为总层数几乎不可能超过20层,这是因为指数增长的速 ...

你说的指数计算方法我知道,我以前也用WE的

我试验的并不需要太多触发关联,只需要对一个单位添加 1个计数60000的行为,就会卡死。。。

比想象中要严重

点评

确实很严重,所以推荐指数币值的方法。不过通用触发器就有点困难了,因为这不容易适应精确到小数的修改,比如加攻击0.01。  发表于 2016-3-5 22:28
回复

使用道具 举报

发表于 2016-3-6 00:23:07 | 显示全部楼层
yxxiaobin 发表于 2016-3-3 21:54
好吧,仔细解释一下。
采用指数增长的方案,添加的行为总层数几乎不可能超过20层,这是因为指数增长的速 ...

数据源是什么?哪里设置?

点评

没明白你说的意思。什么数据源?  详情 回复 发表于 2016-3-7 18:25
回复

使用道具 举报

发表于 2016-3-7 18:25:46 | 显示全部楼层
本帖最后由 yxxiaobin 于 2016-3-7 18:27 编辑
sky282438525 发表于 2016-3-6 00:23
数据源是什么?哪里设置?

没明白你说的意思。什么数据源?
---------------------------------------------------------
原来是回复的另一层楼。你看截图,有这三个字,就是那个下拉列表框的标题。

点评

嗯,解决了。问一下单位攻击音效在哪里更改  详情 回复 发表于 2016-3-7 23:55
回复

使用道具 举报

发表于 2016-3-7 23:55:02 | 显示全部楼层
yxxiaobin 发表于 2016-3-7 18:25
没明白你说的意思。什么数据源?
---------------------------------------------------------
原来是 ...

嗯,解决了。问一下单位攻击音效在哪里更改

点评

多数情况下在武器的“动作”演算体。少数情况是由单独的音效演算体决定的。  发表于 2016-3-8 04:32
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 09:02 , Processed in 0.315273 second(s), 43 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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