魔兽地图编辑器吧 关注:64,428贴子:3,828,945
  • 44回复贴,共1

【求救】什么原因可能导致地图突然出现各种奇怪BUG

只看楼主收藏回复

不好意思又来麻烦大家~、~
我的地图在最新版本的改动之后,陆续出现了一些很奇怪的BUG,除下例之外,还出现了一些例如特效未被清除、英雄死亡不复活等问题。这些BUG我仔细看过都不属于正常应该出现的问题,也就是说在写法上是看不出来问题的(这可能是我自己见识浅薄)。所以我感觉是一些更深层次的问题,无奈之下前来求教。
BUG之一如下例。
例:
这是一个回蓝的触发,效果大致为单位释放技能结束后打开循环计时器,计时器运行动作为HAhuilan,也就是每秒恢复魔法值,要求是单位魔法值回满或单位再次使用该技能则移除回蓝效果。
出现的问题是:该单位使用完该技能之后,触发回蓝效果,但回蓝不再停止,无论是回满、再次使用该技能或是死亡复活。
以下是触发:
---------------------------------------------------------------------
function HAhuilan takes nothing returns nothing
////计时器动作////
if GetUnitStateSwap(UNIT_STATE_LIFE,C)>0.00 then
if GetUnitManaPercent(C)>=97.00 then
call SetUnitManaBJ(C,GetUnitState(C,UNIT_STATE_MAX_MANA))
call DestroyTimer(UBhuilan)
else
call SetUnitManaBJ(C,(GetUnitState(C,UNIT_STATE_MANA)+(GetUnitState(C,UNIT_STATE_MAX_MANA)*3/100)))
endif
else
call DestroyTimer(UBhuilan)
endif
endfunction
---------------------------------------------------------------------
---------------------------------------------------------------------
function Ql takes nothing returns nothing
////单位技能效果,不重要的省略了////
call DestroyTimer(UBhuilan)
set UBhuilan=CreateTimer()
call TimerStart(UBhuilan,0.2,true,function HAhuilan)
----------------------------------------------------------------------
如果是该触发写法问题,那为什么上一版本没有发现该BUG呢(新版本改动未涉及该英雄和该技能)~。~


IP属地:四川1楼2013-05-25 17:11回复
    删掉重写


    来自手机贴吧2楼2013-05-25 18:13
    收起回复
      …楼上正解…找不到问题所在时,重新来过才是正道


      IP属地:广东来自手机贴吧3楼2013-05-26 02:20
      收起回复
        LS正解,对于找不出错误可输出效果仍然不如人意的代码只能静下心来重写之,当然我并你不知道乃这东西写的到底有木有问题,因为我只会P和C= =


        IP属地:广东来自iPhone客户端4楼2013-05-26 12:28
        收起回复
          会不会是程序语句的死循环之类的?最近我就遇到过......搞个dota的折射,(就是受到伤害,会反弹伤害给敌人)在调伤害类型的时候,出现bug,魔兽自动关掉。后来我才知道有的野怪有尖刺外壳,然后我又调成普通伤害。造成无限弹来弹去的指令bug,结果把我给崩了。


          IP属地:海南5楼2013-05-26 13:35
          收起回复
            有一种情况可导致一张地图内的触发失效,貌似变量数组过多或触发过多会超过某值的最大限度,从而触发失效。


            IP属地:福建来自手机贴吧6楼2013-05-26 14:11
            收起回复
              与旧版本脚本对照


              来自手机贴吧7楼2013-05-26 14:14
              收起回复
                电脑。混脸熟


                IP属地:广东来自Android客户端9楼2013-05-27 14:08
                回复
                  3\100那边的括号要进去


                  IP属地:福建来自iPad10楼2013-05-28 03:34
                  收起回复
                    在函数 HAhuilan 里,没给 UBhuilan 赋值。
                    所以 call DestroyTimer(UBhuilan) 没能清掉到期的计时器。
                    话说单位变量也没赋值,你确定现在这技能可以回蓝?


                    IP属地:浙江11楼2013-05-29 12:46
                    收起回复
                      英雄不复活或出兵卡兵之类的都是点丢失,我做了实验壳。


                      IP属地:广东来自Android客户端12楼2013-05-29 13:20
                      收起回复
                        有回蓝不停止的话 试试看考虑摧毁前先暂停


                        IP属地:美国15楼2013-05-30 01:12
                        收起回复