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