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/GMToolPyInterface.py | 134 +++++++------------------------------------- 1 files changed, 21 insertions(+), 113 deletions(-) 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 -- Gitblit v1.8.0