From 3bc2e9aae7e595d5be896a9db4c909b76fa6f5be Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期五, 11 七月 2025 14:16:29 +0800 Subject: [PATCH] 0312 物品叠加数量支持配置DWORD --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py | 88 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 85 insertions(+), 3 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 aebce44..066fc38 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 @@ -44,6 +44,7 @@ import PlayerOfflineSupport import PyGameData import GameWorld +import DBDataMgr ################################################################## ####### python逻辑入口 ####### @@ -155,6 +156,82 @@ ################################################################## +def GMCmdPlayerListValidationID(gmCmdDict): + '''后台GM工具玩家列表命令通用验证 + @param gmCmdDict: 命令参数字典 + @return: GMCommon.Def_xxx, idList or errorInfo + 非 Def_Success 的错误类型 - 代表错误,可直接返回给后台 + Def_Success, playerIDList - 待处理的玩家ID列表 + ''' + playerList = gmCmdDict.get("playerList", '') + playerList = playerList.split(",") + if not playerList: + return GMCommon.Def_ParamErr, "" + + playerIDList = [] + queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '') + if queryType in [GMCommon.Def_GMKey_PlayerName, GMCommon.Def_GMKey_PlayerAccID]: + for playerFind in playerList: + if queryType == GMCommon.Def_GMKey_PlayerName: + rec = PyGameData.g_usrCtrlDB.findDBPlayerByName(playerFind) + elif queryType == GMCommon.Def_GMKey_PlayerAccID: + rec = PyGameData.g_usrCtrlDB.findDBPlayerByAccID(playerFind) + else: + continue + + if not rec: + # db找不到就是不存在该玩家 + return GMCommon.Def_NoTag, "%s can not found!" % str(playerFind) + + playerID = rec.get(u'PlayerID', 0) + playerIDList.append(playerID) + + elif queryType == GMCommon.Def_GMKey_FamilyID: + # 根据家族ID的直接返回 + familyMgr = DBDataMgr.GetFamilyMgr() + for familyID in eval(playerList): + familyID = GameWorld.ToIntDef(familyID) + family = familyMgr.FindFamily(familyID) + if not family: + GameWorld.DebugLog(" not family %s" % familyID) + continue + memberIDList = family.GetMemberIDList() + playerIDList += memberIDList + + if not playerIDList: + return GMCommon.Def_ParamErr, "" + + return GMCommon.Def_Success, playerIDList + +def GMCmdPlayerValidationID(gmCmdDict): + '''后台GM工具玩家命令通用验证 + @param gmCmdDict: 命令参数字典 + @return: GMCommon.Def_xxx, playerID + 非 Def_Success 的错误类型 - 代表错误,可直接返回给后台 + Def_Success, playerID - 本服玩家ID + ''' + + queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '') + playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '') + + if len(playerFind) <= 0: + return GMCommon.Def_ParamErr, None + + # 玩家姓名 + if queryType == GMCommon.Def_GMKey_PlayerName: + rec = PyGameData.g_usrCtrlDB.findDBPlayerByName(playerFind) + elif queryType == GMCommon.Def_GMKey_PlayerAccID: + rec = PyGameData.g_usrCtrlDB.findDBPlayerByAccID(playerFind) + else: + return GMCommon.Def_ParamErr, None + + if not rec: + # db找不到就是不存在该玩家 + return GMCommon.Def_NoTag, None + + playerID = rec.get(u'PlayerID', 0) + return GMCommon.Def_Success, playerID + def GMCmdPlayerValidation(gmCmdDict, offlineSupport=True): '''后台GM工具玩家命令通用验证 @param gmCmdDict: 命令参数字典 @@ -239,11 +316,16 @@ def GMToolCommand(self): callFunc = GetExecFunc(Commands, "%s.%s"%(self.funcName, "OnExec")) - execType = GMCommon.Def_SendToGameServer + execType = GMCommon.Def_Unknow execInfo = '' if callFunc != None: - execType, execInfo = callFunc(self.gmCmdDict) - + ret = callFunc(self.gmCmdDict) + if isinstance(ret, int): + execType = ret + elif isinstance(ret, tuple): + execType = ret[0] + execInfo = ret[1] + GetGMOrderMgr().PopCmd(self.orderId) GMCommandResult(self.orderId, self.funcName, execType, execInfo) -- Gitblit v1.8.0