From 74118947469489a085fa5bf1c43b0ea4f46e2a3a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 19 二月 2025 14:48:50 +0800
Subject: [PATCH] 10385 【越南】【英语】【BT】【砍树】【GM】福地拉取物品触发任务事件;

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFuncTeam.py |   57 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFuncTeam.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFuncTeam.py
index 5022816..a224186 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFuncTeam.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFuncTeam.py
@@ -70,7 +70,7 @@
     def GetSyncDict(self):
         # Value 暂时只同步1~2
         syncDict = {"PlayerID":self.GetPlayerID(), "Value1":self.GetValue1(), "Value2":self.GetValue2()}
-        syncDict.update(PlayerViewCache.GetShotCahceDict(self.GetPlayerID(), False))
+        syncDict.update(PlayerViewCache.GetShotCacheDict(self.GetPlayerID(), "PlayerID", "FightPower", "ServerID", "OfflineValue", "Face", "FacePic"))
         return syncDict
     
 class PyFuncTeam():
@@ -127,7 +127,7 @@
         ApplyList = []
         if applyDetail:
             for applyID in ApplyIDList[::-1]:
-                applyPlayerDict = PlayerViewCache.GetShotCahceDict(applyID, False)
+                applyPlayerDict = PlayerViewCache.GetShotCacheDict(applyID, "PlayerID", "FightPower", "ServerID", "Face", "FacePic")
                 if not applyPlayerDict:
                     ApplyIDList.remove(applyID)
                 else:
@@ -485,6 +485,7 @@
             return 0
         teamIDDict = self.playerFuncTeamIDDict[playerID]
         return teamIDDict.get(funcMapID, 0)
+    def GetPlayerTeamIDDict(self, playerID): return self.playerFuncTeamIDDict.get(playerID, {})
     
     def IsTeamPlayer(self, playerID):
         if playerID in self.playerFuncTeamIDDict:
@@ -819,15 +820,17 @@
         memberList = []
         for memberInfo in teamInfo["MemberList"]:
             mem = ChPyNetSendPack.tagGCFuncTeamMem()
-            mem.ServerID = memberInfo["ServerID"]
+            mem.ServerID = memberInfo.get("ServerID", 0)
             mem.PlayerID = memberInfo["PlayerID"]
-            mem.Name = memberInfo["Name"]
+            mem.Name = memberInfo.get("Name", "")
             mem.NameLen = len(mem.Name)
-            mem.LV = memberInfo["LV"]
-            mem.Job = memberInfo["Job"]
-            mem.RealmLV = memberInfo["RealmLV"]
-            mem.FightPower = memberInfo["FightPower"] % ChConfig.Def_PerPointValue
-            mem.FightPowerEx = memberInfo["FightPower"] / ChConfig.Def_PerPointValue
+            mem.LV = memberInfo.get("LV", 0)
+            mem.Job = memberInfo.get("Job", 0)
+            mem.RealmLV = memberInfo.get("RealmLV", 0)
+            mem.Face = memberInfo.get("Face", 0)
+            mem.FacePic = memberInfo.get("FacePic", 0)
+            mem.FightPower = memberInfo.get("FightPower", 0) % ChConfig.Def_PerPointValue
+            mem.FightPowerEx = memberInfo.get("FightPower", 0) / ChConfig.Def_PerPointValue
             mem.Value1 = memberInfo["Value1"]
             mem.Value2 = memberInfo["Value2"]
             memberList.append(mem)
@@ -880,15 +883,18 @@
     memberList = []
     for memberInfo in memberInfoList:
         mem = ChPyNetSendPack.tagGCFuncTeamRefreshMem()
-        mem.ServerID = memberInfo["ServerID"]
+        mem.ServerID = memberInfo.get("ServerID", 0)
         mem.PlayerID = memberInfo["PlayerID"]
-        mem.Name = memberInfo["Name"]
+        mem.Name = memberInfo.get("Name", "")
         mem.NameLen = len(mem.Name)
-        mem.LV = memberInfo["LV"]
-        mem.Job = memberInfo["Job"]
-        mem.RealmLV = memberInfo["RealmLV"]
-        mem.FightPower = memberInfo["FightPower"] % ChConfig.Def_PerPointValue
-        mem.FightPowerEx = memberInfo["FightPower"] / ChConfig.Def_PerPointValue
+        mem.LV = memberInfo.get("LV", 0)
+        mem.Job = memberInfo.get("Job", 0)
+        mem.RealmLV = memberInfo.get("RealmLV", 0)
+        mem.Face = memberInfo.get("Face", 0)
+        mem.FacePic = memberInfo.get("FacePic", 0)
+        mem.FightPower = memberInfo.get("FightPower", 0) % ChConfig.Def_PerPointValue
+        mem.FightPowerEx = memberInfo.get("FightPower", 0) / ChConfig.Def_PerPointValue
+        mem.OfflineValue = memberInfo.get("OfflineValue", 0)
         mem.Value1 = memberInfo["Value1"]
         mem.Value2 = memberInfo["Value2"]
         memberList.append(mem)
@@ -903,6 +909,8 @@
         applyP.LV = applyInfo["LV"]
         applyP.Job = applyInfo["Job"]
         applyP.RealmLV = applyInfo["RealmLV"]
+        applyP.Face = applyInfo.get("Face", 0)
+        applyP.FacePic = applyInfo.get("FacePic", 0)
         applyP.FightPower = applyInfo["FightPower"] % ChConfig.Def_PerPointValue
         applyP.FightPowerEx = applyInfo["FightPower"] / ChConfig.Def_PerPointValue
         applyList.append(applyP)
@@ -1494,12 +1502,25 @@
         
     # 非列表查询,返回玩家相关队伍
     if "startIndex" not in msgData:
+        syncPlayerIDList = [playerID]
+        serverGroupList = [serverGroupID]
+        
         funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
+        # 申请的队伍
+        funcTeamList = funcTeamMgr.GetFuncTeamList(zoneID, funcMapID)
+        for funcTeam in funcTeamList:
+            if playerID not in funcTeam.GetApplyIDList():
+                continue
+            teamID = funcTeam.GetTeamID()
+            teamInfo = funcTeam.GetSyncDict(True)
+            sendMsg = {"infoType":"QueryPlayerFuncTeam", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID, 
+                       "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList}
+            CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)
+            
+        # 玩家所属队伍
         teamID = funcTeamMgr.GetPlayerTeamID(playerID, funcMapID)
         funcTeam = funcTeamMgr.GetFuncTeam(teamID)
         teamInfo = funcTeam.GetSyncDict(True) if funcTeam else {}
-        syncPlayerIDList = [playerID]
-        serverGroupList = [serverGroupID]
         sendMsg = {"infoType":"QueryPlayerFuncTeam", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID, 
                    "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList}
         CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)

--
Gitblit v1.8.0