找回密码
 点一下
查看: 2018|回复: 10

1.23意料之外的改动

[复制链接]
发表于 2009-3-22 04:45:20 | 显示全部楼层 |阅读模式
  1. function test takes nothing returns nothing
  2.     call BJDebugMsg("做了一些不影响同步的事情")
  3. endfunction
  4. function aaaa takes nothing returns nothing
  5. local timer tm = CreateTimer()
  6.     if GetLocalPlayer()==Player(0) then
  7.          call TimerStart(tm, 1.00, true, function test)
  8.     else
  9.          call TimerStart(tm, 10000, true, function test)
  10.     endif
  11. endfunction
复制代码

这段代码,各位认为运行function aaaa后会如何?在以前是绝对的掉线

然而在1.23,我把刷新市场30秒间隔的timer改成了1秒,照样不掉线。。

只要不做影响同步的事情。每30次执行原函数内容,其他29次执行自定义。

太诡异了。
发表于 2009-3-22 12:01:43 | 显示全部楼层
以前也不会把。。。
回复

使用道具 举报

发表于 2009-3-22 12:37:34 | 显示全部楼层
同上+1
回复

使用道具 举报

发表于 2009-3-22 13:24:16 | 显示全部楼层
老狼给我改的跟随视角竟然是这样
以下为Setup部分
  if GetLocalPlayer()==Player(随意) then
    set udg_b = false
    endif
Setup结束


timer1秒部分
  if udg_b = false  then
    跟随视角
    endif



就是说,用一个全局变量对不同玩家赋值。。。
回复

使用道具 举报

发表于 2009-3-22 15:26:12 | 显示全部楼层
如果不是倍数呢。。。

把30秒改成16秒。。。?
回复

使用道具 举报

 楼主| 发表于 2009-3-22 21:01:02 | 显示全部楼层
不是倍数显然不行。
回复

使用道具 举报

 楼主| 发表于 2009-3-23 04:03:40 | 显示全部楼层
好吧,又在1.20做了试验,确实可以。。。。

好奇怪,我以前试验过多次用同一个timer执行不同timerstart结果都是会掉。。一执行就掉
回复

使用道具 举报

发表于 2009-3-23 09:24:42 | 显示全部楼层
可能是你记错了
回复

使用道具 举报

 楼主| 发表于 2009-3-23 14:26:08 | 显示全部楼层
测试结果:

1. timer作为handle类型变量,必须所有机器上同步产生和消灭。
2. timer不能单方TimerStart,比如本来没有TimerStart的timer,你去开启他就会掉线。
3. timer在过期以后,如果不被消灭,可以继续TimerStart不影响同步。
  同理非循环改循环、长循环改短循环也可以
4. 周期过短会不精确。试验0.01秒周期累加,5分钟不到就产生不同步了。
回复

使用道具 举报

发表于 2009-3-23 16:44:08 | 显示全部楼层
周期过短会导致不精确?
回复

使用道具 举报

发表于 2009-3-29 23:28:51 | 显示全部楼层
有这种事?经常用短周期计时器...没人测试..
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 17:23 , Processed in 0.042924 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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