From 1dda9314aaec111515edcc3611070c4974aaf6bf Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 01 三月 2025 01:28:27 +0800
Subject: [PATCH] 5562 【英文】【越南】【BT】【GM】【砍树】修复删除打包数据后可能导致的数据错乱bug;

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py |   41 +++++++++++++++++++++++++++--------------
 1 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index 1c6f7dc..ac8ba2d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -57,7 +57,6 @@
 import GameWorldFamilyWar
 import PlayerFBHelpBattle
 import GameWorldSkyTower
-import GMT_CTG
 import PyGameData
 import GMShell
 import IPY_PlayerDefine
@@ -79,6 +78,7 @@
 import PlayerFuncTeam
 import PyDataManager
 import GameWorldMineArea
+import PlayerPackData
 import PlayerRecData
 import GameWorship
 import GameXiangong
@@ -179,8 +179,6 @@
     ''' 玩家登录需要处理的内容,本服及跨服服务器分开
     '''
     if GameWorld.IsCrossServer():
-        #跨服PK
-        CrossRealmPK.OnPlayerLoginCrossServer(curPlayer)
         #协助
         PlayerAssist.OnPlayerLoginCrossServer(curPlayer)
         return
@@ -259,7 +257,6 @@
         GameWorldSkyTower.OnPlayerLogin(curPlayer)
         #福地
         GameWorldMineArea.OnPlayerLogin(curPlayer)
-        GMT_CTG.OnPlayerLogin(curPlayer)
         
     else:
         pass
@@ -298,7 +295,7 @@
         CrossYaomoBoss.OnPlayerLogin(curPlayer)
         #玩家记录
         PlayerRecData.OnPlayerLogin(curPlayer)
-        
+        PlayerPackData.OnPlayerLogin(curPlayer)
         #在线状态变更,放最后
         __OnPlayerOnlineStateChange(curPlayer, True)
         
@@ -642,9 +639,6 @@
         PlayerFB.OnPlayerDisconnectCrossServer(curPlayer)
         return
     
-    #跨服匹配PK
-    CrossRealmPK.OnLeaveServer(curPlayer)
-    
     #组队玩家离线
     PlayerTeam.DoPlayerLogOffTeamLogic(curPlayer, tick)
     #家族玩家离线
@@ -686,9 +680,9 @@
     #offlineValue = olMgr.GetOfflineValue(playerID, PlayerViewCache.FindViewCache(playerID))
     #SyncRelatedPlayerOnlineState(playerID, offlineValue, relatedPlayerIDList)
     
-    if not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_CrossRealmPK) \
-        and not PlayerControl.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_CrossBattlefield):
-        GameWorld.DebugLog("跨服相关功能未开启,不同步在线状态到跨服服务器! LV=%s" % curPlayer.GetLV(), curPlayer.GetPlayerID())
+    syncLV = IpyGameDataPY.GetFuncCfg("CrossSyncSet", 1)
+    if curPlayer.GetLV() < syncLV:
+        #GameWorld.DebugLog("跨服相关功能未开启,不同步在线状态到跨服服务器! LV=%s < %s" % (curPlayer.GetLV(), syncLV), curPlayer.GetPlayerID())
         return
     
     cacheBase = PlayerViewCache.GetSyncCrossCacheBase(curPlayer)
@@ -704,11 +698,18 @@
     cacheBase = msgData["cacheBase"]
     
     isLogout = not isOnline
+    olMgr = GetOnlinePlayerMgr()
+    olMgr.SetOnlineState(playerID, isOnline, cacheBase.get("ServerGroupID", 0))
+    
     PlayerViewCache.UpdCrossCacheBase(playerID, cacheBase, isLogout)
     serverID = GameWorld.GetAccIDServerID(cacheBase["AccID"])
     
     # 上线
     if isOnline:
+        # 需要管理跨服在线状态时,默认需要同步缓存信息、打包数据信息
+        syncStateInfo = {"playerID":playerID, "ViewCacheCross":1, "PackDataCross":1}
+        CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_PlayerPackDataState, syncStateInfo, [serverGroupID])
+        
         GameXiangong.OnPlayerLogin_CrossLogic(serverGroupID, serverID, playerID)
         
     # 下线
@@ -835,6 +836,7 @@
     packValue = playerStatePack.GetValue()
     packValueEx = playerStatePack.GetValueEx()
     packType = playerStatePack.GetType()
+    #packValueTotal = packValue + packValueEx * ChConfig.Def_PerPointValue
     
     #---特殊逻辑处理---
     if packType == ShareDefine.CDBPlayerRefresh_ForbidenTalk:
@@ -844,7 +846,11 @@
     if packType == ShareDefine.CDBPlayerRefresh_ExAttr17:
         PlayerControl.SetPlayerAccState(curPlayer, packValue)
         return
-
+    
+    if packType == ShareDefine.CDBPlayerRefresh_ExAttr19:
+        PlayerControl.SetLeaveFamilyTimeEx(curPlayer, packValue)
+        return
+    
     if packType == IPY_GameServer.CDBPlayerRefresh_State:
         # 脱机在线
         PlayerControl.SetIsTJG(curPlayer, packValue)
@@ -880,7 +886,6 @@
         
     elif packType == IPY_GameServer.CDBPlayerRefresh_LV:
         curPlayer.SetLV(packValue)
-        PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
         #玩家等级记录
         playerID = curPlayer.GetID()
         if playerID in PyGameData.g_todayPlayerLVDict:
@@ -930,10 +935,18 @@
     
     elif packType == IPY_GameServer.CDBPlayerRefresh_OfficialRank:
         curPlayer.SetOfficialRank(packValue)
-        PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
         #更新排行榜的境界
         PlayerBillboard.UpdateBillboardRealm(curPlayer)
+    elif packType == IPY_GameServer.CDBPlayerRefresh_Face:
+        curPlayer.SetFace(packValue)
+        PlayerBillboard.UpdateBillboardFace(curPlayer)
+    elif packType == IPY_GameServer.CDBPlayerRefresh_HairColor:
+        #c++头像外框 用头发颜色通知  - 遗漏问题
+        curPlayer.SetFacePic(packValue)
+        PlayerBillboard.UpdateBillboardFacePic(curPlayer)
         
+    #社交信息
+    PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
     #组队成员刷新
     PlayerTeam.PlayerTeamMemberRefresh(curPlayer, packType, packValue, tick)
     #家族刷新

--
Gitblit v1.8.0