From ba67d86ccc7dde96a4fe2bb2ae3abfbd0aacc561 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 十一月 2025 12:00:10 +0800
Subject: [PATCH] 237 【福利内容】每日任务/每周任务/章节奖励-服务端(增加每日任务类型 6 ~ 10)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py |   79 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 3 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
index 5ce5b67..d01e484 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
@@ -31,6 +31,9 @@
 import traceback
 import ChGameToMapPyPack
 from PyMongoDB.DBCommon import CommonDefine
+import ObjPool
+import ChServerToServerPyPack
+from PyMongoDB.Protocol import MergeServerRecvProtocol
 #-------------------------------------------------------------------------------
 #---全局变量---
 
@@ -227,6 +230,8 @@
         Log("SendFakePack: clientPack Len = %s > %s"%(clientPack.GetLength(), len(innerPackData)))
     #curPlayer.SendFakePack(innerPackData, len(innerPackData))
     curPlayer.SendFakePack(clientPack.GetBuffer(), clientPack.GetLength())
+    ObjPool.GetPoolMgr().release(clientPack)
+    return
     
 def SendFackPackOnline(clientPack, parseFunc=None, *args):
     ## 发送给全服在线玩家
@@ -245,8 +250,6 @@
 #-------------------------------------------------------------------------------
 #---Py封包注册信息
 PyPackTable = ReadPyPackTable("PyNetPack")
-
-
 
 
 
@@ -331,4 +334,74 @@
 # 向ServersRoute发送数据
 def SendPyPackToServersRoute(data, datalen):
     GameWorld.GetGameWorld().SendPyPackToServersRoute(datalen, data)
-    return
\ No newline at end of file
+    return
+
+
+#-------------------------------------------------------------------------------
+# Py跨服服务器间的封包
+#跨服服务器间的封包既是发包也是收包
+PyCrossServerPackTable = {}
+PyCrossServerPackTable = ReadPyPackTable("PyCrossServerPack")
+
+# 收包字典
+RecCrossServerPyPackDict = ChServerToServerPyPack.ChNetPackDict
+
+## 接收跨服之间封包
+#  @param tick 时间戳
+#  @return 无返回值
+#  @remarks
+def RecCrossServerNetPack(netPackBuffer):
+    
+    try:
+
+        #没有PY封包头
+        if len(netPackBuffer) <= 1:
+            return
+        
+        headData = netPackBuffer[1] + netPackBuffer[0]
+        curPackHead = CommFunc.ReadWORD(headData, 0)[0]
+
+        curPackData = RecCrossServerPyPackDict.get(curPackHead)
+        if not curPackData:
+            return
+        
+        
+        curPackData.ReadData(netPackBuffer)
+        
+        # 截断字符串
+        for key in dir(curPackData):
+            value = getattr(curPackData, key)
+            if isinstance(value, str):
+                setattr(curPackData, key, value.rstrip(chr(0x0)))
+        
+        # 取此包头注册信息
+        curPackHeadRegDict = PyCrossServerPackTable.get(curPackHead)
+        # 无此封包注册信息
+        if curPackHeadRegDict == None:
+            #Log("RevieveFakePack: No Register curPackHead = %s"%curPackHead)
+            return
+        
+        curPackHeadRegDict["CallFunc"](curPackData)
+        
+    except Exception:
+        GameWorld.RaiseException("!!!python自定义跨服封包解析失败\r\n%s" % traceback.format_exc())
+        return 
+    
+    
+## 发送跨服包:服务器与服务器间的通信
+#  @param DirType  0全广播,1通知主服务器排除合服子服,2通知服务器包含合服子服, 3通知跨服服务器 
+#  @param serverList 服务器列表 格式如 [(1,10),50,(55,100)] 约定内部必须用元组 同其他跨服配表规则一致
+#  @param packBuffer 自定义封包字节字符串
+def SendCrossServerToServerPack(dirType, serverList, packBuffer):
+    recvPack = MergeServerRecvProtocol.tagLPStringData()
+    recvPack.Type = CommonDefine.gstCrossServerToServerPack
+    recvPack.DirType = dirType
+    recvPack.ServerList = str(serverList)
+    recvPack.ServerLen = len(recvPack.ServerList)
+    recvPack.Data = packBuffer
+    recvPack.DataLen = len(packBuffer)
+
+    SendPyPackToServersRoute(recvPack.GetBuffer(), recvPack.GetLength())
+
+
+

--
Gitblit v1.8.0