From e4eccd8e4b2ee4758faf94eb88edbe5b5325fa1d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 31 十月 2025 11:59:59 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(词条技能1011 1012 1013:增加属性ID19-怒气恢复加成;增加技能伤害计算类型7-按最后受到攻击的技能伤害;5001效果支持永久buff不扣除回合数;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py | 76 ++++++++++++++++++++++++++++++++++++-
1 files changed, 73 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 a9b3f02..d01e484 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
@@ -32,6 +32,8 @@
import ChGameToMapPyPack
from PyMongoDB.DBCommon import CommonDefine
import ObjPool
+import ChServerToServerPyPack
+from PyMongoDB.Protocol import MergeServerRecvProtocol
#-------------------------------------------------------------------------------
#---全局变量---
@@ -251,8 +253,6 @@
-
-
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
#GameServer Py封包注册信息
@@ -334,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