860312 修复在线数据同一分钟发送两次问题;客户端和服务端tick不对应再次同步一次
3个文件已修改
24 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -544,22 +544,16 @@
#  所有服务器人数要回报一次,  每个map也要回报一次
#  gameWorld.GetTickByType(0 - n) 取间隔
def DisposeGameActivePlayer(tick):
#    gameWorld = GameWorld.GetGameWorld()
#    lastTick = gameWorld.GetTickByType(ChConfig.TYPE_GetActivePlayerCount)
#
#    if lastTick == -1:
#        #GameWorld.Log("未初始化服务器")
#        return
#
#    if tick - lastTick < ChConfig.TYPE_Tick_Time[ChConfig.TYPE_GetActivePlayerCount]:
#        return
#
#
#    gameWorld.SetTickByType(ChConfig.TYPE_GetActivePlayerCount , tick)
    gameWorld = GameWorld.GetGameWorld()
    curMinute = datetime.datetime.today().minute
    #为了每个服的输出时间点统一一个分钟点,便于统计
    if datetime.datetime.today().minute % 5 != 0:
    if curMinute % 5 != 0:
        return
    noteData = gameWorld.GetDictByKey("OnlineCntM")
    if noteData == curMinute:
        # 同一分钟不多发送,此处不建议用CD处理,避免两CD冲突
        return
    gameWorld.SetDict("OnlineCntM", curMinute)
    
    # 全服在线人数平台明细
    platformOLDict = {} # 平台在线人数 {平台:人数, ...}
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -118,6 +118,7 @@
    Def_Max_Move_Tick = 5000
 
    if abs(gameWorldTick - clientWorldTick) >= Def_Max_Move_Tick:
        curPlayer.Sync_ClientTick()
        #时间相差过大,可能因网络引起,拉回
        GameWorld.DebugLog("PlayerMoveCheckClientWorldTick -- 服务器tick %s-客户端%s时间相差过大,可能因网络引起,拉回" % (
                            gameWorldTick, clientWorldTick), curPlayer.GetID())
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -888,6 +888,7 @@
    Def_Attack_DelayTick = 5000
    # tick 误差过大则过滤
    if abs(clientTick - tick) > Def_Attack_DelayTick:
        curPlayer.Sync_ClientTick()
        GameWorld.DebugLog("tick 误差过大则过滤 > 5000")
        return False