|
发表于 2012-6-22 14:18:25
|
显示全部楼层
嘛,排泄肯定是没问题~
[trigger]JN
事件
单位 - 任意单位 发动技能效果
条件
(施放技能) 等于 叫什么名字好呢?
动作
设置 D = (触发单位)
单位 - 设置 D 关闭 碰撞
设置 P = (技能施放点)
单位 - 创建 1 个 马甲 给 (D 的所有者) 在 P ,面向角度为 默认建筑朝向 度
单位 - 对 (最后创建的单位) 发布 人族山丘之王 - 雷霆一击 命令
等待 0.30 秒
单位 - 立即移动 D 到 P
环境 - 创建一个持续 1.00 秒的 下陷 波纹变形在 P ,开始半径: 50.00 ,结束半径: 650.00 ,深度: 200.00 周期: 0.25 秒,波间距: 100.00
特殊效果 - 删除 (新建特效 Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl 在 P 处)
特殊效果 - 删除 (新建特效 Abilities\\Spells\\NightElf\\BattleRoar\\RoarCaster.mdl 在 P 处)
单位组 - 选取 (半径为 350.00 圆心为 P 且满足 ((((匹配单位) 的所有者) 是 (D 的所有者) 的敌人) 等于 TRUE) 的所有单位) 内所有单位做动作
Loop - 动作
如果 (((选取单位) 是存活的) 等于 TRUE) 成立,则运行 (单位组 - 添加 (选取单位) 到 danweizu) 否则运行 (不做任何动作)
单位 - 设置 (选取单位) 关闭 碰撞
触发器 - 开启 Yidong <预设>
等待 0.50 秒
触发器 - 关闭 Yidong <预设>
单位 - 设置 D 打开 碰撞
单位组 - 选取 danweizu 内所有单位做动作
Loop - 动作
单位 - 设置 (选取单位) 打开 碰撞
单位组 - 清空 danweizu 内所有单位
点 - 清除 P
[/trigger]
[trigger]Yidong
事件
时间 - 每当游戏逝去 0.05 秒
条件
动作
单位组 - 选取 danweizu 内所有单位做动作
Loop - 动作
设置 point_______u = ((选取单位) 的位置)
设置 j = (P 到 point_______u 的角度)
设置 point = (从 point_______u 开始,距离 20.00 ,方向为 j 度的位移处)
单位 - 立即移动 (选取单位) 到 point
点 - 清除 point_______u
点 - 清除 point
[/trigger]
上面两个是演示里的原T,然后我只提供多人化思路,LZ不会的请自行补基础~
首先,由于原T中全是全局变量,所以那些变量要全部换成局部
由于局部变量的作用域只在一个函数内(T的话可以简单理解为只能在一个T的动作里作用,且不能用于单位/玩家组动作,应该还有一些不能用的,不过主要是这两个),且Yidong用了JN里记录的danweizu变量,所以这个单位组变量需要在JN里用哈希表储存,然后在Yidong里读取
由于这两个T的唯一联系是时间,而哈希表传参需要一个唯一不变的东西作为主索引,所以将JN里等待0.5秒换成0.05秒周期的计时器,另外开启/关闭Yidong这两个动作也不需要了,换成动态注册这个计时器到期,而danweizu这个变量就存在以这个计时器为主索引的哈希表中
最后一个改动,原T是要让Yidong运行10次(0.5/0.05 = 10)后关闭,所以要给这个计时器绑个整数,每次到期的时候+1,然后判断是否等于10了,等于10的时候停止计时、哈希表排泄、删计时器
PS:变量换局部后,记得用完这些变量后要设置成null(除了integer,real,boolean,string这四个类型不用设置)
以上是根据原T的思路原封不动地修改,如果用数组实现多人化的话请参考希瓦的多次运行不冲突触发(名字应该不对,反正搜索下就能找到这个帖~)
可能改多人的话触发思路稍微换一下可以再简单点~ |
|