kirito 发表于 2016-5-31 21:42:40

提一个关于自创技能的问题,大神请进

恩,,好久没来GA发帖了 不知道还有木有人…嘛~~言归正传,先给各位看下我的技能效果:
技能介绍:哈伊尔召唤一道闪电,若闪电击杀了该单位则重置该技能冷却时间,若闪电击杀了敌方英雄,则重置所有技能冷却时间,每用该技能击杀一个单位,则获得一个“雷”点数,击杀英雄则获得两个“雷”点数等级         范围(施法/持续)         伤害数值         魔法消耗      冷却时间      持续时间    LV1 —— 500范围                   100+2*“雷”点数       150             15            ~~~~    LV2 —— 500范围                   150+2*“雷”点数       250             13            ~~~~    LV3 —— 500范围                   200+2*“雷”点数       350             11            ~~~~ LV4 —— 500范围                   250+2*“雷”点数       400             10            ~~~~
问题!!:如何判断单位是被该技能杀死的…我尝试过添加魔法效果,但检测不到…也请不要说用马甲代放技能…

舞动的酒杯 发表于 2016-5-31 22:31:52

你试试在伤害动作之后加个0秒计时器判断单位死亡行不行

chyj4747 发表于 2016-6-1 03:46:53

本帖最后由 chyj4747 于 2016-6-1 03:55 编辑

LS说的大方向是对的,但还是有细节问题比如0秒后凶手不一定是这个施法者,又或者0秒内施法者对目标放了多个不同技能

首先要取决于有没有减伤类的技能,如果没有,那么直接在技能触发里判断伤害值大于等于目标血量就可以了
如果有会干扰上述判断方式的东西存在,那么就得用死亡事件捕捉并做个特殊处理来判断

先给LZ科普下吧,两个触发,一个触发里在造成伤害后打印文字A,另一个触发就是任意单位死亡时打印文字B,这两个触发创建的顺序无所谓,结果都是一样的
如果造成的伤害杀死了单位,那么结果就是先文字B后文字A,这也就意味着,在伤害动作执行完时,如果单位死了,就会立刻触发死亡事件,等死亡事件处理完了,再回过来执行伤害动作之后的动作,这个过程可比0秒计时器短多了,如果在伤害动作之前开了0秒计时器的话,到期事件会在上述都执行完了之后再触发

那么就可以利用这个特性来处理了
首先死亡事件里需要获取两个数据,一个是施法者,这样才能判断是否跟凶手是同一人,另一个是技能标识,这样才能确定死之前是中了这个技能而不是被别的方式弄死的
很明显的,这两个数据都需要从伤害触发里获取,由于在这个特性里,触发是连续运作的关系,所以可以简单视为没有时间差,也就是全局变量不会被改变,那么就可以用全局变量来传值了
造成伤害前先用全局变量记录施法者和这个技能(任意一种唯一数据即可,即能代表是该技能,比如技能的ID),然后造成伤害,单位死了立刻触发死亡事件,死亡触发里判断是该技能且凶手是施法者之后,对施法者做那些你技能设定里的东西

完善:
利用到全局变量多少会担心冲突问题,虽说上述触发过程中不相关的触发不会插进来,但是比如在死亡触发中的某个动作触发了第三个触发器,而这第三个触发器改变了那些全局变量的可能性还是存在的
所以,在利用全局变量传值的时候就一定要先用局部变量保存其原先的值,然后再给全局变量赋值,最后当触发运行完时把全局变量还原回局部变量保存的值
所有的触发都这么做的话就能避免冲突了

在最一开始的地方提到了“施法者对目标同时放了多个不同技能”的问题,这个可以利用全局变量只能绑定一个值来解决
假设A技能直接杀死了单位,那么B技能就没机会触发死亡事件了,所以这种情况不存在问题
假设A技能没杀死单位,B技能杀死了,那么这个时候那个记录技能标识的变量记录的就是B技能了,所以死亡触发里不会误判



kirito 发表于 2016-6-1 16:58:17

chyj4747 发表于 2016-6-1 03:46
LS说的大方向是对的,但还是有细节问题比如0秒后凶手不一定是这个施法者,又或者0秒内施法者对目标放了多个 ...

看了一遍,谢谢楼上那么长的回复,但是,你们可能漏了一点,我的技能伤害不是完全由触发造成的,这个技能本身也是附带伤害值的,即,假设没有触发,这个技能也能造成伤害。

kirito 发表于 2016-6-1 17:46:08

chyj4747 发表于 2016-6-1 03:46
LS说的大方向是对的,但还是有细节问题比如0秒后凶手不一定是这个施法者,又或者0秒内施法者对目标放了多个 ...
谢谢楼上两位为我解答,虽然看的似懂非懂,但总算做出来了,虽然可能还有一些漏洞…下面是我写的触发:(大神勿喷/(ㄒoㄒ)/~~)

chyj4747 发表于 2016-6-1 22:10:18

本帖最后由 chyj4747 于 2016-6-1 22:12 编辑

kirito 发表于 2016-6-1 17:46
谢谢楼上两位为我解答,虽然看的似懂非懂,但总算做出来了,虽然可能还有一些漏洞…下面是我写的触发:( ...
sx 12和sx 13可以合并
等待1秒太长,你让单位放技能后手动取消后摇然后立刻攻击会放别的技能试试,有可能会不正确触发死亡事件

这个英雄还有没有别的持续伤害技能(比如毒镖)?有的话先用持续伤害,目标血很低的时候放这个技能,当然得杀不死,然后瞬间持续伤害把目标弄死了,会正常运行死亡触发

另外既然你都写了伤害动作了个人觉得非延时类技能的伤害一次性处理完比较好,原技能伤害调0即可

kirito 发表于 2016-6-1 22:14:43

chyj4747 发表于 2016-6-1 22:10
sx 12和sx 13可以合并
等待1秒太长,你让单位放技能后手动取消后摇然后立刻攻击会放别的技能试试,有可 ...

恩, 是的…可以合并这一点没有注意到,,
这是顺发技能,,没有办法手动取消…然后…也没有持续伤害的技能了,,另一个伤害技能有是有 是大招 不过需要引导1.5秒,,所以可以不考虑。也没有类似造成持续伤害的装备

chyj4747 发表于 2016-6-2 05:34:18

你的触发还有一个问题,就是我前面说的全局变量没有做保存处理,也就意味着这个触发只能给一个单位用,两个单位同时放这个技能的时候,单位A先放于是变量记录为单位A,之后单位B放了于是变量变成单位B,但是单位A的技能杀死目标的时候凶手不等于变量记录的单位B

你用的是YDWE吧,我看到有1秒后删除特效这个动作。。
那么YD可以设置局部变量的,在动作一开始用局部变量记录这个全局变量,然后再给全局变量赋值,在触发结束时全局变量赋值成局部变量,然后把局部变量设为空(排泄)
大致就是设置局部变量u = SXLhero
SXLhero = 触发单位
等待1秒
SXLhero = 局部变量u
设置局部变量u = 空(或者是null)

kirito 发表于 2016-6-2 11:31:24

chyj4747 发表于 2016-6-2 05:34
你的触发还有一个问题,就是我前面说的全局变量没有做保存处理,也就意味着这个触发只能给一个单位用,两个 ...

这一点,,我用的全局变量是问题不大的,,因为不会出现两个人同时释放这个技能,排泄YD我用的是自动排泄 应该可以的

kcmebca 发表于 2016-8-14 22:49:26

如果伤害无视魔抗和护甲(神圣伤害)就直接判断伤害值是否等于目标生命值..

Hzhz123456 发表于 2016-8-15 09:17:56

我怎么记得可以直接后面添加 如果单位死亡 则重置CD就可以了~

kirito 发表于 2016-8-20 11:32:14

Hzhz123456 发表于 2016-8-15 09:17
我怎么记得可以直接后面添加 如果单位死亡 则重置CD就可以了~

嗯,,感谢所有楼上的解说 已经做出来了…不过11楼,,重置CD只能用作我这个技能的后一个条件哟,之前还有一个重置单个技能CD

Hzhz123456 发表于 2016-8-22 16:43:16

kirito 发表于 2016-8-20 11:32
嗯,,感谢所有楼上的解说 已经做出来了…不过11楼,,重置CD只能用作我这个技能的后一个条件哟,之前 ...

要重置单个也是一样的道理啊把重置CD改成 删除技能 然后再添加技能 就可以了啊!
页: [1]
查看完整版本: 提一个关于自创技能的问题,大神请进