hxp
2026-02-13 546dcbc1cd69927955b15ff65caae657dc04bdde
1111 【后台】执行命令支持;
2个文件已添加
117 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_Execfile.py 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMTExec/Test.py 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_Execfile.py
New file
@@ -0,0 +1,70 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_Execfile
#
# @todo:GM工具命令 - 执行命令
# @author hxp
# @date 2026-02-13
# @version 1.0
#
# 详细描述: GM工具命令 - 执行命令
#
#-------------------------------------------------------------------------------
#"""Version = 2026-02-13 14:30"""
#-------------------------------------------------------------------------------
import GMCommon
import GameWorld
import DataRecordPack
import traceback
import os
## 收到gm命令执行
# @param gmCmdDict:gm命令字典
# @return None
def OnExec(gmCmdDict):
    queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
    playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
    cmdInfo = gmCmdDict.get('cmdInfo', '')
    if not cmdInfo:
        return GMCommon.Def_ParamErr
    GMT_Name = gmCmdDict.get(GMCommon.Def_GMKey_Type, '')
    playerID, playerName, accID = 0, "", ""
    curPlayer = None
    errorMsg = ""
    if playerFind:
        from GMToolLogicProcess import  ProjSpecialProcess
        Result, curPlayer = ProjSpecialProcess.GMCmdPlayerValidation(gmCmdDict, False)
        if Result != GMCommon.Def_Success:
            return Result, errorMsg
        if not curPlayer:
            return Result, "玩家不在线"
        playerID = curPlayer.GetPlayerID()
        playerName = curPlayer.GetPlayerName()
        accID = curPlayer.GetAccID()
    backDir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
    execfilepath = os.path.join(backDir, "GMTExec\\%s.py" % cmdInfo)
    GameWorld.Log("GMT_Execfile: %s" % execfilepath)
    if not os.path.exists(execfilepath):
        return GMCommon.Def_ParamErr, "%s is not exists!" % cmdInfo
    resultDict = {"cmdInfo":cmdInfo}
    try:
        execfile(execfilepath, globals(), locals())
    except:
        errMsg = traceback.format_exc()
        GameWorld.ErrLog(errMsg)
        resultDict["errMsg"] = errMsg
        return GMCommon.Def_Unknow, resultDict
    #流向
    DataRecordPack.DR_ToolGMOperate(playerID, playerName, accID, GMT_Name, resultDict)
    return GMCommon.Def_Success, resultDict
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/GMTExec/Test.py
New file
@@ -0,0 +1,47 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Script.PyMongoDB.GMToolLogicProcess.GMTExec.Test
#
# @todo:测试命令文件运行
# @author hxp
# @date 2026-02-13
# @version 1.0
#
# 详细描述: 测试命令文件运行
#
#-------------------------------------------------------------------------------
#"""Version = 2026-02-13 14:30"""
#-------------------------------------------------------------------------------
def runMyTest(exec_locals):
    ''' 运行命令函数
    @param exec_locals: GY_Query_GMTExecfile 模块中的 DoLogic 函数 locals()
    import 其他模块需要写在此函数里,不然无法引用到
    '''
    import GameWorld
    cmdInfo = exec_locals["cmdInfo"]
    curPlayer = exec_locals.get("curPlayer", None)
    resultDict = exec_locals["resultDict"] # 建议都进行更新结果字典记录详细处理信息,GY_Query_GMTExecfile 模块会统一写入流向
    playerID = 0
    # 以下为详细处理逻辑
    # 指定玩家的逻辑
    if curPlayer:
        playerID = curPlayer.GetPlayerID()
        resultDict.update({"LV":curPlayer.GetLV(), "PlayerID":curPlayer.GetPlayerID()})
    # 无玩家的逻辑
    else:
        resultDict.update({"OK":1})
    GameWorld.Log("GMT_Execfile run %s" % cmdInfo, playerID)
    return
exec_locals = locals()
if exec_locals.get("cmdInfo"):
    runMyTest(exec_locals)