ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
@@ -30,6 +30,9 @@
import traceback
import FBLogic
import GameObj
import CrossMsg
import ShareDefine
import CrossPlayer
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -96,20 +99,26 @@
        elif not CheckGMLV(curPlayer , callFunName):
            GameWorld.DebugAnswer(curPlayer, 'GM等级不足!')
            return
        #把剩余参数转换为整型
        for i in range(1, len(inputList)):
            value = GameWorld.ToNumDef(inputList[i], None)
            if value == None:
                #GameWorld.DebugAnswer(curPlayer, "参数错误, 必须为纯数字!")
                continue
            inputList[i] = value
            
        if GameWorld.IsMainServer():
            callFunc = GameWorld.GetExecFunc(Commands, "%s.%s"%(callFunName, "GetGMServerIDList"))
            if callFunc != None:
                gmServerIDList = callFunc(curPlayer)
                if gmServerIDList:
                    CrossMsg.SendToCrossServer(ShareDefine.S2C_GMCMD, {"CMD":inputList}, gmServerIDList, curPlayer.GetPlayerID())
        callFunc = GameWorld.GetExecFunc(Commands, "%s.%s"%(callFunName, "OnExec"))
        if callFunc:
            #删除命令,只将参数传入
            del inputList[0]
            #把剩余参数转换为整型
            for i in range(0, len(inputList)):
                value = GameWorld.ToNumDef(inputList[i], None)
                if value == None:
                    #GameWorld.DebugAnswer(curPlayer, "参数错误, 必须为纯数字!")
                    continue
                inputList[i] = value
            callFunc(curPlayer, inputList)
            #删除命令,只将参数传入
            callFunc(curPlayer, inputList[1:])
            DR_UseGMCMD(curPlayer, inputStr)
            return
        
@@ -196,6 +205,24 @@
        #    raise Exception(errorMsg)
    return
def S2C_GMCMD(dataMsg, fromServerID, playerID):
    cmdList = dataMsg["CMD"]
    callName = "%s.%s" % (cmdList[0], "OnExecCross")
    callFunc = GameWorld.GetExecFunc(Commands, callName)
    if callFunc == None:
        GameWorld.ErrLog("找不到此GM命令处理函数%s" % callName)
        return
    GameWorld.Log("跨服执行GM命令:%s" % cmdList)
    crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(playerID)
    if not crossPlayer:
        crossPlayer = CrossPlayer.GetCrossPlayerMgr().RegistPlayer(playerID)
    #只将实际参数传入
    callFunc(crossPlayer, cmdList[1:])
    return
## 使用GM命令流向
#  @param curPlayer: 玩家实例
#  @return: None