From 5ac407ea08e218f3638e67b37c9261b437393d34 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 03 十二月 2025 19:55:29 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(支持多地图战斗)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChServerToServerPyPack.py | 92 +++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 17 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 39 ++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/CrossServerPackLogic.py | 153 +++++++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 10 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyCrossServerPack.ini | 5
11 files changed, 294 insertions(+), 36 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyCrossServerPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyCrossServerPack.ini
index 396cdaa..5aa4c46 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyCrossServerPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyCrossServerPack.ini
@@ -7,10 +7,13 @@
Writer = alee
Releaser = alee
RegType = 0
-RegisterPackCount = 1
+RegisterPackCount = 2
PacketCMD_1=0xC2
PacketSubCMD_1=0x01
PacketCallFunc_1=OnTest
+PacketCMD_2=0xC2
+PacketSubCMD_2=0x02
+PacketCallFunc_2=OnSSCommMsg
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
index 251aecb..8fd45cc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -1224,7 +1224,7 @@
return batObjMgr
def OnMinute():
- GameWorld.Log("战斗单位数量: %s" % len(GetBatObjMgr().batObjDict))
+ #GameWorld.Log("战斗单位数量: %s" % len(GetBatObjMgr().batObjDict))
return
def NotifyObjInfoRefresh(batObj, attrID, value):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index ce6fd7c..873f460 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -29,6 +29,7 @@
import GameWorld
import PlayerLLMJ
import PlayerPrestigeSys
+import CrossServerPackLogic
import IpyGameDataPY
import PlayerOnline
import NPCCommon
@@ -47,7 +48,6 @@
import random
import time
import json
-import shutil
import os
g_gmTestFightReq = []
@@ -1138,21 +1138,31 @@
# pvp 或 pve 必须要满足其中一种
return
- # 先默认本地图处理,后续优化多战斗地图支持
-
reqServerID = GameWorld.GetGameWorld().GetServerID()
- reqInfo = [reqServerID, guid, mapID, funcLineID, lineupDictA, lineupDictB, reqPlayerID, npcLineupIDList, strongerLV, difficulty, reqData]
- OnMsg_BattleRequest(reqInfo)
+ reqInfo = [guid, mapID, funcLineID, lineupDictA, lineupDictB, reqPlayerID, npcLineupIDList, strongerLV, difficulty, reqData]
+ multiMapSet = IpyGameDataPY.GetFuncCfg("TurnFightProcess", 1)
+ # 多地图战斗 0-本地图处理;1-多地图处理;2-debug模式默认本地图处理,非debug默认多地图处理
+ isMultiMap = False
+ if multiMapSet == 1:
+ isMultiMap = True
+ elif multiMapSet == 2:
+ if not GameWorld.GetGameWorld().GetDebugLevel():
+ isMultiMap = True
+
+ if isMultiMap:
+ CrossServerPackLogic.SendToBattleServer(ShareDefine.SSMsg_BattleRequest, reqInfo, reqPlayerID)
+ else:
+ SSMsg_BattleRequest(reqInfo, reqServerID)
return
-def OnMsg_BattleRequest(reqInfo):
+def SSMsg_BattleRequest(reqInfo, fromServerID):
## 请求执行战斗,由本地图或其他服务器地图分配过来的战斗请求
- reqServerID, guid, mapID, funcLineID, lineupDictA, lineupDictB, reqPlayerID, npcLineupIDList, strongerLV, difficulty, reqData = reqInfo
+ guid, mapID, funcLineID, lineupDictA, lineupDictB, reqPlayerID, npcLineupIDList, strongerLV, difficulty, reqData = reqInfo
if npcLineupIDList:
- turnFight = DoTurnFightPVE(guid, mapID, funcLineID, reqPlayerID, reqServerID, lineupDictA, npcLineupIDList, strongerLV, difficulty)
+ turnFight = DoTurnFightPVE(guid, mapID, funcLineID, reqPlayerID, fromServerID, lineupDictA, npcLineupIDList, strongerLV, difficulty)
else:
- turnFight = DoTurnFightPVP(guid, mapID, funcLineID, lineupDictA, lineupDictB, reqPlayerID, reqServerID)
+ turnFight = DoTurnFightPVP(guid, mapID, funcLineID, lineupDictA, lineupDictB, reqPlayerID, fromServerID)
winFaction = None
statMsg = {}
@@ -1165,16 +1175,15 @@
retInfo = [guid, mapID, funcLineID, reqPlayerID, winFaction, statMsg, dateStr, reqData]
# 本地图自己处理的
- if reqServerID == GameWorld.GetGameWorld().GetServerID():
- OnMsg_BattleResult(retInfo)
+ if fromServerID == GameWorld.GetGameWorld().GetServerID():
+ SSMsg_BattleResult(retInfo, fromServerID)
# 其他服务器地图请求的,发送战斗结果回去
else:
- pass
-
+ CrossServerPackLogic.SendToServer(ShareDefine.SSMsg_BattleResult, retInfo, [fromServerID], playerID=reqPlayerID)
return
-def OnMsg_BattleResult(retInfo):
+def SSMsg_BattleResult(retInfo, fromServerID):
## 收到战斗结果信息
guid, mapID, funcLineID, reqPlayerID, winFaction, statMsg, dateStr, reqData = retInfo
@@ -1993,7 +2002,7 @@
funcLineID = turnFight.funcLineID
GameWorld.DebugLog("--- 战斗结束处理 ---, winFaction=%s, costTime=%ss, %s" % (winFaction, turnFight.costTime, guid))
if mapID != ChConfig.Def_FBMapID_Main:
- GameWorld.Log("战斗耗时: %ss, mapID=%s,funcLineID=%s" % (turnFight.costTime, mapID, funcLineID))
+ GameWorld.Log("战斗耗时: %ss, mapID=%s,funcLineID=%s,turnNum=%s/%s" % (turnFight.costTime, mapID, funcLineID, turnFight.turnNum, turnFight.turnMax))
# 统计明细
batObjMgr = BattleObj.GetBatObjMgr()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChServerToServerPyPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChServerToServerPyPack.py
index 2ab391d..071b9d6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChServerToServerPyPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChServerToServerPyPack.py
@@ -101,6 +101,98 @@
return DumpString
#------------------------------------------------------
+# C2 02 跨服通用信息包 #tagSSCommMsg
+
+class tagSSCommMsg(Structure):
+ Head = tagHead()
+ FromServerID = 0 #(DWORD FromServerID)//哪个服发的
+ ServerTime = 0 #(DWORD ServerTime)//来源服务器时间戳
+ TypeLen = 0 #(BYTE TypeLen)
+ MsgType = "" #(String MsgType)
+ Len = 0 #(DWORD Len)
+ Data = "" #(String Data)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xC2
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
+ self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC2
+ self.Head.SubCmd = 0x02
+ self.FromServerID = 0
+ self.ServerTime = 0
+ self.TypeLen = 0
+ self.MsgType = ""
+ self.Len = 0
+ self.Data = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.MsgType)
+ length += 4
+ length += len(self.Data)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.FromServerID)
+ data = CommFunc.WriteDWORD(data, self.ServerTime)
+ data = CommFunc.WriteBYTE(data, self.TypeLen)
+ data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
+ data = CommFunc.WriteDWORD(data, self.Len)
+ data = CommFunc.WriteString(data, self.Len, self.Data)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ FromServerID:%d,
+ ServerTime:%d,
+ TypeLen:%d,
+ MsgType:%s,
+ Len:%d,
+ Data:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.FromServerID,
+ self.ServerTime,
+ self.TypeLen,
+ self.MsgType,
+ self.Len,
+ self.Data
+ )
+ return DumpString
+
+
+m_NAtagSSCommMsg=tagSSCommMsg()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
+
+
+#------------------------------------------------------
# C2 01 跨服服务器间的测试包 #tagSSTest
class tagSSTest(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/CrossServerPackLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/CrossServerPackLogic.py
index ee250de..ae314e9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/CrossServerPackLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/CrossServerPackLogic.py
@@ -7,16 +7,163 @@
# 跨服服务器间的封包 既是收包也是发包
import GameWorld
-import ChServerToServerPyPack
+import ShareDefine
import NetPackCommon
+import ChServerToServerPyPack
+import TurnAttack
+import PyGameData
+import ChPlayer
+
+import traceback
+import cPickle
+import time
def OnTest(netPack):
GameWorld.Log("收到跨服包 " + str(netPack.Data))
-def SendTest():
+def SendTest(dirType, serverList):
pack = ChServerToServerPyPack.tagSSTest()
pack.Data = 12
#0全广播,1通知主服务器排除合服子服,2通知服务器包含合服子服, 3通知跨服服务器
- NetPackCommon.SendCrossServerToServerPack(1, "[501]", pack.GetBuffer())
+ NetPackCommon.SendCrossServerToServerPack(dirType, serverList, pack.GetBuffer())
+ return
+
+def GetCrossServerID():
+ ## 获取本服务器所属的跨服中心服务器
+ return 0
+
+def SendToCrossServer(msgType, dataMsg):
+ ## 发送信息到跨服服务器
+ if GameWorld.IsCrossServer():
+ return
+ if not dataMsg:
+ return
+ if msgType not in [ShareDefine.ClientServerMsg_ServerInitOK]:
+ isOpen = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen)
+ if not isOpen:
+ GameWorld.Log("跨服服务器未开启或维护中不发送消息! SendMsgToCrossServer => %s" % msgType)
+ return
+ crossServerID = GetCrossServerID()
+ if not crossServerID:
+ return
+
+ playerID = 0
+ if isinstance(dataMsg, dict):
+ playerID = dataMsg.get("playerID", 0)
+ if not playerID:
+ playerID = dataMsg.get("PlayerID", 0)
+
+ GameWorld.Log("SendMsgToCrossServer => %s, %s, %s" % (msgType, crossServerID, dataMsg), playerID)
+ SendToServer(msgType, dataMsg, [crossServerID], ShareDefine.dirType_Cross, playerID, isLog=False)
+ return
+
+def SendToClientServer(msgType, dataMsg, serverIDList=None):
+ ''' 发送信息到子服务器
+ @param serverGroupIDList: 发送指定的服务器组ID列表,内部已经针对列表中组ID去重,
+ 所以外部逻辑可直接添加,不用考虑组ID重复问题,没有指定服务器组ID时,默认广播所有子服
+ '''
+ if not GameWorld.IsCrossServer():
+ return
+
+ if not PyGameData.g_serverInitOK:
+ GameWorld.ErrLog("跨服服务器未启动好,不允许向子服发送数据! %s, %s, %s" % (msgType, serverIDList, dataMsg))
+ return
+
+ playerID = 0
+ if isinstance(dataMsg, dict):
+ playerID = dataMsg.get("playerID", 0)
+ if not playerID:
+ playerID = dataMsg.get("PlayerID", 0)
+
+ GameWorld.Log("SendToClientServer => %s, %s, %s" % (msgType, serverIDList, dataMsg), playerID)
+ SendToServer(msgType, dataMsg, serverIDList, ShareDefine.dirType_Main, playerID, isLog=False) # 默认发给主服即可
+ return
+
+def SendToBattleServer(msgType, dataMsg, playerID=0):
+ SendToServer(msgType, dataMsg, dirType=ShareDefine.dirType_Battle, playerID=playerID)
+ return
+
+def SendToServer(msgType, dataMsg, serverIDList=None, dirType=ShareDefine.dirType_Main, playerID=0, isLog=True):
+ '''发送给其他服务器
+ @param msgType: 功能信息类型字符定义
+ @param dataMsg: 发送的数据,任意格式,由功能自行决定
+ @param serverIDList: 指定目标服务器ID 或 服务器ID列表
+ '''
+
+ if isinstance(serverIDList, int):
+ serverIDList = [serverIDList]
+ elif not isinstance(serverIDList, list):
+ serverIDList = []
+ else:
+ serverIDList = list(set(serverIDList)) # 去重
+
+ if isLog:
+ GameWorld.Log("SendToServer => %s, %s, %s" % (msgType, serverIDList, dataMsg), playerID)
+
+ # 协议要用最高级2,可减少长度
+ sendMsg = cPickle.dumps(dataMsg, 2)
+
+ pack = ChServerToServerPyPack.tagSSCommMsg()
+ pack.FromServerID = GameWorld.GetGameWorld().GetServerID()
+ pack.ServerTime = int(time.time())
+ pack.MsgType = msgType
+ pack.TypeLen = len(pack.MsgType)
+ pack.Data = sendMsg
+ pack.Len = len(pack.Data)
+ NetPackCommon.SendCrossServerToServerPack(dirType, serverIDList, pack.GetBuffer())
+ return
+
+def OnSSCommMsg(netPack):
+ ## 收到其他服务器发来的消息
+
+ fromServerID = netPack.FromServerID
+ fromServerTime = netPack.ServerTime
+ msgType = netPack.MsgType
+ recvMsg = netPack.Data
+
+ if not PyGameData.g_serverInitOK:
+ GameWorld.Log("服务器未启动好,不处理其他服务器信息! %s, fromServerID=%s" % (msgType, fromServerID))
+ return
+
+ try:
+ dataMsg = cPickle.loads(recvMsg)
+ if GameWorld.IsCrossServer():
+ GameWorld.Log("OnCrossServerReceiveMsg: %s, fromServerID=%s, %s" % (msgType, fromServerID, dataMsg))
+ else:
+ GameWorld.Log("OnClientServerReceiveMsg: %s, fromServerID=%s, %s" % (msgType, fromServerID, dataMsg))
+
+ crossServerID = GetCrossServerID()
+ if crossServerID == fromServerID:
+ __fixCrossServerTime(msgType, fromServerTime)
+
+ if msgType == ShareDefine.SSMsg_BattleRequest:
+ TurnAttack.SSMsg_BattleRequest(dataMsg, fromServerID)
+ elif msgType == ShareDefine.SSMsg_BattleResult:
+ TurnAttack.SSMsg_BattleResult(dataMsg, fromServerID)
+
+ except:
+ GameWorld.RaiseException("服务器接收信息处理报错 \r\n%s" % str(traceback.format_exc()))
+ return
+
+def __fixCrossServerTime(msgType, crossServerTime):
+ # 子服矫正跨服服务器时间
+ curServerTime = int(time.time())
+ curServerCrossServerTime = GameWorld.ChangeTimeStrToNum(GameWorld.GetCrossServerTimeStr())
+ diffSeconds = curServerCrossServerTime - crossServerTime # 本服计算误差
+
+ PyGameData.g_crossServerTimeInfo = [crossServerTime, curServerTime] # 覆盖更新
+
+ # 误差超过30秒 或强制同步时间的
+ if abs(diffSeconds) >= 30 or msgType == ShareDefine.CrossServerMsg_CrossServerTime:
+ GameWorld.DebugLog("同步跨服服务器时间,本服与跨服服务器时间计算误差! diffSeconds=%s" % (diffSeconds))
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not GameWorld.IsNormalPlayer(curPlayer):
+ continue
+ ChPlayer.Sync_PyServerDataTimeToClient(curPlayer)
+ return
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py
index 31f2e74..90d84fc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py
@@ -124,7 +124,7 @@
curTime = int(time.time())
if not saveToDB:
if curTime > PyGameData.g_lastRTBTime and curTime - PyGameData.g_lastRTBTime < BackupInterval * 60:
- GameWorld.DebugLog("备档冷却中! 上次备档时间=%s" % (GameWorld.ChangeTimeNumToStr(PyGameData.g_lastRTBTime)))
+ #GameWorld.DebugLog("备档冷却中! 上次备档时间=%s" % (GameWorld.ChangeTimeNumToStr(PyGameData.g_lastRTBTime)))
return
serverID = GameWorld.GetGameWorld().GetServerID()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index 634940b..86d570a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -1948,7 +1948,7 @@
## 跨服服务器时间
if IsCrossServer():
return GetCurrentDataTimeStr()
- lastCrossServerTime, lastServerTime, _ = PyGameData.g_crossServerTimeInfo
+ lastCrossServerTime, lastServerTime = PyGameData.g_crossServerTimeInfo
if not lastCrossServerTime:
return GetCurrentDataTimeStr()
curTime = int(time.time())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index c50b8a5..6f75318 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -995,16 +995,6 @@
PyGameData.g_crossZoneName = msgValue
return
- if key == ShareDefine.Def_Notify_WorldKey_CrossServerTime:
- PyGameData.g_crossServerTimeInfo = eval(msgValue)
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- ChPlayer.Sync_PyServerDataTimeToClient(curPlayer)
- return
-
# 幸运云购
if key == ShareDefine.Def_Notify_WorldKey_LuckyCloudBuyInfo:
PyGameData.g_luckyCloudBuyInfo = eval(msgValue)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
index 4365f84..e6c5c68 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
@@ -106,7 +106,7 @@
g_luckyCloudBuyInfo = {} # 幸运云购最新一期信息
-g_crossServerTimeInfo = [0, 0, 0] # 跨服时间信息 [crossServerTime, curServerTime, syncMapTime]
+g_crossServerTimeInfo = [0, 0] # 跨服时间信息 [crossServerTime, curServerTime]
g_crossZoneName = "" # 跨服分区名
g_crossRegPlayerAttrDict = {} #跨服注册时登记的会影响战力的属性值 {playerID:[value, ...], ...}
g_crossSyncTickDict = {} #需要同步跨服数据的玩家同步tick字典 {playerID:tick, ...}
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
index 4f0250d..056abb3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
@@ -938,9 +938,9 @@
def OnCrossServerToServerPack(self, db, pack):
- if CommonDefine.IsDebug():
- import binascii
- mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
+ #if CommonDefine.IsDebug():
+ # import binascii
+ # mylog.debug('buf = %s'%binascii.b2a_hex(pack.getBuffer()))
try:
recvPack = MergeServerRecvProtocol.tagLPStringData()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 27dcb6f..ba7e5e4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1037,6 +1037,23 @@
CampType_Evil, #邪恶(与 Def_ID2Win 一致)
] = range(3)
+# json里的配表 服务器类型(0主服,1子服,2跨服,3战斗服)]
+serverType_Main = 0 # 0主服
+serverType_Child = 1 # 1子服
+serverType_Cross = 2 # 2跨服
+serverType_Battle = 3 # 3战斗服
+
+# dirType //0全广播,1通知主服务器排除合服子服,2通知服务器包含合服子服, 3通知跨服服务器 ,4通知战斗服务器
+dirType_All = 0 # 0全广播
+dirType_Main = 1 # 1通知主服务器排除合服子服
+dirType_Child = 2 # 2通知服务器包含合服子服
+dirType_Cross = 3 # 3通知跨服服务器
+dirType_Battle = 4 # 4通知战斗服务器
+
+# 服务器间的信息定义
+SSMsg_BattleRequest = "SS_BattleRequest"
+SSMsg_BattleResult = "SS_BattleResult"
+
# 跨服服务器发送子服信息定义
CrossServerMsg_CrossServerState = "CrossServerState" # 跨服服务器状态变更
CrossServerMsg_PlayerLoginout = "PlayerLoginout" # 玩家上下线状态同步
--
Gitblit v1.8.0