From 5b1820799e106489348f8b630208d0413d996256 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 25 二月 2026 18:17:35 +0800
Subject: [PATCH] 0312 登录的时候地图自己验证是否卡号了,卡号则直接进行下线逻辑

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py |   36 +++++++++++++++++++++---------------
 1 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
index 27fb38e..03c88ac 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
@@ -56,8 +56,6 @@
 Def_Cmp_Equ = 0                   #等于
 Def_Cmp_Greater = 1               #大于
 
-IsMergeServer = DBConfig.IsMergeServer
-
 #跨服玩家上传数据信息列表索引
 (
 MergeRegPInfoIndex_LoginTime, # 登录时间 索引
@@ -347,10 +345,7 @@
         self.connectDB()
         return
             
-    def IsMergeServer(self):
-        global IsMergeServer
-        return IsMergeServer
-    
+    def IsMergeServer(self): return GameWorld.IsCrossServer()
     
     # 每X分钟清除已下线的玩家跨服数据, 离线超过3分钟玩家直接返回子服
     def PopOfflineMergePlayer(self):
@@ -484,7 +479,7 @@
         pos = 0
         requestType, pos = CommFunc.ReadBYTE(pack.getBuffer(), pos)
         
-        mylog.debug("begin process request type = %d"%requestType)
+        #mylog.debug("begin process request type = %d"%requestType)
         
         if requestType == CommonDefine.gstCrossServerToServerPack:
             oFuncGrade = self.GetFuncGrade('gstCrossServerToServerPack')
@@ -938,9 +933,9 @@
     
     def OnCrossServerToServerPack(self, db, pack):
 
-        if CommonDefine.IsDebug():
-            import binascii
-            mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
+        #if CommonDefine.IsDebug():
+        #    import binascii
+        #    mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
         
         try:
             recvPack = MergeServerRecvProtocol.tagLPStringData()
@@ -948,15 +943,19 @@
             NetPackCommon.RecCrossServerNetPack(recvPack.Data)
         except:
             msg = error.formatMsg('error', error.ERROR_NO_172, "LogicProcessThread::OnCrossServerToServerPack Catch a unexpetcted exception, error = %s"%traceback.format_exc())
-            mylog.error(msg)
+            if GameWorld.GetGameWorld().GetDebugLevel():
+                # debug下让其抛出异常报错,方便测试时发现排查问题
+                raise Exception(msg)
+            else:
+                mylog.error(msg)
 
 
 
     def OnGMToolCommand(self, db, pack):
 
-        if CommonDefine.IsDebug():
-            import binascii
-            mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
+        #if CommonDefine.IsDebug():
+        #    import binascii
+        #    mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
         
         try:
             ProjSpecialProcess.OnGMToolCommand(pack)
@@ -3049,7 +3048,14 @@
             
         #     self.sendOKString(CommonDefine.dgPlayerLogin, pack, accountRec.getBuffer())
         #     return True
-
+        curPlayer = GameWorld.GetPlayerManager().FindPlayerByAccID(authAccID)
+        if curPlayer:
+            # 因为一些不确定的情况 玩家没有登出
+            from Player import ChPlayer
+            mylog.warning('玩家异常未登出 accid = %s-%s...'%(authAccID, authPack.IDType))
+            ChPlayer.PlayerDisconnectEx(curPlayer, GameWorld.GetGameWorld().GetTick())
+            self.sendFailString(CommonDefine.dgPlayerLogin, pack, disKickRepeatPlayer)
+            return True
 
         mylog.debug('auth accid = %s-%s...'%(authAccID, authPack.IDType))
         

--
Gitblit v1.8.0