找回密码
 点一下
查看: 3120|回复: 35

技能释放导致魔兽崩溃

[复制链接]
发表于 2013-12-21 23:12:26 | 显示全部楼层 |阅读模式
技能描述:释放技能后,最多选择3名玩家角色,分别用闪电效果连起来,如果3名角色没有同时聚在一起,则每0.5秒受到一次法力燃烧的伤害。
1.jpg

2.jpg

3.jpg

我的问题:我的技能第一次释放的时候,捕捉了2个玩家角色(因为当时英雄附近只有2个玩家角色),当释放第2次的时候,捕捉了3个玩家角色(当时英雄附近不只3个玩家角色,但是技能设计本身最多捕捉3个玩家角色),然后,魔兽就崩溃了
4.jpg

测试后,我觉得是闪电效果的问题,是不是不能删除没有创建的闪电效果?捕捉了2个玩家角色,只创建了1条闪电效果;然后第2次释放的时候,第一个触发器开始动作是删掉ML_1ML_2ML_3 3条闪电效果,没有ML_2和ML_3的闪电效果,这样删掉会出现BUG吗?
如果大神你们发现了其他导致魔兽崩溃的问题,欢迎指出来
发表于 2013-12-22 02:05:42 | 显示全部楼层
LZ的触发不完全啊……我觉得这样很难看出来,至少我暂时没看出什么问题

推荐LZ把完整的触发发上来或者弄个测试地图上来,个人推荐后者
或者LZ也可以自己测,把觉得有问题的动作禁用试试会不会崩

LZ发的错误图指的是改写一个不存在的变量或数据,所以个人推测很可能是移动闪电链的动作有问题(即闪电链变量被删除了,然后要改变不存在的闪电链的坐标)

点评

即闪电链变量被删除了,然后要改变不存在的闪电链的坐标,这个问题怎么解决? 技能单独上传上来了  详情 回复 发表于 2013-12-22 12:09
回复

使用道具 举报

 楼主| 发表于 2013-12-22 12:09:37 | 显示全部楼层
chyj4747 发表于 2013-12-22 02:05
LZ的触发不完全啊……我觉得这样很难看出来,至少我暂时没看出什么问题

推荐LZ把完整的触发发上来或者弄 ...

即闪电链变量被删除了,然后要改变不存在的闪电链的坐标,这个问题怎么解决?
有问题的技能.w3x (23.12 KB, 下载次数: 4)

技能单独上传上来了

回复

使用道具 举报

 楼主| 发表于 2013-12-22 21:56:05 | 显示全部楼层
没有人帮忙吗?
回复

使用道具 举报

发表于 2013-12-23 05:12:04 | 显示全部楼层
本帖最后由 chyj4747 于 2013-12-23 05:16 编辑

额。。基本确定是不存在的闪电效果的关系了,其它的动作不会造成内存不可写,然后问题是造成这种状况的原因我始终查不出来……debug了将近4小时。。
减慢触发后发现Bug出现时的现象是明明没有任何删除闪电效果的动作被运行但是闪电效果却一下消失一下出现,几次之后就出现内存不可写了。。

个人感觉是mlsl 2和mlsl 3这两个触发联合作用下产生的bug,虽然这两个触发除了循环整数的变量外基本上没关系,因为只运行mlsl 2或者不移动闪电效果都不会出问题
于是我的其中一个推测是“关闭触发器”这个动作运行前目标触发器已经被触发了,虽然关闭了但是触发器仍旧运行了一遍,不过该推测与bug现象不符,因为bug出现时似乎不涉及任何关闭触发器动作,但是除此之外我暂时想不出别的原因,应该也不是循环数冲突(我debug时将可能冲突的循环数区分开了)

另外你的触发还有两个比较大的问题:
1. 一大堆点泄漏,在mlsl 2里有几个循环动作,比如:循环动作[SBDL_A]从 1 到 2, do (设置 mlsl_D[SBDL_A] = (mlsl_DW[SBDL_A] 的位置)),该动作或者说该触发没有处理掉mlsl_D之前记录的点,虽然其它触发有处理掉mlsl_D存的点,但是都只是最后一个存的点,中间N多点泄漏,修改方法可以在这动作前面加上删除点,也可以将该动作直接改成移动mlsl_D[SBDL_A]到目标单位的新坐标

2. 算法问题,举个最简单的例子,当施法者周围只有3个目标时,只有第一条闪电效果或者说只有链接了mlsl_DW[1]和mlsl_DW[2]的闪电效果会移动,原因是mlsl 1在选取目标时将被选中的目标直接移出单位组mlsl_DWZ,于是mlsl 2在触发时DWZ中的单位数量为0因此运行Else里的动作,而Else里的动作是根据施法者身边只有两个目标单位的情况来写的,因此只会移动一条闪电效果

综上所述,个人推荐LZ重写,并且最好合并mlsl 2和mlsl 3,用一个计时器就能计时的动作分两个触发两个方式来计时太耗效率了,宁可多使用4byte内存来存一个整数计算是否到0.5秒了(计时器0.05秒循环,这个整数变量记了10次就0.5秒了)

另外关于排泄LZ也不用这么谨慎,在结束触发的时候删了一遍开始触发的时候再删一遍……重复删除只会浪费效率

点评

点泄漏很简单,合并最后两个触发器我看懂了,算法问题可以用添加单位到单位组解决吧? 还有,闪电效果的bug怎么改?我最重要的问题还没解决啊....  详情 回复 发表于 2013-12-23 10:01
回复

使用道具 举报

 楼主| 发表于 2013-12-23 10:01:18 | 显示全部楼层
chyj4747 发表于 2013-12-23 05:12
额。。基本确定是不存在的闪电效果的关系了,其它的动作不会造成内存不可写,然后问题是造成这种状况的原因 ...

点泄漏很简单,合并最后两个触发器我看懂了,算法问题可以用添加单位到单位组解决吧?
还有,闪电效果的bug怎么改?我最重要的问题还没解决啊....
回复

使用道具 举报

发表于 2013-12-23 23:00:33 | 显示全部楼层
渡边麻友 发表于 2013-12-23 10:01
点泄漏很简单,合并最后两个触发器我看懂了,算法问题可以用添加单位到单位组解决吧?
还有,闪电效果的 ...

不一定没解决啊,重写之后说不定就没这个bug了,话说为什么我自己用闪电效果就从来没遇到过这种bug……

点评

重写?就是全部触发重新在创建一次?  详情 回复 发表于 2013-12-24 00:37
回复

使用道具 举报

 楼主| 发表于 2013-12-24 00:37:42 | 显示全部楼层
chyj4747 发表于 2013-12-23 23:00
不一定没解决啊,重写之后说不定就没这个bug了,话说为什么我自己用闪电效果就从来没遇到过这种bug……

重写?就是全部触发重新在创建一次?
回复

使用道具 举报

发表于 2013-12-24 03:43:45 | 显示全部楼层
渡边麻友 发表于 2013-12-24 00:37
重写?就是全部触发重新在创建一次?


这个随你啊。。也可以在现有的触发上改,不过我觉得是重写方便点,至少写的时候不会乱
回复

使用道具 举报

 楼主| 发表于 2013-12-24 08:42:45 | 显示全部楼层
chyj4747 发表于 2013-12-24 03:43
这个随你啊。。也可以在现有的触发上改,不过我觉得是重写方便点,至少写的时候不会乱

点泄漏跟算法问题都改好了,合并触发器我也合并好了。但是,我发现问题更严重了,现在直接捕捉几次3个英雄也会魔兽崩溃..
回复

使用道具 举报

发表于 2013-12-24 13:11:23 | 显示全部楼层
本帖最后由 chyj4747 于 2013-12-24 13:12 编辑
渡边麻友 发表于 2013-12-24 08:42
点泄漏跟算法问题都改好了,合并触发器我也合并好了。但是,我发现问题更严重了,现在直接捕捉几次3个英 ...


本来就会崩。。我之前测试的时候只有不移动闪电效果或者不运行mlsl 3的动作才不会崩,然后我在想会不会是马甲放的技能闪电特效和触发器创建的闪电特效有什么冲突……

要不移动闪电效果时把检查可见性打开试试?
回复

使用道具 举报

发表于 2013-12-24 13:24:23 | 显示全部楼层
模板用lo以前的闪电链不就好了……
虽然那个技能本身不支持多人,不过闪电效果的排泄还是完整的……
回复

使用道具 举报

 楼主| 发表于 2013-12-24 17:51:31 | 显示全部楼层
chyj4747 发表于 2013-12-24 13:11
本来就会崩。。我之前测试的时候只有不移动闪电效果或者不运行mlsl 3的动作才不会崩,然后我在想会不会 ...

“会不会是马甲放的技能闪电特效和触发器创建的闪电特效有什么冲突”我怎么没有想到这个问题。。。。法力燃烧的闪电效果我没有删掉,我以为会没有影响的
回复

使用道具 举报

 楼主| 发表于 2013-12-24 17:52:35 | 显示全部楼层
lo 发表于 2013-12-24 13:24
模板用lo以前的闪电链不就好了……
虽然那个技能本身不支持多人,不过闪电效果的排泄还是完整的……

有附件吗?ol好久没有看过我的帖子了。。。
回复

使用道具 举报

 楼主| 发表于 2013-12-24 19:30:15 | 显示全部楼层
chyj4747 发表于 2013-12-24 13:11
本来就会崩。。我之前测试的时候只有不移动闪电效果或者不运行mlsl 3的动作才不会崩,然后我在想会不会 ...

我测试过了,很有可能是马甲单位释放的法力燃烧的闪电效果跟创建的闪电效果有冲突。我删掉法力燃烧的闪电效果,魔兽就没有崩溃了。不过,不知道为什么,我先捕捉2个单位,再捕捉3个单位,只会显示2条闪电效果,为什么?
回复

使用道具 举报

发表于 2013-12-24 23:28:43 | 显示全部楼层
本帖最后由 chyj4747 于 2013-12-24 23:29 编辑
渡边麻友 发表于 2013-12-24 19:30
我测试过了,很有可能是马甲单位释放的法力燃烧的闪电效果跟创建的闪电效果有冲突。我删掉法力燃烧的闪电 ...


那是你算法问题……

话说技能的闪电和触发的闪电到底哪里冲突了我还是不知道。。
回复

使用道具 举报

 楼主| 发表于 2013-12-24 23:36:21 | 显示全部楼层
本帖最后由 渡边麻友 于 2013-12-25 00:02 编辑
chyj4747 发表于 2013-12-24 23:28
那是你算法问题……

话说技能的闪电和触发的闪电到底哪里冲突了我还是不知道。。

我新手一个,我也不知道.....我更加不知道我的算法哪里有问题。。。 有问题的技能.w3x (25.25 KB, 下载次数: 3)

回复

使用道具 举报

发表于 2013-12-26 01:16:57 | 显示全部楼层
渡边麻友 发表于 2013-12-24 23:36
我新手一个,我也不知道.....我更加不知道我的算法哪里有问题。。。

额。。好吧,算法基本上没问题,是可见性的关系,闪电效果有个可见性,T的动作创建的时候没有这个选项,默认是检查可见性,如果闪电效果无法在当前玩家的可见视野里完整显示的话就不显示,然后LZ在后面移动闪电效果的时候选择禁止检查可见性,于是之前没显示出来的闪电效果之后都不会显示了

嘛。。其它问题:
1. 每次选取一个随机单位都要圈一遍周围的单位,一,浪费效率,二,每圈一次泄漏一个单位组,因为LZ没有排泄,而且按LZ的写法也没法排泄

2. 大致看下来似乎DWZ这个单位组仅仅是用来计算有多少目标中了技能?那何不用一个整数来记录,一,省内存,二,按照LZ的判断数量方法,每次判断要数一遍单位组,虽然单位不多,但是相对于直接用整数而言太浪费效率

3. 不做任何动作  这个动作除非要跳过接下来所有动作否则绝对不要加,不写任何动作触发就不会做任何动作,写了这个浪费效率

4. 不必要的排泄太多了

额。。暂且就这么多吧

点评

1. 每次选取一个随机单位都要圈一遍周围的单位,一,浪费效率,二,每圈一次泄漏一个单位组,因为LZ没有排泄,而且按LZ的写法也没法排泄 2. 大致看下来似乎DWZ这个单位组仅仅是用来计算有多少目标中了技能?那何  详情 回复 发表于 2013-12-26 09:17
回复

使用道具 举报

发表于 2013-12-26 08:56:36 | 显示全部楼层
闪电链
   ↑ CLICK!

其实很久以前在水区发过的一个闪电绘画的地图也是完整排泄闪电效果的……

总之,闪电效果排泄要求比较严格,多排会出错,少排……少排压根起不到排泄的效果嘛……

然后你把我的名字写错了……

点评

.........你说了我赶紧拉回去看了下,果然把你的名字写错了。。。。。  详情 回复 发表于 2013-12-26 09:16
回复

使用道具 举报

 楼主| 发表于 2013-12-26 09:16:03 | 显示全部楼层
lo 发表于 2013-12-26 08:56
闪电链
   ↑ CLICK!

.........你说了我赶紧拉回去看了下,果然把你的名字写错了。。。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 21:44 , Processed in 0.810635 second(s), 34 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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