|
发表于 2007-6-5 23:14:11
|
显示全部楼层
在某处找到一个图像,说的是triggersleepaction.X坐标指的是参数,Y坐标是实际时间。
在一定程度上,我认为你的有问题。
[codes=jass]
function Wait takes real time returns nothing
local timer t=CreatTimer()
call TimerStart(t,time,false,null)
loop
if TimerGetRemaining(t)==0.0 then
call DestroyTimer(t)
return
else
call TriggerSleepAction(TimerGetRemaining(t))
endif
call DisPlayTextToPlayer(Player(0),0,0,"text")
endloop
endfunction
[/codes]
这段代码会知道loop了几次,我测试的结果都是1次。
也就是说,这个loop是无意义的。
triggersleepaction的时间会是:真实时间+不可避免的误差+网络原因。
这个时间永远会比真实时间要长,而且会因为联网游戏的人数的增加而变大。
猜测这个误差不会大于0.3,可以这样做:
[codes=jass]
function myPollWait takes real delay returns nothing
local timer t=CreateTimer()
call TimerStart(t,delay,false,null)
if(delay>0.3) then
call TriggerSleepAction(delay-0.3)
endif
loop
if(TimerGetRemaining(t)==.0) then
call PauseTimer(t)
call DestroyTimer(t)
set t=null
return
endif
call TriggerSleepAction(.0)
endloop
endfunction
[/codes] |
|