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