海盗王修改GetTickCount引发的计时问题

海盗王修改GetTickCount引发的计时问题 升级64位后一直有这样一个问题被卡壳就是系统运行时间GetTickCount()的计算问题。由于原来32位的时候这个数值是DWORD类型大概运行49.7天左右就会达到最大值在控制台就会出现警示提示。代码里客户端和服务端都大量使用这个函数用来做心跳时间和时间差计算想全部改成支持几乎无限时间的GetTickCount64()改的地方太多太多了很多数据类型和函数参数都要全部改。因此一直不敢碰。前几天看到有几个独立在函数内部的GetTickCount()函数和变量不影响全局运行于是顺手改了一下。改了一些后发现没什么大问题。于是心一硬接着改其他的。后来发现越改越麻烦越改关联的地方越多已经无法暂停暂停就彻底无法正常运行了。硬着继续改改了客户端继续改服务端。如此反复改了好多次发现还有很多地方变量类型不兼容的。改完了编译运行幸好能进去游戏但是发现计时混乱了技能无法使用怪物移动会被卡住。找了很久都无法找到原因。最后实在没办法只好让动用AI去扫描整个项目的C代码找出有问题的代码。其实AI也无法精确定位不过幸好给出一些类型不匹配提示和转换类型后的计算结果错误的提示。跟着这些提示又改了一些。抱着死马当活马医的心态又编译跑了一下发现时钟恢复正常了怪物走动也正常了。我大概看了下应该是ULONGLONG和ULONG之间的运算和转换出现问题的。估计用人工排查的话不知道何年何月的事情这种重复繁琐的还是用AI辅助扫描代码更容易修正一些潜在不容易发现的问题。目前暂时能正常运行了希望不会再有其他问题了。如果改动成功的话服务器就可以长年运行不用重启也不会报这个时钟错误的问题了。