From 4cdd576855c6e22d986ece4b18f7c80d82cefe38 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 03 六月 2025 14:21:15 +0800 Subject: [PATCH] 16 卡牌服务端(GMT命令:GMT_AddPayCoin、GMT_CTG) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/ProjSpecialProcess.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 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 24c9bd3..aebce44 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 @@ -41,6 +41,9 @@ from Common import (CommFuncEx, mylog) from Protocol import (MMORPGPack, RecvPackProtocol, SendPackProtocol, MergeServerRecvProtocol, MergeServerSendProtocol) +import PlayerOfflineSupport +import PyGameData +import GameWorld ################################################################## ####### python逻辑入口 ####### @@ -152,6 +155,58 @@ ################################################################## +def GMCmdPlayerValidation(gmCmdDict, offlineSupport=True): + '''后台GM工具玩家命令通用验证 + @param gmCmdDict: 命令参数字典 + @param offlineSupport: 离线玩家是否支持该命令,默认支持,当玩家离线时,会在上线后执行该命令 + @return: GMCommon.Def_xxx, curPlayer + 非 Def_Success 的错误类型 - 代表错误,可直接返回给后台 + Def_Success, curPlayer - curPlayer为空时代表玩家离线状态 + ''' + + 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) + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) + if not curPlayer or curPlayer.IsEmpty(): + # 离线处理 + if offlineSupport: + PlayerOfflineSupport.AddOfflineUnprocessed(playerID, "GMToolCMD", gmCmdDict) + return GMCommon.Def_Success, None + return GMCommon.Def_PlayerOfLine, None + + return GMCommon.Def_Success, curPlayer + +def GMCmdPlayerLogin(curPlayer): + PlayerOfflineSupport.DoOfflineUnprocessed(curPlayer, "GMToolCMD", __doOfflineGMToolCMD) + return + +def __doOfflineGMToolCMD(curPlayer, recData, eventName, eventData): + gmCmdDict = eventData + if not gmCmdDict or not isinstance(gmCmdDict, dict): + return + funcName = gmCmdDict.get(GMCommon.Def_GMKey_Type, '') + callFunc = GetExecFunc(Commands, "%s.%s" % (funcName, "OnExec")) + if callFunc != None: + callFunc(gmCmdDict) + return + ## gm命令执行 # -- Gitblit v1.8.0