From efc705c4fb10577ff83e09273c90a6ead41164bd Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 30 五月 2025 12:08:45 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py |   56 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 42 insertions(+), 14 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
index daa622f..5ce5b67 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NetPackCommon.py
@@ -30,6 +30,7 @@
 import ChPyNetSendPack
 import traceback
 import ChGameToMapPyPack
+from PyMongoDB.DBCommon import CommonDefine
 #-------------------------------------------------------------------------------
 #---全局变量---
 
@@ -218,6 +219,8 @@
 #  @return 无返回值
 #  @remarks
 def SendFakePack(curPlayer, clientPack):
+    if not clientPack:
+        return
 #    Log("SendFakePack: clientPack = %s"%[clientPack.GetBuffer()])
     innerPackData = clientPack.GetBuffer()
     if len(innerPackData) < clientPack.GetLength():
@@ -225,6 +228,19 @@
     #curPlayer.SendFakePack(innerPackData, len(innerPackData))
     curPlayer.SendFakePack(clientPack.GetBuffer(), clientPack.GetLength())
     
+def SendFackPackOnline(clientPack, parseFunc=None, *args):
+    ## 发送给全服在线玩家
+    # @param parseFunc: 中间处理逻辑,可以做一些修改包数据的逻辑或者过滤某些玩家不发送,返回值为True时发送
+    # @param args: parseFunc方法参数(curPlayer, ...)
+    playerManager = GameWorld.GetPlayerManager()
+    for i in xrange(playerManager.OnlineCount()):
+        curPlayer = playerManager.OnlineAt(i)
+        if not GameWorld.IsNormalPlayer(curPlayer):
+            continue
+        if parseFunc and not parseFunc(curPlayer, *args):
+            continue
+        SendFakePack(curPlayer, clientPack)
+    return
 
 #-------------------------------------------------------------------------------
 #---Py封包注册信息
@@ -286,21 +302,33 @@
 ##发送Map到GameServer的沟通包
 #
 def SendPyPackToGameServer(sendPack):
-    if hasattr(sendPack, 'PlayerID'):
-        if sendPack.PlayerID >= 100000000:
-            return
-    routeIndex = GameWorld.GetGameWorld().GetLineNO()
-    #这里必须用GetRealMapID,GetMapID 实际取到的是DataMapID,在有分线的地图会问题
-    mapID = GameWorld.GetGameWorld().GetRealMapID()  
-    #先写入当前地图标识,方便GameServer回包时可以正确通知到对应地图
-    data = ''
-    data = CommFunc.WriteBYTE(data, routeIndex)         #1
-    data = CommFunc.WriteDWORD(data, mapID)             #4
-    data = CommFunc.WriteString(data, sendPack.GetLength(), sendPack.GetBuffer())
+    # if hasattr(sendPack, 'PlayerID'):
+    #     if sendPack.PlayerID >= 100000000:
+    #         return
+    # routeIndex = GameWorld.GetGameWorld().GetLineNO()
+    # #这里必须用GetRealMapID,GetMapID 实际取到的是DataMapID,在有分线的地图会问题
+    # mapID = GameWorld.GetGameWorld().GetRealMapID()  
+    # #先写入当前地图标识,方便GameServer回包时可以正确通知到对应地图
+    # data = ''
+    # data = CommFunc.WriteBYTE(data, routeIndex)         #1
+    # data = CommFunc.WriteDWORD(data, mapID)             #4
+    # data = CommFunc.WriteString(data, sendPack.GetLength(), sendPack.GetBuffer())
     
-    dataLen = 1 + 4 + sendPack.GetLength()
+    # dataLen = 1 + 4 + sendPack.GetLength()
     
-    GameWorld.GetGameWorld().SendGameServerGeneralPack(dataLen, data)
+    # GameWorld.GetGameWorld().SendGameServerGeneralPack(dataLen, data)
+    return
     
     
-    
+##向地图(c++)发送数据
+# 结构体要求第一个类型为枚举 TDataServerToBalanceServer,不需要封包头,用类型做判断
+def SendPyPackToMapServerSelf(data, datalen):
+    GameWorld.GetGameWorld().SendPyPackToMapServerSelf(datalen, data)
+    return
+
+
+
+# 向ServersRoute发送数据
+def SendPyPackToServersRoute(data, datalen):
+    GameWorld.GetGameWorld().SendPyPackToServersRoute(datalen, data)
+    return
\ No newline at end of file

--
Gitblit v1.8.0