我的地图里近期出现不少于1个关于循环计时器的Bug。这几个Bug都属于偶发Bug,原因不明,极少出现,也无法主动引发。现在实在是想不出来了,于是只好来论坛求教经验丰富的各位。
问题如下:
使用技能A00D触发lG,然后启动循环计时器CmF2,触发里出现的物品是一个用于显示某冷却时间的图标,无法丢弃,这些地方都没有问题。
问题出现在计时器上,lG3中的暂停CmF2和摧毁CmF2的语句偶尔会失效,Bug的具体体现就是,当触发中那个物品数量为0时,屏幕上开始不断地刷出“123”。
整个地图触发里只有这里有关于CmF2计时器的相关语句,别的地方都没有涉及,除了lG也没有其他地方对CmF2赋值,所以我实在想不出出现问题的原因。
下面是触发麻烦大家帮忙看看
//////////////////////////////////////////////////////////////////////////////
function lG3 takes nothing returns nothing
call SetItemCharges(UnitItemInSlotBJ((O[GetPlayerId((GetOwningPlayer(I)))+13]),3),GetItemCharges(UnitItemInSlotBJ((O[GetPlayerId((GetOwningPlayer(I)))+13]),3))-1)
if GetItemCharges(UnitItemInSlotBJ((O[GetPlayerId((GetOwningPlayer(I)))+13]),3))==0 then
call SetPlayerAbilityAvailable(GetOwningPlayer(I),'A00D',true)
call DisplayTextToPlayer(GetOwningPlayer(I),0,0,"123")
call PauseTimer(CmF2)
call DestroyTimer(CmF2)
endif
endfunction
///////////////////////////////////////////////////////////////////////////////
function lG takes nothing returns nothing
local unit u=GetTriggerUnit()
call SetPlayerAbilityAvailable(GetOwningPlayer(I),'A00D',false)
call SetItemCharges(UnitItemInSlotBJ(O[((1+GetPlayerId(GetOwningPlayer(GetTriggerUnit())))+12)],3),CmF)
call TimerStart(CmF2,1,true,function lG3)
set CmF=CmF+20
set u=null
endfunction
//////////////////////////////////////////////////////////////////////////////
最后,谁知道关于有什么循环计时器可能存在的问题、容易引发的Bug,或是一些需要注意的地方也请告诉我一下,我对这方面的知识比较匮乏。
谢谢了
问题如下:
使用技能A00D触发lG,然后启动循环计时器CmF2,触发里出现的物品是一个用于显示某冷却时间的图标,无法丢弃,这些地方都没有问题。
问题出现在计时器上,lG3中的暂停CmF2和摧毁CmF2的语句偶尔会失效,Bug的具体体现就是,当触发中那个物品数量为0时,屏幕上开始不断地刷出“123”。
整个地图触发里只有这里有关于CmF2计时器的相关语句,别的地方都没有涉及,除了lG也没有其他地方对CmF2赋值,所以我实在想不出出现问题的原因。
下面是触发麻烦大家帮忙看看
//////////////////////////////////////////////////////////////////////////////
function lG3 takes nothing returns nothing
call SetItemCharges(UnitItemInSlotBJ((O[GetPlayerId((GetOwningPlayer(I)))+13]),3),GetItemCharges(UnitItemInSlotBJ((O[GetPlayerId((GetOwningPlayer(I)))+13]),3))-1)
if GetItemCharges(UnitItemInSlotBJ((O[GetPlayerId((GetOwningPlayer(I)))+13]),3))==0 then
call SetPlayerAbilityAvailable(GetOwningPlayer(I),'A00D',true)
call DisplayTextToPlayer(GetOwningPlayer(I),0,0,"123")
call PauseTimer(CmF2)
call DestroyTimer(CmF2)
endif
endfunction
///////////////////////////////////////////////////////////////////////////////
function lG takes nothing returns nothing
local unit u=GetTriggerUnit()
call SetPlayerAbilityAvailable(GetOwningPlayer(I),'A00D',false)
call SetItemCharges(UnitItemInSlotBJ(O[((1+GetPlayerId(GetOwningPlayer(GetTriggerUnit())))+12)],3),CmF)
call TimerStart(CmF2,1,true,function lG3)
set CmF=CmF+20
set u=null
endfunction
//////////////////////////////////////////////////////////////////////////////
最后,谁知道关于有什么循环计时器可能存在的问题、容易引发的Bug,或是一些需要注意的地方也请告诉我一下,我对这方面的知识比较匮乏。
谢谢了