From f1c2ac9588321aad9e075c1440b52eb155b8ba18 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 29 十一月 2024 11:37:24 +0800
Subject: [PATCH] 10263 【越南】【英文】后端支持NPC仿真实玩家战斗和快速战斗

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
index 6a22007..f1e19db 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
@@ -47,6 +47,8 @@
     ##玩家下线同步
     UpdateGameServerPlayerCache(curPlayer, tick, True)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipViewCacheState, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PackDataSyncState, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PackDataSyncFightPower, 0)
     return
 
 def ProcessCache(curPlayer, tick):
@@ -60,10 +62,31 @@
     UpdateGameServerPlayerCache(curPlayer, tick, False)
     return
 
+def GetSyncPlayerPackData(curPlayer, force=False):
+    playerID = curPlayer.GetPlayerID()
+    fightPower = curPlayer.GetFightPower()
+    
+    if not force:
+        syncState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PackDataSyncState)
+        if not syncState:
+            GameWorld.DebugLog("不需要同步打包数据", playerID)
+            return ""
+        # 值判断求余部分即可
+        syncFightPower = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PackDataSyncFightPower)
+        if syncFightPower == fightPower:
+            GameWorld.DebugLog("战力不变,不需要同步打包数据! syncFightPower=%s" % syncFightPower, playerID)
+            return ""
+        
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PackDataSyncFightPower, fightPower)
+    packData = curPlayer.GetPackData()
+    #GameWorld.DebugLog("packData=%s %s %s" % (type(packData), len(packData), packData), playerID)
+    return packData
+
+
 ##更新玩家当前详细信息到GameServer
 #  @param curPlayer, tick
 #  @return None
-def UpdateGameServerPlayerCache(curPlayer, tick, IsLogouting=False):
+def UpdateGameServerPlayerCache(curPlayer, tick, IsLogouting=False, forcePackData=False, packMsg=None):
     if PlayerTJG.GetIsTJG(curPlayer):
         # 脱机不处理
         return
@@ -85,6 +108,12 @@
     for classLV, itemData in itemDataDict.items():
         setattr(sendPack, "ItemData%s" % classLV, itemData)
         setattr(sendPack, "ItemDataSize%s" % classLV, len(itemData))
+    # 打包数据相关
+    sendPack.PackDataSyncState = 11 if forcePackData else curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PackDataSyncState)
+    sendPack.PackData = GetSyncPlayerPackData(curPlayer, forcePackData)
+    sendPack.PackDataLen = len(sendPack.PackData)
+    sendPack.PackMsg = str(packMsg) if packMsg else "{}"
+    sendPack.PackMsgLen = len(sendPack.PackMsg)
     #GameWorld.DebugLog("同步缓存: %s" % sendPack.OutputString())
     NetPackCommon.SendPyPackToGameServer(sendPack)
     return

--
Gitblit v1.8.0