hxp
2025-06-04 d196d101b54ca95a1343399841d6b4e1117143b7
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)