From 01a0e539b786ae0f1c46646874502367f5410aca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 二月 2026 18:18:51 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(优化游戏服及跨服启动、通讯逻辑;服务器类型增加跨服中心、跨服事件、时间管理;跨服玩家在线状态、基础信息、玩家资源增减管理、发送跨服个人邮件等;跨服公会初版,修复公会成员审核、成员战力刷新等bug,增加公会名次同步;跨服公会暂未测试;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py | 49 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
index fa2c200..c2d6f9b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
+++ b/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
--
Gitblit v1.8.0