找回密码
 点一下
查看: 11487|回复: 32

关于“瞬间暂停”单位所引起的现象

[复制链接]
发表于 2010-7-13 17:00:21 | 显示全部楼层 |阅读模式
第一章: 对于“瞬间暂停”单位所引起的现象的研究


不知道我是否火星了,但是这确实是一个极其有趣的发现,而且进过搜索我也没有发现相关的贴子,于是将其写下与大家分享。
这个发现就是:在发动技能效果的瞬间暂停并恢复单位,单位释放的技能会出现很多有趣的情况,下面就让我们来详细了解。
[trigger]
未命名触发器 001
    事件
        单位 - 任意单位 发动技能效果
    条件
    动作
        单位 - 暂停 (触发单位)
        单位 - 恢复 (触发单位)
[/trigger]
我们可能都知道,在单位发动技能效果的时候,如果再对单位发布停止命令,那么除了某些瞬发技能外的其他技能都不会有效果,CD也不会转,但魔法还是消耗了。
那么,在单位发动技能效果时“瞬间暂停”单位呢???

于是我们开始分类对技能进行测试吧:


第一类:单位目标技能。如:“风暴之锤”“神圣之光”“纠根缠绕”。。。。
实验结果:技能效果不生效,但CD和魔法都会消耗。
实验结论:“瞬间暂停”单位,会终止单位目标技能的技能效果。

第二类:无目标技能。如:“雷霆一击”“召唤水元素”“神圣护盾”。。。。
实验结果:技能效果生效,CD和魔法也被消耗。
实验结论:“瞬间暂停”单位,不会影响瞬间无目标技能的技能的效果。

第三类:点目标技能。如:“蛇群守卫”“火焰呼吸”“冲击波”。。。。
实验结果:技能效果生效,CD和魔法也被消耗,但。。技能释放的位置确是往地图中心点!!也就是说“守望者”释放“闪烁”会一瞬间闪到地图中心,“蛇群守卫”召唤的“毒蛇守卫”会被召唤到地图中心,冲击波是往中心方向冲的。
实验结论:“瞬间暂停”单位,不会影响瞬间点目标技能的技能的效果,但技能释放点确是往地图中心点释放的。

第四类:持续施法技能。如“暴风雪”“群星坠落”“惊吓”。。。。
实验结果:技能释放情况等同于上面——比如“暴风雪”会下到地图中心,单位目标技能如“生命汲取”没有效果。。。。。
          但这不是主要的,主要的是:暂停单位不仅没有打断单位释放持续性技能,反而使这个技能不用持续施法也可以发生持续效果!!!
          也就是说:单位可以边施法边攻击、移动。。。
实验结论:“瞬间暂停”单位会使被使用的持续性技能变成不需要持续施法的技能。。。虽然对于“暴风雪”这样的点目标技能会出现“地图中心”的BUG,但是“群星坠落”和“宁静”等却可以正常使用。



好了,整体的分类已经讲完了,如果你看懂了我所说的,那么可能你已经觉得很有趣了吧。(就光算“持续施法技能 变为 瞬间施法技能”的应用,就已经在一般情况下超越“书本”了,因为这是通用的。注意:是一般情况)

但是,你要知道这只是个开始,真正有趣的还在后面呢。

第二章: 对于个别技能的研究

第一节:零CD技能。

前一章已经说过:“瞬间暂停”单位,会终止单位施法状态。
但是,有趣的在于,WAR3中被暂停的单位会试图再次去完成未完成的命令,而且即使是发动了效果的技能,它也视作未完成。
于是,如果技能CD为零,该技能就会被连续释放。
但是由于单位目标技能效果无法发动,于是乎你就可以看到单位的魔法瞬间就空了。。然后一个技能也没生效。。。(如“驱散”“黑暗之箭”手点版,“冰箭”手点版。。。。)
而如果是无目标或者点目标,那么技能效果将会被快速发动(如“雷霆一击”“战争践踏”“蛇群守卫”。。。嗯效果太帅了)
但是,要注意的是:“暴风雪”“火焰雨”这样的持续性技能,同时只会有一个生效。所以可能不断释放刷新反而无法产生伤害(如“群星坠落”)

应用:可将此发现应用于“多重施法”的制作中(单位目标需要用触发来完成效果)


第二节:变身技能:无BUG单位指令队列,免疫眩晕。。。

我们可以把“持续施法”看做是单位的一个状态,而“暂停”可以重置单位状态,于是单位便不用持续施法了。
那么,变身(进行中)也是一个状态,同理我们也可以重置它。

记得KOOK大人有一个“单位指令队列”的研究,头目大人有一个“免疫眩晕”的演示,利用的就是“书本”不会有持续施法的状态的原理。
但是,这个演示有几个致命的缺陷:一:不能通用。二:变身BUG会使单位攻击*2,并有其他巨大BUG。
因此,KOOK称之为“一个开发中的bug”。
而如今,此问题可以说完美解决了。

比如,我们要制作这个技能:
        “灵魂集中”:使英雄集中全部灵魂与精神去攻击他的敌人,技能释放后此单位将无视一切命令,无视眩晕,直到杀死敌人或状态结束。状态持续10S。

那么,我们只需要:
[trigger]
未命名触发器 001
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 变身
    动作
        单位 - 暂停 (触发单位)
        单位 - 恢复 (触发单位)
[/trigger]
[trigger]
未命名触发器 004
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 灵魂燃烧
    动作
        设置 u = (技能施放目标)
        等待 0.10 秒
        单位 - 对 (触发单位) 发布 停止 命令
        单位 - 添加 变身 给 (触发单位)
        单位 - 设置 (触发单位) 打开 变身 永久性
        单位 - 使 玩家1(红色) 对 (触发单位) 发布 暗夜精灵族恶魔猎手 - 恶魔变身 命令
        等待 0.10 秒
        单位 - 对 (触发单位) 发布 攻击 命令到目标: u
        等待 10.00 秒
        单位 - 为 (触发单位) 删除 变身
[/trigger]
PS:两个持续时间都要足够大才行。
当然,这只是个简单而粗糙的演示(不应该使用“等待”,应该使用计时器),不过重要的是它是通用的,不管是哪个英雄都可以使用,都是这一个“变身”技能。
PS:队列状态无法触发接受指令事件。

第三节:对于大招的应用。

英雄的大招多是持续施法的技能,而对于“去除持续施法”的应用也比较广了。

比如:大部分持续性大招在使用后会有特殊的效果,比如:无法隐身,无敌失效。。。。总之是大招的共性
于是,使用无效果的“群星坠落”,就可以完成“免疫隐身”“免疫无敌”的效果。。。

而使用“巫毒”技能时,“巫毒”的效果会随单位而移动,这样就是“无敌光环”了(需要注意的是:“巫毒”在去除施法状态后,“持续时间”无效,只能一直开着。。。这个和“惊吓”是一样的,不过这个也是可以去除的详情请见第三章的内容)

可惜的是大招中的持续技能多是点目标或单位目标,这些技能还是只能出现在地图中心。
比较有趣的要说“群体传送”,该技能释放后会寻找离地图中心最近的单位为目标,而由于“传送”效果无效,然后该单位就会一直定在那里,直到第二次“群体传送”的释放(于是又有一个单位要去等第三次了)

另外:像“蝗虫群”“剑刃风暴”“复仇天神”“操控死尸”以及“地精”的大招“再装填”等无目标技能无改变。


第四节某些特例

以上所说的技能大概都遵循了第一章中所说的规律,但还是有某些特例需要注意:
一:暂停单位会打断“献祭”的状态,以使“献祭”无效化。
二:“卡布恩”(自爆)作为一个单位目标技能,还能照常发生效果。
三:“吞食尸体”作为一个无目标技能,却有单位目标技能的特点。
四:“恢复生命”(月亮井)不仅不能释放,而且连选择目标的鼠标都不会有,不过如果命令单位主动饮用还是可以的。
五:四个种族的“建造”技能都不能用常理来看。其中人族不能修建,还会越来越卡,可见泄漏严重。
六:“相位移动”在使用后,即使移动和攻击也不会消除隐身状态,同时还保持100%的透明度,可以说是很有价值的发现了。
.................

第三章:研究这些现象的原因及利用

第一节:另一方法去除持续施法,暴力去除。

上面说过,瞬间暂停单位可以去除“无目标持续技能”的施法状态,但是对于“点目标”和“单位目标”就无能为力了。
这里将讲解另一种去除持续施法的状态,但是本人对于此法的应用还有BUG,所以还是“开发中的BUG”
[trigger]
未命名触发器 002
    事件
        单位 - 任意单位 开始施放技能
    条件
        (施放技能) 等于 生命汲取
    动作
        单位 - 删除 (施放技能) 从 (触发单位)

[/trigger]
我们看看这个触发,按道理说结果应该是技能释放失败的。
但是,实际上技能成功的释放了出来,而且按S键取消施法后该技能仍在继续!!
也就是该技能不再需要持续施法!

我们可以这样理解一个持续性技能:
单位开始持续性技能——》开始技能效果——》单位进入施法状态——》单位停止施法状态——》技能效果去除

“瞬间暂停单位”是直接跳出施法状态,于是便不会引起“单位停止施法状态”的后续效果“技能效果去除”,那么技能就不会被打断了。
而“删除技能”则是直接将“——》单位停止施法状态——》技能效果去除”这个部分从技能的运行过程中去除,技能自然不会被打断。
因此此法可称为“暴力破除”。

不过,正因为是“暴力”的去除了技能的后半部分,“暴力破解”带来了可怕的BUG:无法停止。
即使这个单位死亡,这个技能的效果也不会停止,而不断累积的数据在魔兽退出时会导致魔兽的崩溃。

因此,此法还不能用于实际地图,解决方法正在研究中:
一:释放一次删除技能后,再正常释放一次技能,可以在一定程度上消除“暴力破除”的后果(比如:消除 不会停止的技能声音)
二:DOTA里的“灵魂汲取”技能不需要持续施法,但是实际上它是计时器移动施法的马甲单位,因此不能参考了。。。

第二节停止技能

我们都知道,当一个技能被释放完成或者被停止的时候,它的“技能释放点”和“技能释放目标”就会被清空。
因此,如果要制作一个“在‘技能释放结束’N秒后,在‘技能释放点’召唤出一只兔子”的技能,我们就必须使用变量来储存“技能释放点”,不然这只兔子就一定会跑到地图中间,因为技能释放点已经被清空了。

[trigger]
A
    事件
        单位 - 任意单位 发动技能效果
    条件
    动作
        单位 - 对 (触发单位) 发布 停止 命令
        游戏 - 对 (所有玩家) 发送文本信息: (转换 ((技能施放点) 的X轴坐标) 为字符串)
        游戏 - 对 (所有玩家) 发送文本信息: (转换 ((技能施放点) 的Y轴坐标) 为字符串)
[/trigger]
比如运行上面的触发后,在屏幕输出的内容为:
0.00
0.00


于是我们就可以作出推测:
之所以“瞬间暂停单位”会使所有的“单位目标技能”无效,所有的“点目标技能”都会跑到地图中心,是由于打断了单位的技能释放,因此清除了“技能释放点”和“技能释放目标”的缘故。
那么,是不是所有的可以打断单位技能的“因”,都会引发和“瞬间暂停单位”一样的“果”呢??

答案是否定的……
如果在单位“发动技能效果”时,对单位发布无目标命令(比如:停止):
那么,除了某些瞬发技能外(如:疾风步,狂战士),其他的技能都不会有效果,同时也不会有CD,但是却会正常耗魔。
同样,在单位“发动技能效果”的时候,如果使单位遇到:被“禁魔”、被“妖术”、或者“移动单位”等大多数可以打断技能的情况,都会使(非瞬发)技能无效化,并正常耗魔。
但是如果在单位“发动技能效果”时使单位“眩晕”,那么则并不会对技能效果造成影响。

这种情况有时候会令我们很无奈:
比如我们要让山丘之王扔完“风暴之锤”后立刻发动“雷霆一击”,本来直接命令他释放“雷霆一击”一句触发就可以了
但是因为这个BUG,明明可以在“技能发动效果”事件里完成的动作,却要放到0秒计时器里面,以防技能没有CD。

那么这是为什么呢?
难道只是因为“暂停单位”是打断技能中的一个特例吗?
答案同样是否定的。

我们来看下面这一段触发:
[trigger]
B
    事件
        单位 - 任意单位 发动技能效果
    条件
        “施放的技能”等于“暴风雪”
    动作
        单位 - 对 (触发单位) 发布 移动 命令到坐标:(((触发单位) 所在X轴坐标),((触发单位) 所在Y轴坐标))
        游戏 - 对 (所有玩家) 发送文本信息: (转换 ((技能施放点) 的X轴坐标) 为字符串)
        游戏 - 对 (所有玩家) 发送文本信息: (转换 ((技能施放点) 的Y轴坐标) 为字符串)
[/trigger]
按道理说,这段触发应该会和“对单位发布无目标命令”是一样的效果(也就是技能无效,正常耗魔),因为它们都是“发布命令”。
但是实际上,它却与“瞬间暂停单位”的效果相同:暴风雪在地图中间被正常释放了出来,且不需要持续施法。(当然,屏幕输出的内容还是:0.00和0.00)

而在我们在为“能打断技能”和“不能打断技能”之间为各种情况分类的时候,暴雪又和我们开了一个小玩笑。
请看以下触发:
[trigger]
C
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能)等于“暴风雪”
    动作
        单位 - 对 (新建 玩家2(蓝色) 的 qa 在 ((以 ((触发单位) 的位置) 为中心,宽 300.00 ,高 300.00 的矩形区域) 内的随机点) 面向角度:0.00 度) 发布 中立火焰领主 - 灵魂燃烧 命令到目标: (触发单位)
        单位 - 对 (触发单位) 发布 移动 命令到坐标:(((触发单位) 所在X轴坐标),((触发单位) 所在Y轴坐标))
        游戏 - 对 (所有玩家) 发送文本信息: (转换 ((技能施放点) 的X轴坐标) 为字符串)
        游戏 - 对 (所有玩家) 发送文本信息: (转换 ((技能施放点) 的Y轴坐标) 为字符串)
[/trigger]
上面说过了,在“发动技能效果”时为单位禁魔,是不会有效果,也不会有CD,但是却会正常耗魔的。
而上面的“B”触发也表现了“发布命令”是会清除“技能释放点”的。
那么,猜测这段触发的运行结果,应该也就是打断了单位动作后,单位在原地小跑一步吧.........

但是,如果你进入WAR3测试一遍的话,你会惊奇的发现:
“暴风雪”技能不仅在正确的位置释放了出来,而且还不需要持续施法了!!!
也就是说,我们用停止技能的方法把上一节“暴力破除”的效果完成了.......
而屏幕输出的内容,赫然就是技能释放点的坐标。

于是我们整理一下思路:
首先,使用禁魔来打断技能不会立刻消除技能的“技能释放点”,这可能是暴雪故意设置的。
然后,停止技能后如果单位身上有非无目标的命令,那么持续技能就会不再需要持续施法。
所以,在这两个因素的相互影响下,持续施法被完成。。。

那么,“灵魂汲取”这个技能可不可以用这个方法来直接完成呢?
于是我们打开WAR3,兴奋的发现“生命汲取”不需要持续施法了!!!
只是几秒后,电脑pia的一声……魔兽崩溃了……看来我们的研究还需要深入呢……

小贴士:禁魔技能(除了末日审判)不能禁止最大等级为一的物理技能的释放。(比如:诱捕,狂战士,疾步风.......)

第三节:消除技能效果(将持续技能变为可以随时开关的技能)

上面一章中的去除持续施法的方法看起来确实有点废材。
因为如果必须要创建马甲来禁魔的话,那还不如直接创建马甲来施法。
所以除了“空中枷锁”等可以对单位释放的技能外,好像实用性不大。

但是,使用“消除施法”的方法来代替“马甲施法”有着许多有用的特性(比如:伤害源问题、魔法效果问题、以及中断施法问题…………)

下面我们就来了解这些特性的用法之一:
将持续性技能变为可以随时开关的技能

我们就以如何将“巫毒”变为像“献祭”一样的可自由开关的技能为例 巫毒献祭.w3x (15 KB, 下载次数: 43)
[trigger]
A
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 巫毒
    动作
        单位 - 暂停 (触发单位)
        单位 - 恢复 (触发单位)
        设置 A = (触发单位)
        触发器 - 开启 C <预设>
[/trigger]
[trigger]
B
    事件
        单位 - 任意单位 开始施放技能
    条件
        (施放技能) 等于 巫毒
        ((触发单位) 拥有 巫毒(施法者)) 等于 TRUE
    动作
        设置 A = (触发单位)
        触发器 - 开启 C <预设>
[/trigger]
[trigger]
C
    事件
        时间 - 每 0.00 秒触发事件
    条件
    动作
        单位 - 对 A 发布 停止 命令
        触发器 - 关闭 (当前触发)
[/trigger]
对于一个持续性技能来说,在“开始释放技能”时它的数据就会被重置
(因此在“开始释放技能”的时候删除技能,技能也会继续;因此即使消除了施法状态,一个单位还是不能同时维持两个相同的技能的效果……)
所以,我们只要在“开始释放技能”的时候停止单位,就可以实现“关闭”技能的效果了。

可见,官方的技能和我们自己制作的技能在思路上并没有什么差别,都是在“开始释放技能”的时候为单位绑定计时器而已。




第七节等待以后补充。。。。

评分

参与人数 1威望 +4 收起 理由
血戮魔动冰 + 4

查看全部评分

发表于 2010-7-13 17:26:15 | 显示全部楼层
一章三四类无视施法距离?
回复

使用道具 举报

 楼主| 发表于 2010-7-13 17:29:59 | 显示全部楼层
引用第1楼德鲁依于2010-07-13 17:26发表的  :
一章三四类无视施法距离?
无视
回复

使用道具 举报

发表于 2010-7-13 17:31:57 | 显示全部楼层
另一个东东
在测试手点版的灼热箭矢时有没有发现什么问题
没有瞬间暂停的情况
回复

使用道具 举报

 楼主| 发表于 2010-7-13 17:36:49 | 显示全部楼层
那说明你出错了。。。或者是1.24没试过。。。
回复

使用道具 举报

发表于 2010-7-13 17:47:12 | 显示全部楼层
理解错了...其实是我说错吧应该
借这个帖子提另外一个问题罢....扯得有点远。

一个单位用点用的灼热之箭 会出现问题 单位的动画播放速度会加快 属性越高越明显 不进行一次正常地攻击就不会恢复
可能是已知问题...本来打算在疑难区问的

点评

攻击速度问题吧...  详情 回复 发表于 2014-1-19 11:47
回复

使用道具 举报

发表于 2010-7-13 20:06:39 | 显示全部楼层
关于会到地图中心的问题有研究过,忘记内容了。
回复

使用道具 举报

发表于 2010-7-13 21:57:45 | 显示全部楼层
很不错。。期待完成

第一类可能是要转身(面向)的问题,如果去掉估计就能了
回复

使用道具 举报

发表于 2010-7-15 10:54:58 | 显示全部楼层
希瓦加油。
很棒的测试。
回复

使用道具 举报

发表于 2010-7-15 11:04:05 | 显示全部楼层
刚才用生命汲取吸干一只大海龟,海龟死亡后汲取效果仍然存在。
于是就打算用T复活了他再吸,Alt+F4退出游戏后提示崩溃了………………
回复

使用道具 举报

发表于 2010-7-15 11:14:38 | 显示全部楼层
引用第10楼『四裤全输』于2010-07-15 11:04发表的  :
刚才用生命汲取吸干一只大海龟,海龟死亡后汲取效果仍然存在。
于是就打算用T复活了他再吸,Alt+F4退出游戏后提示崩溃了………………
是什么版本的?
回复

使用道具 举报

发表于 2010-7-15 11:16:21 | 显示全部楼层
1.20
又一次光荣的崩溃。
不知怎么竟然让普通单位玩出英雄单位死亡的渐变消隐了……
鉴定为重生的问题。

750HP的大海龟被N个冲击波杀死重生后立刻就地再阵亡……
重生间隔只是设成了0而已。

啥也没干目标单位死了照样生命汲取,然后崩溃…………
鉴定为生命汲取汲取间隔过短。

J+WE=危险物品
回复

使用道具 举报

 楼主| 发表于 2010-7-15 11:45:15 | 显示全部楼层
当然会崩溃...........我的也崩溃了......
所以我才说这是“开发中的BUG”呀,嘿嘿
所以在我没写完之前不要试哦。

解决方法正在研究中:
一:释放一次删除技能后,再正常释放一次技能,可以在一定程度上消除“暴力破除”的后果(比如:消除 不会停止的技能声音)
二:怀疑DOTA里的“灵魂汲取”也是这么做的(因为“灵魂汲取”必须按S键取消后才能进行其他动作)但是打开J文件却未发现“A1PH”这个技能的相关触发。

所以,一起来继续研究吧。
回复

使用道具 举报

 楼主| 发表于 2010-7-15 12:17:38 | 显示全部楼层
于是想请熟悉DOTA的高人去导导“灵魂汲取”的相关触发,反正我是没有找到。。
回复

使用道具 举报

发表于 2010-7-15 14:06:12 | 显示全部楼层
好有意思啊
回复

使用道具 举报

发表于 2010-7-15 14:55:20 | 显示全部楼层
你是直接找'A1PH'的么?把它转成十进制找过没?
回复

使用道具 举报

 楼主| 发表于 2010-7-15 15:17:45 | 显示全部楼层
引用第16楼zhuzeitou于2010-07-15 14:55发表的  :
你是直接找'A1PH'的么?把它转成十进制找过没?
转换过。。。
回复

使用道具 举报

发表于 2010-7-22 15:30:35 | 显示全部楼层
实验结论:“瞬间暂停”单位会使被使用的持续性技能变成不需要持续施法的技能。。。

“群星坠落”和“宁静”等却可以正常使用。

---------如此的话, 某些时候直接用这个技巧就可以省略马甲单位了.真方便.
回复

使用道具 举报

发表于 2010-7-22 17:27:27 | 显示全部楼层
希瓦好帅!
回复

使用道具 举报

 楼主| 发表于 2010-7-22 17:45:47 | 显示全部楼层

真的吗?o(∩_∩)o 谢谢~~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 00:01 , Processed in 0.239439 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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