| | |
| | | import traceback
|
| | | import FBLogic
|
| | | import GameObj
|
| | | import CrossMsg
|
| | | import ShareDefine
|
| | | import CrossPlayer
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
| | |
|
| | | #验证权限失败
|
| | | 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
|
| | | |
| | | isSendGameServer = callFunc(curPlayer, inputList)
|
| | | #删除命令,只将参数传入 |
| | | callFunc(curPlayer, inputList[1:])
|
| | | DR_UseGMCMD(curPlayer, inputStr)
|
| | | if isSendGameServer:
|
| | | curPlayer.GameServer_GMCmd(inputStr)
|
| | | return
|
| | |
|
| | | # GameObj 的 Get、Set函数
|
| | |
| | | DR_UseGMCMD(curPlayer, inputStr)
|
| | | return
|
| | |
|
| | | curPlayer.GameServer_GMCmd(inputStr)
|
| | | #没有此命令
|
| | | GameWorld.Log("###使用GM命令 = %s, 没有该命令!" % callFunName, curPlayer.GetPlayerID())
|
| | | GameWorld.DebugAnswer(curPlayer, 'no cmd !!!')
|
| | | except BaseException:
|
| | | GameWorld.DebugAnswer(curPlayer, "执行GM命令错误, 请查看所在地图日志!")
|
| | | errorMsg = str(traceback.format_exc())
|
| | |
| | | # 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
|