找回密码
 点一下
查看: 1803|回复: 6

帮我看看这个技能有没有泄漏什么的

[复制链接]
发表于 2012-6-21 17:46:46 | 显示全部楼层 |阅读模式
还有就是能不能把这个技能做成可以多人同时使用而不冲突的,怎么做能教下么
跳斩击退-蚊子.w3x (24 KB, 下载次数: 3)
发表于 2012-6-21 22:59:55 | 显示全部楼层
多人化:把全局变量改成局部,传参用哈希表
回复

使用道具 举报

 楼主| 发表于 2012-6-22 08:40:07 | 显示全部楼层
能说的详细点么?能有相关演示或者贴下触发最好
回复

使用道具 举报

发表于 2012-6-22 11:13:38 | 显示全部楼层
要不然用数组变量?
回复

使用道具 举报

发表于 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的思路原封不动地修改,如果用数组实现多人化的话请参考希瓦的多次运行不冲突触发(名字应该不对,反正搜索下就能找到这个帖~)
可能改多人的话触发思路稍微换一下可以再简单点~
回复

使用道具 举报

 楼主| 发表于 2012-6-22 15:07:54 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:嘛,排泄肯定是没问题~

[trigger]JN
    事件
        单位 - 任意单位 发动技能效果
....... (2012-06-22 14:18)
谢啦,希瓦的帖子搜到了,大概弄明白了
回复

使用道具 举报

发表于 2012-6-22 21:53:37 | 显示全部楼层
cwx891203:谢啦,希瓦的帖子搜到了,大概弄明白了
&#160;(2012-06-22 15:07)&#160;
如果问题解决了请修改分类~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 12:15 , Processed in 0.034085 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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