网狐内核引擎 定时器 问题

自助开通VIP,整站资源任意下载

最近在网上下到 网狐6.6 内核引擎,这回算是有了全套了,朋友又送了套捕鱼达人的游戏,架起来总有问题。

  反复调试,发现问题在于内核中定时器部分。

  看了下内核的代码,但从定时器上看好像没有任何问题,在6.5的内核中,每个定时器到时间以后都通过

  PostQueuedCompletionStatus

  发送了一个完成包,然后就返回了。但是 6.6 中定时器部分不是走的这个机制 (ps:也有可能我下的代码不是出自网狐),代码片段:

  try

  {

  BYTE cbBuffer[MAX_ASYNCHRONISM_DATA] = {0}; //接收缓冲

  //投递消息

  NTY_TimerEvent pTimerEvent = (NTY_TimerEvent )cbBuffer;

网狐内核引擎 定时器 问题 网狐内核 网狐 游戏 棋牌技术  第1张

  pTimerEvent->dwTimerID = pTimerItem->wTimerID;

  pTimerEvent->dwBindParameter = pTimerItem->wBindParam;

  m_pIQueueServiceSink->OnQueueServiceSink(EVENT_TIMER, cbBuffer, sizeof(NTY_TimerEvent));

  }

  catch (…) { }

  //设置次数

  if (pTimerItem->dwRepeatTimes != TIMES_INFINITY)

  {

  ASSERT(pTimerItem->dwRepeatTimes > 0);

  pTimerItem->dwRepeatTimes--;

  if (pTimerItem->dwRepeatTimes == 0L)

  {

  bKillTimer = true;

  m_TimerItemActive.RemoveAt(i);

  m_TimerItemFree.Add(pTimerItem);

网狐内核引擎 定时器 问题 网狐内核 网狐 游戏 棋牌技术  第2张

  }

  }

  m_pIQueueServiceSink 是时间引擎保存的是一个接口指针。 通过这个指针转几道手,一直到调用了游戏中的定时器消息响应函数

  OnTimerMessage(WORD wTimerID, WPARAM wBindParam) ? 才会返回往下执行 “设置次数”后面的代码。 这样就出现问题了,如果游戏中在 OnTimerMessage 里嵌套设置同一个定时器,就会先走完 SetTimer 再走下面的“设置次数”,“移出定时器”,SetTimer 里监测有没有同ID定时器的时候,自然发现已经存了该定时器,不会把该定时器放入定时器列表。等OnQueueServiceSink 返回以后,将该定时器删除掉,于是重新设置的定时器就有没设置成功。

  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  解决方法:将上面代码调整一下次序。 先设置次数,删除定时器以后,再调用 OnQueueServiceSink。另外 NTY_TimerEvent 的值比较大,可以将

  BYTE cbBuffer[MAX_ASYNCHRONISM_DATA] = {0}; //接收缓冲

  改成

  BYTE cbBuffer[sizeof(NTY_TimerEvent)] = {0}; //接收缓冲

  还有一种修改方法,就是仍然采用发送完成端口包的方式,照着内核中其他使用队列服务的地方摘过来就可以了,这种方法更科学

  上张捕鱼的图,修复了刷金问题

① 本网站名称及网址:速群资源分享网 | www.suqun.net
② 本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你也有好源码或者教程,可以联系小编,有钻石奖励和额外收入。
⑤ 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 本站资源大多存储在云盘,如发现链接失效,请联系客服,我们会第一时间更新。
速群棋牌源码网 » 网狐内核引擎 定时器 问题

VIP会员尊享专属特权,真正的海量,无套路,无限量下载!

游戏演示 联系客服