From efc705c4fb10577ff83e09273c90a6ead41164bd Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 30 五月 2025 12:08:45 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_PlayerDefine.py                                |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMToolPyInterface.py  |  134 ++-----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_ServerDefine.py                                |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_CTG.py   |  115 +++++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_GameWorld1.py                                  |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py |  247 ------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py               |   42 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py                                   |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py             |    8 
 9 files changed, 144 insertions(+), 413 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_GameWorld1.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_GameWorld1.py
index f6ad5d3..bb73c0b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_GameWorld1.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_GameWorld1.py
@@ -513,6 +513,7 @@
     def SendGameServerGeneralPack(self, *args): return _IPY_GameWorld1.IPY_GameWorld_SendGameServerGeneralPack(self, *args)
     def CreateMirrorPlayer(self, *args): return _IPY_GameWorld1.IPY_GameWorld_CreateMirrorPlayer(self, *args)
     def SendPyPackToMapServerSelf(self, *args): return _IPY_GameWorld1.IPY_GameWorld_SendPyPackToMapServerSelf(self, *args)
+    def SendPyPackToServersRoute(self, *args): return _IPY_GameWorld1.IPY_GameWorld_SendPyPackToServersRoute(self, *args)
 IPY_GameWorld_swigregister = _IPY_GameWorld1.IPY_GameWorld_swigregister
 IPY_GameWorld_swigregister(IPY_GameWorld)
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_PlayerDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_PlayerDefine.py
index 23012f6..ad567b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_PlayerDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_PlayerDefine.py
@@ -1006,6 +1006,7 @@
 mssCError = _IPY_PlayerDefine.mssCError
 mssDisconnect = _IPY_PlayerDefine.mssDisconnect
 mssCppWarn = _IPY_PlayerDefine.mssCppWarn
+mssRestart = _IPY_PlayerDefine.mssRestart
 mssMax = _IPY_PlayerDefine.mssMax
 gmForbidFight = _IPY_PlayerDefine.gmForbidFight
 gmForbidAcc = _IPY_PlayerDefine.gmForbidAcc
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_ServerDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_ServerDefine.py
index 2803dd1..e7d2287 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_ServerDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_ServerDefine.py
@@ -368,6 +368,7 @@
 mgSavePlayerDataResult = _IPY_ServerDefine.mgSavePlayerDataResult
 mgCashResultAnswer = _IPY_ServerDefine.mgCashResultAnswer
 mgState = _IPY_ServerDefine.mgState
+mgMapPreClose = _IPY_ServerDefine.mgMapPreClose
 bgPlayerTotal = _IPY_ServerDefine.bgPlayerTotal
 bgRegisterLineNO = _IPY_ServerDefine.bgRegisterLineNO
 bgPlayerCreateRole = _IPY_ServerDefine.bgPlayerCreateRole
@@ -517,6 +518,7 @@
 gstMergePlayerData = _IPY_ServerDefine.gstMergePlayerData
 gstDBLogic = _IPY_ServerDefine.gstDBLogic
 gstQueryServerIDInfo = _IPY_ServerDefine.gstQueryServerIDInfo
+gstNotifyCloseServer = _IPY_ServerDefine.gstNotifyCloseServer
 gstMax = _IPY_ServerDefine.gstMax
 btgServerSupport = _IPY_ServerDefine.btgServerSupport
 btgLineID = _IPY_ServerDefine.btgLineID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
index ec2a04e..5ce5b67 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
@@ -325,3 +325,10 @@
 def SendPyPackToMapServerSelf(data, datalen):
     GameWorld.GetGameWorld().SendPyPackToMapServerSelf(datalen, data)
     return
+
+
+
+# 向ServersRoute发送数据
+def SendPyPackToServersRoute(data, datalen):
+    GameWorld.GetGameWorld().SendPyPackToServersRoute(datalen, data)
+    return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_CTG.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_CTG.py
index e6fb080..feab2a7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_CTG.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_CTG.py
@@ -17,6 +17,15 @@
 #导入
 import GMCommon
 from MangoDBCommon import fix_incomingText
+import GameWorld
+from Player import (PlayerControl, PlayerCoin)
+import IpyGameDataPY
+import IPY_GameWorld
+import ShareDefine
+import DataRecordPack
+import ChConfig
+from PyMongoDB.GMToolLogicProcess import GMToolPyInterface
+import json
 #---------------------------------------------------------------------
 #全局变量
 
@@ -28,56 +37,76 @@
 def OnExec(gmCmdDict):
     queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
     playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
-    #value = gmCmdDict.get('value', '')
+    Result = GMCommon.Def_ParamErr
+    errorMsg = ""
     
     if queryType not in [GMCommon.Def_GMKey_PlayerAccID, GMCommon.Def_GMKey_PlayerName]:
-        return GMCommon.Def_ParamErr, ''
+        return Result, errorMsg
     
     if len(playerFind) <= 0:
-        return GMCommon.Def_ParamErr, ''
+        return Result, errorMsg
     
-    return GMCommon.Def_DoQueryUserDB, ''
-    
-    
-## 查询logdb返回
-# @param logdb:logdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def LogDBResponse(logdb, data, gmCmdDict):
-    if data == "":
-        return GMCommon.Def_DoQueryUserDB, ''
-    # 修改为离线可用
-    return GMCommon.Def_SendToGameServer, ''
-#    if GMCommon.GetPlayerOnLineByAccID(logdb, data):
-#        return GMCommon.Def_SendToGameServer, ''
-#        
-#    return GMCommon.Def_PlayerOfLine, ''
-
-
-## 查询userdb返回
-# @param userdb:userdb
-# @param data:传入的信息
-# @param gmCmdDict:gm命令字典
-# @return None 
-def UserDBResponse(userdb, data, gmCmdDict):
-    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
-    playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
-    
-    playerAccID = ""
-    # 玩家姓名
+    curPlayer = None
     if queryType == GMCommon.Def_GMKey_PlayerName:
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerFind), 'IsDeleted':0})
+        curPlayer = GameWorld.GetPlayerManager().FindPlayerByName(playerFind)
+    else:
+        curPlayer = GameWorld.GetPlayerManager().FindPlayerByAccID(playerFind)
     
-    elif queryType == GMCommon.Def_GMKey_PlayerAccID:
-        playerAccID = GMCommon.GetPlayerAccID(userdb, {'AccID':fix_incomingText(playerFind), 'IsDeleted':0})
+    if not curPlayer or curPlayer.IsEmpty():
+        Result = GMCommon.Def_Success
+        # 不在线
+        return Result, errorMsg
+
+    playerID = curPlayer.GetPlayerID()
     
-    if playerAccID == '':
-        return GMCommon.Def_NoTag, ''
+    Result = GMCommon.Def_Unknow
 
-    return GMCommon.Def_DoQueryLogDB, playerAccID
+    value = gmCmdDict.get('value', '')
+    appID = gmCmdDict.get('appID', '')
+    isAddBourseMoney = GameWorld.ToIntDef(gmCmdDict.get('isAddBourseMoney', ''), 0)
+    
+    goldBefore = PlayerControl.GetMoneyReal(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money)
+    changeCoinPointBefore = curPlayer.GetChangeCoinPointTotal()
+    bourseMoneyBefore = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
+    
 
-
-
-
-
+    orderInfoIpyData = None
+    if appID:
+        orderInfoIpyData = IpyGameDataPY.GetIpyGameDataNotLog("OrderInfo", value, appID)
+        if not orderInfoIpyData:
+            Result = GMCommon.Def_ParamErr
+            errorMsg = "Can not found the orderInfo(%s) and appID(%s)!" % (value, appID)
+            
+    if errorMsg:
+        return Result, errorMsg
+    
+    orderRMB = GameWorld.ToNumDef(value, None)
+    if not orderInfoIpyData and orderRMB != None:
+        if PlayerCoin.PlayerCoinToGoldEx(curPlayer, orderRMB, ChConfig.Def_GiveMoney_GMTCTG, isAddBourseMoney):
+            Result = GMCommon.Def_Success     
+        else:
+            errorMsg = "order error! value(%s)" % (value) 
+    else:
+        orderInfo = value
+        if PlayerCoin.DoGMCTG(curPlayer, orderInfo, appID, isAddBourseMoney, ChConfig.Def_GiveMoney_GMTCTG):
+            Result = GMCommon.Def_Success
+        else:
+            errorMsg = "orderInfo error! appID(%s), value(%s)" % (appID, value)
+            
+    if Result != GMCommon.Def_Success:
+        return Result, errorMsg
+    
+    goldAfter = PlayerControl.GetMoneyReal(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money)
+    changeCoinPointAfter = curPlayer.GetChangeCoinPointTotal()
+    bourseMoneyAfter = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
+    
+    resultDict = {"value":value, "appID":appID, "isAddBourseMoney":isAddBourseMoney, "Result":Result, 
+                  "gold":[goldBefore, goldAfter], "changeCoinPoint":[changeCoinPointBefore, changeCoinPointAfter], 
+                  "bourseMoney":[bourseMoneyBefore, bourseMoneyAfter]}
+    
+    #流向 增加金额记录
+    DataRecordPack.DR_ToolGMOperate(playerID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), 'GMT_CTG', resultDict)
+    
+    return Result, resultDict
+    
+    
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMToolPyInterface.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMToolPyInterface.py
index 171f99e..3b75530 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMToolPyInterface.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMToolPyInterface.py
@@ -4,127 +4,35 @@
 #
 #-------------------------------------------------------------------------------
 #
-from Protocol import (MMORPGPack,RecvPackProtocol, SendPackProtocol)
-from Common import (CommFunc, mylog)
-
-# from DBCommon import (CommonDefine,SingletonObject)
-# import GMToolCommandMgr
-# g_GMCMDMgr = GMToolCommandMgr.GetGMOrderMgr()
-
+from Protocol import SendPackProtocol
+from Common import mylog
+from DBCommon import CommonDefine
+import NetPackCommon
+from Commands import GMCommon
+import json
 ################################################################## 
                 ####### 提供的接口 ######
-#转发GM工具命令包到GameServer  
-def SendGMToolCommandToGameServer(pack):
-    # global g_GMCMDMgr
-     
-    # recvPack = RecvPackProtocol.tagGMCommand()
-    # recvPack.ReadData(pack.getBuffer())
-    # recvPack.Type = CommonDefine.bgDBGMCommand
+
     
-    # mylog.info('ProjSpecialProcess SendGMToolCommandToGameServer OrderId = %s'%recvPack.OrderId)
-    
-    # ServerMgr = MongoDBServer.getServerMgr()
-    # sendViaSessionID = ServerMgr.getClientSessionIDByName("CenterGate",0)
-    
-    # SessionID = 0
-    # PoolIndex = -1
-    # mylog.info('ProjSpecialProcess SendGMToolCommandToGameServer sendViaSessionID = %s,SessionID = %d,PoolIndex = %d'%(
-    #                                                                                                            sendViaSessionID,
-    #                                                                                                            SessionID,
-    #                                                                                                            PoolIndex))
-    # ServerMgr.packSendBySessionID(sendViaSessionID, SessionID, PoolIndex,
-    #               CommonDefine.atInner,
-    #               MMORPGPack.stGame, MMORPGPack.stData, 
-    #               recvPack.GetBuffer())
-    mylog.info('ProjSpecialProcess SendGMToolCommandToGameServer Done') 
-    
-#回复GM工具命令执行结果包
-def SendToGMToolCommandResult(OrderLen,OrderId,ResultLen,Result,UserDataLen,UserData):
-    # global g_GMCMDMgr
+#回复给ServersRoute->GM工具 命令执行结果包
+def SendToGMToolCommandResult(orderID, resultMsg, UserData = ''):
     # if isinstance(Result, unicode):
     #     #直接从数据库未进行转化的话是unicode
     #     Result = Result.encode('gbk')
-        
-    # mylog.info('ProjSpecialProcess SendToGMToolCommandResult OrderId = %s'%OrderId) 
-    # recvPack = SendPackProtocol.tagGMCommandResult()
-    # recvPack.Type = CommonDefine.gstGMToolCommandResult 
-    # recvPack.OrderLen = OrderLen
-    # recvPack.OrderId = OrderId
-    # recvPack.ResultLen     = ResultLen
-    # recvPack.Result        = Result
-    # recvPack.UserDataLen   = UserDataLen
-    # recvPack.UserData      = UserData
-    
-    
-    # sendViaSessionID =  g_GMCMDMgr.PopPair(recvPack.OrderId)
-    # ServerMgr = MongoDBServer.getServerMgr()             
-    
-    # SessionID = 0
-    # PoolIndex = -1
-    # mylog.info('ProjSpecialProcess SendToGMToolCommandResult sendViaSessionID = %s,SessionID = %d,PoolIndex = %d'%(sendViaSessionID, SessionID,PoolIndex))
-    # if sendViaSessionID == '':
-    #     mylog.warning('ProjSpecialProcess SendToGMToolCommandResult Fail, No Client in GMToolPort')
-    #     return
-    
-    # ServerMgr.packSendBySessionID(sendViaSessionID, SessionID, PoolIndex,
-    #               CommonDefine.atInner,
-    #               MMORPGPack.stGMTool, MMORPGPack.stData, 
-    #               recvPack.GetBuffer())
-    mylog.info('ProjSpecialProcess SendToGMToolCommandResult Done')  
+
+    recvPack = SendPackProtocol.tagGMCommandResult()
+    recvPack.Type = CommonDefine.gstGMToolCommandResult 
+    recvPack.OrderLen = len(orderID)
+    recvPack.OrderId = orderID
+    recvPack.ResultLen     = len(resultMsg)
+    recvPack.Result        = resultMsg
+    recvPack.UserDataLen   = len(UserData)
+    recvPack.UserData      = UserData
+
+    NetPackCommon.SendPyPackToServersRoute(recvPack.GetBuffer(), recvPack.GetLength())
+    mylog.info('ProjSpecialProcess SendToGMToolCommandResult OrderId = %s'%orderID) 
  
-#发送数据库请求
-def SendDBRequest(Type,OrderLen,OrderId,DataLen,Data):
-    #Type说明
-    #CommonDefine.gstGMToolCmdSysDBRequest         #GM工具SysCtrlDB请求类型  
-    #CommonDefine.gstGMToolCmdLogDBRequest         #GM工具LogCtrlDB请求类型  
-    #CommonDefine.gstGMToolCmdUserDBRequest        #GM工具UserCtrlDB请求类型
-    
 
-    # #构建请求包
-    # pack = RecvPackProtocol.tagGMCommandDBRequest()
-    # pack.Type = Type
-    # pack.OrderLen = OrderLen
-    # pack.OrderId = OrderId
-    # pack.DataLen = DataLen
-    # pack.Data = Data
-    # #发请求包
-    # sendPack = SingletonObject.getPackPool().alloc()
-    # sendPack.setSendViaSocketID(-1)
-    # sendPack.getPackHead().sessionID = 0
-    # sendPack.getPackHead().poolIndex = -1
-    # sendPack.getPackHead().type = CommonDefine.atInner
-    # sendPack.setBuffer(pack.GetBuffer())
-    # ctrlDBMgr = CtrlDBManager.getCtrlMgr()
-    # ctrlDBMgr.dbRequestPush(sendPack)
-    # mylog.info('ProjSpecialProcess SendDBRequest Done ,Type = %s, OrderId = %s'%(Type,OrderId)) 
-    return True
 
-#发送逻辑处理请求
-def SendLogicProcessRequest(Type,OrderLen,OrderId,DataLen,Data):
-    #Type说明
-    #CommonDefine.gstGMToolCmdLogicProcessRequest  #GM工具Logic请求类型
-    #构建请求包
-    # pack = RecvPackProtocol.tagGMCommandDBRequest()
-    # pack.Type = Type
-    # pack.OrderLen = OrderLen
-    # pack.OrderId = OrderId
-    # pack.DataLen = DataLen
-    # pack.Data = Data
-    # #发请求包
-    # sendPack = SingletonObject.getPackPool().alloc()
-    # sendPack.setSendViaSocketID(-1)
-    # sendPack.getPackHead().sessionID = 0
-    # sendPack.getPackHead().poolIndex = -1
-    # sendPack.getPackHead().type = CommonDefine.atInner
-    # sendPack.setBuffer(pack.GetBuffer())
-    
-    # logicProcess = GlobalVarDefine.g_logicProcessThread
-    # if logicProcess == None:
-    #     mylog.warning('ProjSpecialProcess SendLogicProcessRequest Fail!!! logicProcessThread == None??')
-    #     return False
-    # logicProcess.requestPush(sendPack)
-    # mylog.info('ProjSpecialProcess SendLogicProcessRequest Done ,Type = %s, OrderId = %s'%(Type,OrderId)) 
-    return True
-    
       
 ################################################################## 
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py
index 477a6ee..24c9bd3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py
@@ -39,7 +39,8 @@
 from Collections import DataServerPlayerData
 from Collections.CollectionDefine import *
 from Common import (CommFuncEx, mylog)
-from Protocol import MMORPGPack
+
+from Protocol import (MMORPGPack, RecvPackProtocol, SendPackProtocol, MergeServerRecvProtocol, MergeServerSendProtocol)
       
 ################################################################## 
                 ####### python逻辑入口 ####### 
@@ -130,18 +131,6 @@
         GMCommandResult(orderId, funcName, GMCommon.Def_GMDBEntranceFail)
         return 
    
-    
-    #test
-    #转发所有数据库
-#    SendDBRequest(CommonDefine.gstGMToolCmdSysDBRequest,OrderLen,OrderId,CmdLen,Cmd)
-#    SendDBRequest(CommonDefine.gstGMToolCmdLogDBRequest,OrderLen,OrderId,CmdLen,Cmd)
-#    SendDBRequest(CommonDefine.gstGMToolCmdUserDBRequest,OrderLen,OrderId,CmdLen,Cmd)
-#    SendLogicProcessRequest(CommonDefine.gstGMToolCmdLogicProcessRequest,OrderLen,OrderId,CmdLen,Cmd)
-    #转发GameServer
-    #SendGMToolCommandToGameServer(pack)
-    
-    #回复GM工具
-    #SendToGMToolCommandResult(OrderLen,OrderId,CmdLen,Cmd,UserDataLen,UserData)
         
     #-----------------------
     mylog.info('ProjSpecialProcess OnGMToolCommand Done')
@@ -158,178 +147,8 @@
     #返回修改后的包
     return pack
 
-################
-# Sys库请求处理  #
-################
-## Sys库请求处理
-#  @param None 
-#  @return None
-def OnGMToolCmdSysDBRequest(sysdb,pack):
-    mylog.info('ProjSpecialProcess OnGMToolCmdSysDBRequest IN')
-    #读取封包数据
-    recvPack = RecvPackProtocol.tagGMCommandDBRequest()
-    recvPack.ReadData(pack.getBuffer())
-    OrderLen = recvPack.OrderLen
-    OrderId = recvPack.OrderId
-    DataLen = recvPack.DataLen
-    Data = recvPack.Data
-    #-----------------------
-    #项目组对自定义请求进行处理
-    #-----------------------
-    
-    
-    
-    #-----------------------
-    mylog.info('ProjSpecialProcess OnGMToolCmdSysDBRequest Done')
-    return
 
 
-################
-# Log库请求处理  #
-################
-## Log库请求处理
-#  @param None 
-#  @return None
-def OnGMToolCmdLogDBRequest(logdb,pack):
-    mylog.info('ProjSpecialProcess OnGMToolCmdLogDBRequest IN')
-    #读取封包数据
-    recvPack = RecvPackProtocol.tagGMCommandDBRequest()
-    recvPack.ReadData(pack.getBuffer())
-    OrderLen = recvPack.OrderLen
-    OrderId = recvPack.OrderId
-    DataLen = recvPack.DataLen
-    Data = recvPack.Data
-    #-----------------------
-    #项目组对自定义请求进行处理
-    #-----------------------
-    # 查询返回
-    gmCmdOrderMgr = GetGMOrderMgr()
-    cmdManger = gmCmdOrderMgr.GetCmd(OrderId)
-    cmdManger.LogDBRequestResponse(logdb, Data)
-    #-----------------------
-    mylog.info('ProjSpecialProcess OnGMToolCmdLogDBRequest Done')
-    return
-
-
-################
-# User库请求处理 #
-################
-## User库请求处理
-#  @param None 
-#  @return None
-def OnGMToolCmdUserDBRequest(userdb,pack):
-    mylog.info('ProjSpecialProcess OnGMToolCmdUserDBRequest IN')
-    #读取封包数据
-    recvPack = RecvPackProtocol.tagGMCommandDBRequest()
-    recvPack.ReadData(pack.getBuffer())
-    OrderLen = recvPack.OrderLen
-    OrderId = recvPack.OrderId
-    DataLen = recvPack.DataLen
-    Data = recvPack.Data
-    #-----------------------
-    #项目组对自定义请求进行处理
-    #-----------------------
-    
-    # 查询返回
-    gmCmdOrderMgr = GetGMOrderMgr()
-    cmdManger = gmCmdOrderMgr.GetCmd(OrderId)
-    execType, execInfo = UpdatePackData(userdb, cmdManger)
-    # 如果是错误类型直接执行返回结果
-    if execType < GMCommon.Def_ResultTypeMax:
-        cmdManger.GMCmdExecuteResult(execType, execInfo)
-        return
-    cmdManger.UserDBRequestResponse(userdb, Data)    
-    #-----------------------
-    mylog.info('ProjSpecialProcess OnGMToolCmdUserDBRequest Done')
-    return
-
-## 更新包数据
-#  @param None 
-#  @return None
-def UpdatePackData(userdb, gmCmdManger):
-    
-    # 个人补偿GM工具
-    # 由于GameServer处理多个玩家补偿同一物品时只收一次命令包处理(只插入一条物品数据)
-    # 故此处先查出多个玩家账号/昵称对应的playerID,更改命令字典信息后,压入包,再推给GameServer
-    if gmCmdManger.funcName in ["GMT_AddPersonalCompensation", "GMT_CompensationQueryPersonal"]:
-        gmCmdDict = gmCmdManger.gmCmdDict
-        playerList = gmCmdDict.get("playerList", '')
-        playerList = playerList.split(",")
-        
-        if not playerList:
-            return GMCommon.Def_ParamErr, ''
-    
-        playerIDList = []
-        queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
-        if queryType == GMCommon.Def_GMKey_FamilyID:
-            # 根据家族ID的不处理,直接推
-            return GMCommon.Def_SendToGameServer, ""
-        
-        playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
-        
-        for playerFind in playerList:
-            playerAccID = ""
-            # 玩家姓名
-            if queryType == GMCommon.Def_GMKey_PlayerName:
-                playerAccID = GMCommon.GetPlayerAccID(userdb, {'PlayerName':fix_incomingText(playerFind), 'IsDeleted':0})
-            
-            elif queryType == GMCommon.Def_GMKey_PlayerAccID:
-                playerAccID = GMCommon.GetPlayerAccID(userdb, {'AccID':fix_incomingText(playerFind), 'IsDeleted':0})
-            
-            if playerAccID == '':
-                return GMCommon.Def_NoTag, "%s can not found!" % str(playerFind)
-            
-            collection = userdb[UCN_DBPlayer]   
-            dbPlayer = DataServerPlayerData.tagDBPlayer()
-            dbPlayer.IsDeleted = 0
-        
-            loadOK = dbPlayer.adoLoadCEx(collection, {'AccID':fix_incomingText(playerAccID),
-                                                          'IsDeleted':dbPlayer.IsDeleted})    
-            if not loadOK:
-                return GMCommon.Def_NoTag, "%s can not found!" % str(playerFind)
-            
-            playerIDList.append(dbPlayer.PlayerID)
-    
-        gmCmdManger.gmCmdDictUnEncode["PlayerIDList"] = str(playerIDList)
-        
-        updatePack = RecvPackProtocol.tagGMCommand()
-        updatePack.OrderId = str(gmCmdManger.orderId)
-        updatePack.OrderLen = len(updatePack.OrderId)
-        updatePack.Cmd = str(gmCmdManger.gmCmdDictUnEncode)
-        updatePack.CmdLen = len(updatePack.Cmd)
-        updatePack.UserData = str(gmCmdManger.userData)
-        updatePack.UserDataLen = len(updatePack.UserData)
-        
-        # 更新pack数据
-        # mmoRPGPack = MMORPGPack.MMORPGPacket()
-        # mmoRPGPack.setBuffer(updatePack.GetBuffer())
-        # gmCmdManger.pack = mmoRPGPack
-    
-    return GMCommon.Def_SendToGameServer, ""
-
-
-################
-#逻辑线程请求处理 #
-################
-## 逻辑线程请求处理
-#  @param None 
-#  @return None
-def OnGMToolCmdLogicProcessRequest(pack):
-    mylog.info('ProjSpecialProcess OnGMToolCmdLogicProcessRequest IN')
-    #读取封包数据
-    recvPack = RecvPackProtocol.tagGMCommandDBRequest()
-    recvPack.ReadData(pack.getBuffer())
-    OrderLen = recvPack.OrderLen
-    OrderId = recvPack.OrderId
-    DataLen = recvPack.DataLen
-    Data = recvPack.Data
-    #-----------------------
-    #项目组对自定义请求进行处理
-    #-----------------------
-    
-    #-----------------------
-    mylog.info('ProjSpecialProcess OnGMToolCmdLogicProcessRequest Done')
-    return
 
 ################################################################## 
 
@@ -370,66 +189,10 @@
         if callFunc != None:
             execType, execInfo = callFunc(self.gmCmdDict)
         
-        # 执行结果处理
-        self.GMCmdExecuteResult(execType, execInfo)
+        GetGMOrderMgr().PopCmd(self.orderId)
+        GMCommandResult(self.orderId, self.funcName, execType, execInfo)
         
-    ## 查询logdb
-    #  @param self
-    #  @param logdb
-    #  @param data:自定义数据
-    #  @return None
-    def LogDBRequestResponse(self, logdb, data):        
-        callFunc = GetExecFunc(Commands, "%s.%s"%(self.funcName, "LogDBResponse"))
-        
-        execType = GMCommon.Def_GMCmdNone
-        execInfo = ''
-        if callFunc != None:
-            execType, execInfo = callFunc(logdb, data, self.gmCmdDict)
-            
-        # 执行结果处理
-        self.GMCmdExecuteResult(execType, execInfo)
-        
-    ## 查询userdb
-    #  @param self
-    #  @param userdb
-    #  @param data:自定义数据
-    #  @return None
-    def UserDBRequestResponse(self, userdb, data):     
-        callFunc = GetExecFunc(Commands, "%s.%s"%(self.funcName, "UserDBResponse"))
-        
-        execType = GMCommon.Def_GMCmdNone
-        execInfo = ''
-        if callFunc != None:
-            execType, execInfo = callFunc(userdb, data, self.gmCmdDict)
-        
-        # 执行结果处理
-        self.GMCmdExecuteResult(execType, execInfo)
 
-    ## 执行返回结果处理
-    #  @param self
-    #  @param execType:操作类型
-    #  @param execInfo:自定义数据
-    #  @return None
-    def GMCmdExecuteResult(self, execType, execInfo):
-        
-        if execType == GMCommon.Def_DoQueryLogDB:
-            SendDBRequest(CommonDefine.gstGMToolCmdLogDBRequest,
-                           len(self.orderId), self.orderId, len(execInfo), execInfo)
-                
-        elif execType == GMCommon.Def_DoQueryUserDB:
-            SendDBRequest(CommonDefine.gstGMToolCmdUserDBRequest,
-                           len(self.orderId), self.orderId, len(execInfo), execInfo)
-            
-        elif execType == GMCommon.Def_SendToGameServer:
-            SendGMToolCommandToGameServer(self.pack)
-            # 删除改gm命令
-            GetGMOrderMgr().PopCmd(self.orderId)
-
-        else:
-            #gm命令回复, 删除改gm命令
-            GetGMOrderMgr().PopCmd(self.orderId)
-            GMCommandResult(self.orderId, self.funcName, execType, execInfo)
-        return 
     
 ## gm命令管理
 #
@@ -535,7 +298,7 @@
     resultMsg = json.dumps(resultDcit, ensure_ascii=False)
     
     mylog.info("gm result:%s"%resultMsg)
-    SendToGMToolCommandResult(len(orderId), orderId, len(resultMsg), resultMsg, len(useData), useData)
+    SendToGMToolCommandResult(orderId, resultMsg)
     return
 
 
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 38349a0..f3e9f06 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
@@ -27,7 +27,7 @@
 import inspect
 from Collections.CollectionDefine import *
 import binascii
-# from GMToolLogicProcess import  ProjSpecialProcess
+from GMToolLogicProcess import  ProjSpecialProcess
 from Common import (CommFunc, mylog, CommFuncEx)
 import PegasusCollectorProxy
 import shutil
@@ -433,6 +433,14 @@
         
         mylog.debug("begin process request type = %d"%requestType)
         
+        if requestType == CommonDefine.gstGMToolCommand:
+            oFuncGrade = self.GetFuncGrade('gstGMToolCommand')
+            oFuncGrade.Start()
+            self.OnGMToolCommand(db, pack)
+            oFuncGrade.End()
+            return True
+
+
         if requestType == CommonDefine.gstGeneralDBOper:
             oFuncGrade = self.GetFuncGrade('gstGeneralDBOper')
             oFuncGrade.Start()
@@ -815,12 +823,7 @@
             oFuncGrade.End()    
             return True                                                        
         
-        if requestType ==  CommonDefine.gstGMToolCmdUserDBRequest:
-            oFuncGrade = self.GetFuncGrade("gstGMToolCmdUserDBRequest")
-            oFuncGrade.Start()      
-            self.OnGMToolCmdUserDBRequest(db, pack) 
-            oFuncGrade.End()  
-            return True
+
         if requestType == CommonDefine.gstMergerChildToCenter:
             oFuncGrade = self.GetFuncGrade("gstMergerChildToCenter")
             oFuncGrade.Start()      
@@ -896,6 +899,21 @@
         self.packSend(sessionID, 0, 0, CommonDefine.atMergeLogic, MMORPGPack.stGame,
                       MMORPGPack.stData, sendPack.GetBuffer())
     
+
+    def OnGMToolCommand(self, db, pack):
+
+        if CommonDefine.IsDebug():
+            import binascii
+            mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
+        
+        try:
+            ProjSpecialProcess.OnGMToolCommand(pack)
+        except:
+            msg = error.formatMsg('error', error.ERROR_NO_172, "LogicProcessThread::OnGMToolCommand Catch a unexpetcted exception, error = %s"%traceback.format_exc())
+            mylog.error(msg)
+
+
+
     def OnGeneralDBOper(self, db, pack):
         buf = pack.getBuffer()
         recvPack = RecvPackProtocol.tagGDGameServerGeneralDBOper()
@@ -5680,14 +5698,8 @@
             mylog.error(msg)
             return False            
         return True   
-    def OnGMToolCmdUserDBRequest(self,db, pack):
-        # try:
-        #     ProjSpecialProcess.OnGMToolCmdUserDBRequest(db,pack)
-        # except:
-        #     msg = error.formatMsg('error', error.ERROR_NO_172, "OnGMToolCmdUserDBRequest Catch a unexpetcted exception, error = %s"%traceback.format_exc())
-        #     mylog.error(msg)
-        #     return False
-        return True
+
+
     def OnMergerChildToCenter(self,db, pack):
         mylog.debug('OnMergerChildToCenter in')
 #        #伪装来源,便于回包
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py
index 1d9d240..41ea402 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py
@@ -941,6 +941,7 @@
 
 class  tagGMCommand(Structure):
     Type = 0    #(BYTE Type)
+    ServerID = 0    #(DWORD ServerID)
     OrderLen = 0    #(BYTE OrderLen)
     OrderId = ""    #(String OrderId)
     CmdLen = 0    #(DWORD CmdLen)
@@ -956,6 +957,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.OrderLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.OrderId,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderLen)
         self.CmdLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -966,6 +968,7 @@
 
     def Clear(self):
         self.Type = 0
+        self.ServerID = 0
         self.OrderLen = 0
         self.OrderId = ""
         self.CmdLen = 0
@@ -977,6 +980,7 @@
     def GetLength(self):
         length = 0
         length += 1
+        length += 4
         length += 1
         length += len(self.OrderId)
         length += 4
@@ -989,6 +993,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteBYTE(data, self.Type)
+        data = CommFunc.WriteDWORD(data, self.ServerID)
         data = CommFunc.WriteBYTE(data, self.OrderLen)
         data = CommFunc.WriteString(data, self.OrderLen, self.OrderId)
         data = CommFunc.WriteDWORD(data, self.CmdLen)
@@ -1000,6 +1005,7 @@
     def OutputString(self):
         DumpString = '''
                                 Type:%d,
+                                ServerID:%d,
                                 OrderLen:%d,
                                 OrderId:%s,
                                 CmdLen:%d,
@@ -1009,6 +1015,7 @@
                                 '''\
                                 %(
                                 self.Type,
+                                self.ServerID,
                                 self.OrderLen,
                                 self.OrderId,
                                 self.CmdLen,
@@ -1017,6 +1024,7 @@
                                 self.UserData
                                 )
         return DumpString
+
     
     
 #GM命令数据库请求#tagGMCommandDBRequest

--
Gitblit v1.8.0