From f29b503cc8a6ed9b1aa3a7c956e75fd76fc29af5 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 30 五月 2025 11:48:23 +0800
Subject: [PATCH] 15 卡牌服务端搭建 新增接口SendPyPackToServersRoute,从地图发送封包给ServersRoute,可用于GM命令,跨服封包等 GM命令例子GMT_CTG参考 tagGMCommand封包新增ServerID字段

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py |  247 +------------------------------------------------
 1 files changed, 5 insertions(+), 242 deletions(-)

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
 
 

--
Gitblit v1.8.0