|
比原來的完美模拟闪电链新增了伤害距离上个单位最近的目标和被攻击后牵引到施法单位身旁
判断单位是否最近的主要是这几个动作做的,触发如下[trigger]设置 lighten_p1 = ((触发单位) 的位置)
设置 lighten_group2 = (半径为 1000000000.00 圆心为 lighten_p1 且满足 (((((匹配单位) 在 lighteneds[(((伤害来源) 的所有者) 的玩家索引号)] 中) 等于 FALSE) 且 (((匹配单位) 是 建筑) 等于 FALSE)) 且 ((((匹配单位) 是 死亡的 <New>) 等于
-------- 找距离最短的单位 --------
设置 Distance[1] = 1000000000.00
单位组 - 选取 lighten_group2 内所有单位做动作
Loop - 动作
设置 p[3] = ((选取单位) 的位置)
设置 Distance[0] = (lighten_p1 和 p[3] 之间的距离)
-------- 判断距离是否比上次更短 上次=Distance[1] --------
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
Distance[0] 小于 Distance[1]
Then - 动作
设置 Distance[1] = Distance[0]
设置 au = (选取单位)
Else - 动作
-------- 结束 --------
点 - 清除 p[3]
-------- 结束 --------
[/trigger]
而移位触发是这样的,触发如下[trigger]-------- 为要移动的单位新开计时器 --------
设置 i = (开启中心计时器一个新的运行索引,时间间隔为 0.04 秒,是否循环 TRUE,运行触发器 move <预设>)
设置 u = (触发单位)
设置 uuu = uu[(((伤害来源) 的所有者) 的玩家索引号)]
-------- 结束 --------
[/trigger][trigger]move
事件
条件
动作
设置 ii = (获取当前到期计时器运行索引)
设置 p[0] = (u[ii] 的位置)
设置 p[1] = (uuu[ii] 的位置)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
(p[0] 和 p[1] 之间的距离) 大于或等于 100.00
Then - 动作
设置 p[2] = (从 p[0] 开始,距离 15.00 ,方向为 (p[0] 到 p[1] 的角度) 度的位移处)
单位 - 设置 u[ii] 的X坐标为 (p[2] 的X轴坐标)
单位 - 设置 u[ii] 的Y坐标为 (p[2] 的Y轴坐标)
点 - 清除 p[2]
Else - 动作
系统<YDWE> - 终止运行索引为 (获取当前到期计时器运行索引) 的计时器运行
点 - 清除 p[0]
点 - 清除 p[1]
[/trigger] 引用楼主lghdtc于2011-03-20 19:20发表的 完美模拟闪电链 [纯T] :
说实在,我自己也感到了似乎是在用完全不必要的手段在实现一个现成可用的技能。但是如果要捕捉闪电链的最后一个目标,我找不到更好的办法。我看过他人提供的一些闪电链,基本上闪电被创建后都是死死地钉在地上,很难看。所以重做了这个。
老狼UI,冰封王座1.24B
申请免截图,因为,闪电链什么的,都一个样……
完全使用触发写的,比默认的闪电链仅仅多了几项参数,但是却繁琐了N倍。
除了默认版本的所有参数之外,有以下特点:
1.可以随意捕捉闪电链的的第x个目标
2.伤害递减公式由原本的等比公式可以改为更加复杂的公式
3.闪电持续时间可调
与其他作者的闪电链模拟相比,本演示的闪电链跟随单位移动,完全能达到原版效果。
此演示支持多人(但是每位玩家至多拥有一个该技能)
注意:由于使用一维数组变量来实现二维数组变量的功能,因此本演示中闪电链跳跃次数由变量数组大小所局限,理论上可以达到无限多次弹射(看你机器的运算能力啦)。
送上附件:
1.24e版:
连锁闪电 1.24e.w3x
(41 KB, 下载次数: 183)
1.20版:
连锁闪电 1.20.w3x
(41 KB, 下载次数: 77)
请使用YDWE1.20c or以上版本打开 |
评分
-
查看全部评分
|