From 47813c8aef184ab6bc6f4556d2a18303a2a31d47 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 14 十月 2025 12:33:30 +0800
Subject: [PATCH] 15 卡牌服务端搭建 - 跨服支持PY自定义封包通信
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py | 91 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py
index 598c471..b6cf060 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/Protocol/RecvPackProtocol.py
@@ -937,10 +937,14 @@
return DumpString
+#------------------------------------------------------
#GM命令#tagGMCommand
class tagGMCommand(Structure):
Type = 0 #(BYTE Type)
+ DirType = 0 #(BYTE DirType)//0全广播,1通知非跨服服务器,2只通知跨服
+ ServerLen = 0 #(DWORD ServerLen)
+ ServerList = "" #(String ServerList)//服务器列表格式可以是 [(1,10),13,16,(22,30)]
OrderLen = 0 #(BYTE OrderLen)
OrderId = "" #(String OrderId)
CmdLen = 0 #(DWORD CmdLen)
@@ -956,6 +960,9 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.DirType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ServerList,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerLen)
self.OrderLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.OrderId,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderLen)
self.CmdLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -966,6 +973,9 @@
def Clear(self):
self.Type = 0
+ self.DirType = 0
+ self.ServerLen = 0
+ self.ServerList = ""
self.OrderLen = 0
self.OrderId = ""
self.CmdLen = 0
@@ -978,6 +988,9 @@
length = 0
length += 1
length += 1
+ length += 4
+ length += len(self.ServerList)
+ length += 1
length += len(self.OrderId)
length += 4
length += len(self.Cmd)
@@ -989,6 +1002,9 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteBYTE(data, self.Type)
+ data = CommFunc.WriteBYTE(data, self.DirType)
+ data = CommFunc.WriteDWORD(data, self.ServerLen)
+ data = CommFunc.WriteString(data, self.ServerLen, self.ServerList)
data = CommFunc.WriteBYTE(data, self.OrderLen)
data = CommFunc.WriteString(data, self.OrderLen, self.OrderId)
data = CommFunc.WriteDWORD(data, self.CmdLen)
@@ -1000,6 +1016,9 @@
def OutputString(self):
DumpString = '''
Type:%d,
+ DirType:%d,
+ ServerLen:%d,
+ ServerList:%s,
OrderLen:%d,
OrderId:%s,
CmdLen:%d,
@@ -1009,6 +1028,9 @@
'''\
%(
self.Type,
+ self.DirType,
+ self.ServerLen,
+ self.ServerList,
self.OrderLen,
self.OrderId,
self.CmdLen,
@@ -1017,6 +1039,7 @@
self.UserData
)
return DumpString
+
#GM命令数据库请求#tagGMCommandDBRequest
@@ -2315,6 +2338,74 @@
return DumpString
#------------------------------------------------------
+#GameSever向DB请求信息#tagGDGameServerToDBLogic
+
+class tagGDGameServerToDBLogic(Structure):
+ Type = 0 #(BYTE Type)//封包类型
+ ID = 0 #(DWORD ID)//查询对象ID
+ QueryType = 0 #(BYTE QueryType)//查询事件类型
+ DataLen = 0 #(DWORD DataLen)
+ Data = "" #(String Data)//附加信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.DataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
+ return _pos
+
+ def Clear(self):
+ self.Type = 0
+ self.ID = 0
+ self.QueryType = 0
+ self.DataLen = 0
+ self.Data = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 1
+ length += 4
+ length += len(self.Data)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Type)
+ data = CommFunc.WriteDWORD(data, self.ID)
+ data = CommFunc.WriteBYTE(data, self.QueryType)
+ data = CommFunc.WriteDWORD(data, self.DataLen)
+ data = CommFunc.WriteString(data, self.DataLen, self.Data)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Type:%d,
+ ID:%d,
+ QueryType:%d,
+ DataLen:%d,
+ Data:%s
+ '''\
+ %(
+ self.Type,
+ self.ID,
+ self.QueryType,
+ self.DataLen,
+ self.Data
+ )
+ return DumpString
+
+#------------------------------------------------------
#向指定子服发送消息#tagGDMergeMsgToClient
class tagGDMergeMsgToClient(Structure):
--
Gitblit v1.8.0