From 5cbc408e220dbac176850b1b250e42bfac67e274 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 22 四月 2025 11:10:21 +0800
Subject: [PATCH] 10263 【英文】【BT】【越南】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(暂时屏蔽MirrorAIAtkDepthError警告邮件;)
---
ServerPython/CoreServerGroup/GameServer/Script/NetPackCommon.py | 38 ++++++++++++++++++++++++++++++++------
1 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/NetPackCommon.py b/ServerPython/CoreServerGroup/GameServer/Script/NetPackCommon.py
index dbde765..e354686 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/NetPackCommon.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/NetPackCommon.py
@@ -31,6 +31,8 @@
import ChMapToGamePyPack
import CrossRealmMsg
import PlayerControl
+import ChPlayer
+import ShareDefine
#-------------------------------------------------------------------------------
#---全局变量---
@@ -209,9 +211,7 @@
curPackHeadRegDict["CallFunc"](index, curPackData, tick)
except Exception:
- Log("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
- if GameWorld.GetGameWorld().GetDebugLevel():
- raise Exception("python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
+ GameWorld.RaiseException("python自定义封包解析失败\r\n%s" % traceback.format_exc())
return
@@ -243,6 +243,34 @@
SendFakePack(curPlayer, clientPack)
return
+def SendFakePackByCross(onlinePlayerIDDict, clientPack):
+ '''由跨服服务器直接给子服在线玩家发送封包,适用于接受的玩家封包数据一致的
+ @param onlinePlayerIDDict: 在线玩家GroupID字典 {playerID:groupID, ...}
+ 功能自行通过 onlineMgr = ChPlayer.GetOnlinePlayerMgr() 过滤
+ onlineMgr.GetOLPlayerServerGroupID(playerID) 获取ServerGroupID
+ '''
+ if not onlinePlayerIDDict:
+ return
+ innerPackData = clientPack.GetBuffer()
+ dataMsg = {"playerIDList":onlinePlayerIDDict.keys(), "innerPackData":innerPackData}
+ CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_SendFakePack, dataMsg, onlinePlayerIDDict.values())
+ return
+
+def CrossServerMsg_SendFakePack(msgData):
+ ## 子服收到由跨服直接发送给玩家的封包
+ playerIDList = msgData["playerIDList"]
+ innerPackData = msgData["innerPackData"]
+
+ playerManager = GameWorld.GetPlayerManager()
+ for playerID in playerIDList:
+ curPlayer = playerManager.FindPlayerByID(playerID)
+ if curPlayer == None:
+ continue
+ if PlayerControl.GetIsTJG(curPlayer):
+ continue
+ curPlayer.Sync_GeneralPack(len(innerPackData), innerPackData)
+
+ return
#-------------------------------------------------------------------------------
#---Py封包注册信息
PyPackTable = ReadPyPackTable("PyNetPack")
@@ -299,9 +327,7 @@
curPackHeadRegDict["CallFunc"](routeIndex, mapID, curPackData, tick)
#Log("RecvMapPyPack: CallFunc curPackHead = %s"%curPackHead)
except Exception:
- Log("RecvMapPyPack python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
- if GameWorld.GetGameWorld().GetDebugLevel():
- raise Exception("RecGamePyPack python自定义封包解析失败~~~~~\r\n%s" % traceback.format_exc())
+ GameWorld.RaiseException("RecvMapPyPack python自定义封包解析失败\r\n%s" % traceback.format_exc())
return
#-------------------------------------------------------------------------------
--
Gitblit v1.8.0