请选择 进入手机版 | 继续访问电脑版

GA地精研究院

 找回密码
 立即注册
查看: 6851|回复: 5

[Ability研究班] 应该算是Buff资料的整理吧……Buff指南?

 关闭 [复制链接]
发表于 2010-4-4 15:29:35 | 显示全部楼层 |阅读模式
这东西其实主要是整理了一下比较零碎的Buff知识,大部分是前辈的资料~如果还有好的资料也请回帖提醒~
如果发现我有写错的地方,请尽情指出~
这里面引用了很多人的东西(虽然未经本人同意~)~对这些人表示感谢:
头目~老狼Red_Wolf~zjwzero


Buff:
一些废话:
Buff其实就是在单位面板下面写着“状态:”后面的那堆图标啦。
把鼠标放在上面会显示:
<Buff名称>
<Buff等级>
<Buff描述>

关于Buff的名称
如果是正面Buff(Positive),那么Buff名称默认就是绿色的
如果是负面Buff(Negative),那么Buff名称默认就是红色的
(为了方便下面的说明,正面Buff简称PoBuff,负面简称NeBuff)

但是你可以在Buff名称前加颜色代码来强制设置Buff名称的颜色。
比如“|cffff0000心灵之火|r”这样看起来心灵之火貌似就是个NeBuff了。
不过,如果在Buff名称的第一个字之前没有加颜色代码,那么显示的时候还是会在名称之前加默认的颜色代码。
如“心|cffff0000灵之火|r”会显示为灵之火

关于Buff的等级
Buff的等级等于施放技能的等级。
Buff虽然有等级的区分,但是GetUnitAbilityLevel( unit, buff )的返回值貌似永远是个0或1,只能用于判断单位是否拥有这个Buff。
如果施放技能的最大等级只有1级,那么Buff不显示等级。
Buff等级默认显示为灰色。

关于Buff的描述
这没什么要多说的,只是测试了一下能写的字数,貌似是341个中文字(682bytes),貌似比物品显示的更多一些(当然我没实际测试对比一下)
默认为白色。

关于Buff的设置
只是用来设置Buff的特效(effect)的。
【Spelldetail;必须的魔法效果】——当电脑的显示魔法设置为此项或更高的时候,才能显示此Buff。

废话完毕

关于技能设置对Buff的影响
1.图标闪烁
当技能设置的持续时间大于等于10s时,Buff在剩下10s的时候,会在单位状态栏开始闪烁,以提示此Buff即将消失。
而技能设置的持续时间小于10s时,Buff不会闪烁。
光环不会闪烁。

2.无限叠加
某些技能把Buff一栏设为空的话,此技能将添加默认的Buff,而且可以无限叠加了。
具体可以参见头目神贴~
http://bbs.islga.org/read.php?tid=34406&page=1#408982
说明了这东西的原理:

然后里面说到技能如果去掉buff数据。通常会套用默认buff的事情。

其实还有一个很有意思的事情,如果你去掉技能的buff数据,通常来说,非但会套用默认buff,而且这些buff通常都变得可以无限叠加层数(虽然界面上看不出层数)。这个知识点这里没提到。

用这个可以方便做出很多无限叠加buff层数的技能。出现这个问题的原因在于war3的buff唯一性判定方法。因为没有buff数据,所以用了默认buff数据,但是似乎它在判定buff唯一性的时候又从buff数据域里找,于是导致永远找不到,这样就判断目标没有这个技能的buff,所以就无限叠加了。


其实war3本身默认状态下,很多技能就有这个bug。大家可能知道3c,dota这种游戏,如果你在泉水边上暂停单位(通常AI的做法),这些单位会以惊人的速度恢复HP。实际原因是,泉水的buff数据没有定义(默认如此)。所以套用了默认buff。由于默认buff的持续时间大约2秒。通常下一次添加后没多久,前一个buff就消失,所以正常情况下不会有太大影响。

但是当你暂停单位的时候,所有buff计时都会停止。所以之前的buff在暂停的时候不会因为到期而消失,之后的buff却在不断加上,于是加血速度就以极数上升。

这些buff由于都是同一个所以只会显示一个图标(或者不显示),实际上是叠加在那里了。虽然war3不像wow可以看出buff层数,但是你可以通过输出单位身上的buff数量这个函数来得知。

接下来,是头目“Buff无限叠加BUG的原理示例”,是用来让人理解原理的演示~
http://bbs.islga.org/read-htm-ti ... E%BC%D3%7CBuff.html
在此我用暗夜精灵族的慢性毒药(下面说的Buff就都是毒药的Buff了)做一个测试。
毒药的效果会完美叠加。
用UnitRemoveAbility也可以一次清除所有的效果和Buff。
Buff的持续时间以最后添加的Buff为准。
效果是自己计算时间的。
如持续5s的Buff,伤害5点/s,第1s被添加一次,第3s被添加一次,则:
第1-2s,受到5点伤害/s,第3-5s,受到10点/s,第6-8s,受到5点/s。
遗憾的是,拥有慢性毒药的一个攻击者不断攻击同一目标,他的效果和Buff只会被不断更新,而无法叠加。

之后又用了另外的一些攻击Buff技能做了测试。
某些技能Buff的信息中的等级是不会刷新的,以最开始添加的Buff的等级为准。
如:
慢性毒药 冰冻之箭
余下的我没测试了~

另外的会以最后一个添加的Buff为标准显示等级的, 如:
黑暗之箭 燃灰
余下的没有测试~

3.添加不同Buff不重叠
这个一开始由老狼Red_Wolf整理出来。
原帖:
http://bbs.islga.org/read-htm-ti ... E%BC%D3%7CBuff.html
引用(图略):

无限不冲突添加buff的方法有2种:

1.为需要添加buff的单位添加光环技能,由于光环的叠加特性,只要其魔法效果不同,就可以叠加,然后用计时器在设定的时间之后移除该光环技能。该方法是当前所普遍应用的,但是有一个严重的缺陷,就是没有buff消褪效果。

2.以下是本人偶然发现的东西:

暴风雪/火焰雨
霜冻吐息/火焰吐息
黑暗之箭

以上技能当魔法效果不同时,其buff效果也可以叠加。如下图所有buff都是由黑暗之箭添加的

暴风雪/火焰雨:影响范围为圆形,buff添加延时为0.9秒,一般用于为友军范围魔法添加buff(使用计时器在0.9001秒后检测buff)

霜冻吐息/火焰吐息:火焰吐息需要醉酒云雾支持,所以基本上都是使用霜冻吐息。该技能影响范围如下,修改相应参数也可以制作圆形(距离=0)或是单体buff添加(影响范围和最终范围=1),该技能可以即时添加buff(单位发布命令就直接能检测到buff),所以相当好用,唯一的不足就是不能对盟友施放。

黑暗之箭:该技能buff添加延时不是很稳定,一般在0.005以内。作为单体buff添加并不如霜冻吐息好用,本来是相当好的附加箭矢模板,居然对英雄无效,太可恶了......


那么看过该篇之后,就再也不用担心随着技能的增加,可用的模板越来越少了,也不用再为技能冲突而发愁了。

关于红字部分,zjwzero同学仅仅很小的一个短篇帖子就给出了解决方案:
http://bbs.islga.org/read-htm-ti ... E%BC%D3%7CBuff.html

这里,只有几句话要说,那就是:

黑暗之箭之所以对英雄无效是因为英雄没有尸体,但是英雄也是可以有尸体的

死亡类型改为:可召唤,会腐化 —— 记得改技能的英雄持续时间

黑暗之箭正式成为we史上最强buff模板


关于如何添加Buff
首先说明一个比较通用的问题:
就是除非特殊要求的Buff,基本上所有的Buff都是可以被刷新的,所以需要只有当最后刷新的Buff持续时间也没有了的时候,才能删除Buff。
比如一个Buff,你在每次释放技能的时候,创建一个Timer,当Timer到期之后,不可以直接写
[jass]call RemoveUnitAbility( <unit>, <buff> )[/jass]
这样的话,当第二次释放技能,但第一次Buff还没有消失的时候,第一次Buff消失就直接把第二次的Buff也弄没了。
建议为单位绑定一个integer数据count(初始化为0),当添加Buff的时候,count+1,当每一个Buff到期的时候,count-1。
如果count>0,为单位添加Buff,而当count<=0时,为单位删除Buff。
不想绑定integer数据的话,直接给单位添加一个空技能也是可以的。添加Buff的时候AddAbility+SetLevel+1,删除Buff时SetLevel-1,如果为0则RemoveAbility。

添加Buff的一些方法如下:
1.如老狼所说,用光环:

为需要添加buff的单位添加光环技能,由于光环的叠加特性,只要其魔法效果不同,就可以叠加,然后用计时器在设定的时间之后移除该光环技能。该方法是当前所普遍应用的,但是有一个严重的缺陷,就是没有buff消褪效果。

此方法有相对来说很多的麻烦,比如移除技能的时候,Buff也必须移除(否则Buff有延迟);使用Timer来删除Buff,对于某些纯显示用Buff来说太浪费了些。
以下引用War3技能指南中的资料:

Aasl(龙卷风减速光环):该光环是用来添加无实际效果的buff的绝好技能。只要把允许目标设为自身,然后将数据效果设为0.此技能还不显示技能图标。最妙的是,当单位身上拥有一个以上这种技能时,它们的buff图标会叠加。鉴于'Aasl'本质上是个负面光环,因此其buff的提示是红色的,不过你可以在它名字上加颜色代码来改变这一点。比方说|cffff0000我是个坏蛋红色Buff|r 或是 |cff00ff00我是绿色的好人Buff|r.如果你觉得这技能不合意,也可以用其它光环,将它们放进被禁用的魔法书里就能隐藏图标。


2.用zjwzero改进的黑暗之箭。
这个很简单了,用马甲释放技能就可以了。Buff貌似是无法立即检测到的。
顺便说一下,貌似技能指南里这段是错误的,AItg是无法添加Buff的:

AItg(攻击加成):一般来说你会需要将这技能的攻击加成设为-1然后添加给隐藏单位来无伤害地施放其攻击附加效果。方法是将施法者基本攻击力设为0,攻击色子数设1,色子面数设0,然后将你的自定义攻击加成技能添加给隐藏施法者。这样施法者不会造成任何伤害,但攻击附加技能依然会生效。这法子可以用于添加火油、冰冻气息、减速毒药之类技能的buff。顺便,负值的攻击力是无法治疗目标的(原文说反了)。


3.还有另一种好玩的方法,就是用书本,这样添加的Buff是可以立即检测到的(不过不是所有的技能都可以用书本来施放)。
头目的一个示范:
[压箱底活技]制作一个昏迷光环(一个更完美的修正版本,原版WE也能打开)
http://bbs.islga.org/read-htm-ti ... D4%B9%E2%BB%B7.html
这是用书本替代马甲丢锤子的例子。
但是遗憾的是貌似黑暗之箭在书本里是无法起作用的。
一个小小的提示:一本书被吃之后是不会消失的,你可以反复地把这本书扔给任何一个能捡起来的单位。
书本的技能默认应该是由吃书的人发布的,所以技能目标允许要设置成友军可以称为目标的那种。最好不要有伤害,否则杀死他的就应该是是他自己了。


就写这么多吧~

评分

参与人数 1威望 +5 收起 理由
w062c30 + 5

查看全部评分

发表于 2010-4-5 23:11:11 | 显示全部楼层
很棒!很方便的资料
回复 支持 反对

使用道具 举报

发表于 2010-4-6 01:56:40 | 显示全部楼层
非常棒的资料
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-10 12:46:51 | 显示全部楼层
更新一下,不过应该不算是Buff的内容了吧~是关于生命周期的。
生命周期会在相当于英雄经验条的地方出现蓝色的生命周期条,显示生命周期的名称,提示剩余时间。
被添加生命周期的单位,当生命周期消失以后(不管是时间到期,还是被UnitRemoveAbility),就会死亡。
生命周期与Buff有些相像,可以用UnitRemoveAbility来删除(但同时单位会死亡),也可以用GetUnitAbilityLevel( <unit>, <buffid> ) > 0来判断单位是否有这个生命周期。
生命周期(包括同类型)可以叠加,但不能被刷新。显示的生命周期条是以最先添加的生命周期为准
通过默认函数可以暂停/恢复一个单位的所有生命周期,但是貌似无法单独对一个生命周期进行操作。
如下触发:
[trigger]
esc 2
    事件
        玩家 - 玩家 1 (红色) skips a cinematic sequence
    环境
    动作
        单位 - Add a 20.00 second 水元素 expiration timer to Hero
        单位 - Add a 5.00 second 水元素 expiration timer to Hero
        Wait 5.00 seconds
        游戏 - Display to (All players) the text: 1

[/trigger]
按下Esc,Hero将在正好屏幕出现1的时候死掉。

单位被暂停后生命周期也被暂停,但可以恢复他的生命周期。
如下触发:
[trigger]
esc
    事件
        玩家 - 玩家 1 (红色) skips a cinematic sequence
    环境
    动作
        单位 - Add a 20.00 second 水元素 expiration timer to Hero
        Wait 4.00 seconds
        单位 - 暂停 Hero
        单位 - 不可暂停 the expiration timer for Hero

[/trigger]
按下Esc,等待4s后,Hero被暂停,但是生命周期条照旧减少。

生命周期的一些用途:
添加给马甲单位,很方便就能让马甲释放技能之后死掉。
判断幻象(或者召唤单位等等)是由哪个技能创建出来的(需要保证单位只有一个生命周期……不过也没有什么东西需要多个生命周期的吧),比如我的一个剑圣用了分身,然后又用了幻象权杖。
那么此时GetUnitAbility( <unit>, 镜像 ) > 0的,就是分身幻象。
而GetUnitAbility( <unit>, 幻想物品 ) > 0的,就是用幻象权杖造出来的幻象。

生命周期貌似无法为负值。

暂时就说这么多吧,以后想起来了再写。
回复 支持 反对

使用道具 举报

发表于 2010-4-30 17:08:14 | 显示全部楼层
黑暗之箭添加的buff效果期间,如果单位死亡,是不会有尸体的。这个zjwzero也提到的,所以“完美”两字说不上。

霜冻呼吸只要让中立被动单位来释放就没问题了,不存在盟友不能放的问题

个人认为霜冻呼吸要好的多
回复 支持 反对

使用道具 举报

发表于 2010-4-30 22:31:46 | 显示全部楼层
技能ID技能ID……
发布命令发布命令……
War3硬伤War3硬伤……

Buff可以有无限个,可惜命令ID却有限。
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2018-10-23 08:07 , Processed in 0.048998 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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