hxp
2025-05-30 efc705c4fb10577ff83e09273c90a6ead41164bd
Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode
9个文件已修改
545 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_GameWorld1.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_PlayerDefine.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IPY_ServerDefine.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_CTG.py 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMToolPyInterface.py 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
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
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
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
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
    
    if playerAccID == '':
        return GMCommon.Def_NoTag, ''
    playerID = curPlayer.GetPlayerID()
    return GMCommon.Def_DoQueryLogDB, playerAccID
    Result = GMCommon.Def_Unknow
    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
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
    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)
    
    
    # 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')
#发送数据库请求
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
    
      
################################################################## 
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逻辑入口 ####### 
@@ -131,18 +132,6 @@
        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')
    return
@@ -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)
    ## 查询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
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()      
@@ -895,6 +898,21 @@
        sendPack.ErrMsgLen = len(sendPack.ErrMsg)
        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()
@@ -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')
#        #伪装来源,便于回包
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,
@@ -1019,6 +1026,7 @@
        return DumpString
    
    
#GM命令数据库请求#tagGMCommandDBRequest
class  tagGMCommandDBRequest(Structure):
    Type = 0    #(BYTE Type)