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

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py |   29 +++++++++++++++++++++++------
 1 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py
index 3ff9a9a..db4f559 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFB.py
@@ -34,6 +34,7 @@
 import CrossBattlefield
 import CrossRealmPlayer
 import CrossChampionship
+import PlayerPackData
 import DataRecordPack
 import CrossRealmMsg
 import PyDataManager
@@ -97,10 +98,14 @@
             
         return totalPlayerCount
     
-    def IsMustCopyMapPlayer(self, playerID):
+    def IsMustCopyMapPlayer(self, playerID, checkTeam=True):
         ## 是否必定在此分线的玩家, 在请求队列里 或 曾经进入到该分线的,都强制认为属于该分线的玩家
         if playerID in self.waitPlayerDict or playerID in self.enterPlayerIDList:
             return True
+        if self.openState != IPY_PlayerDefine.fbosOpen:
+            return False
+        if not checkTeam:
+            return False
         # 队友强制在一起
         funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
         teamID = funcTeamMgr.GetPlayerTeamID(playerID, self.funcMapID)
@@ -167,7 +172,7 @@
     playerLV = msgData["LV"]
     
     if mapID == ChConfig.Def_FBMapID_CrossChampionship:
-        CrossChampionship.OnRequestChampionshipVSRoom(playerID, serverGroupID)
+        #CrossChampionship.OnRequestChampionshipVSRoom(playerID, serverGroupID)
         return
     
     zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID)
@@ -273,7 +278,7 @@
         
     realMapID, copyMapID, openState = tagCopyMapObj.realMapID, tagCopyMapObj.copyMapID, tagCopyMapObj.openState
     
-    if openState == IPY_PlayerDefine.fbosWaitForClose:
+    if openState >= IPY_PlayerDefine.fbosWaitForClose:
         PlayerControl.NotifyCodeCross(serverGroupID, playerID, "CrossFBClose")
         GameWorld.ErrLog("分流的副本线路关闭中! mapID=%s,funcLineID=%s,zoneID=%s,realMapID=%s,copyMapID=%s,openState=%s" 
                          % (mapID, funcLineID, zoneID, realMapID, copyMapID, openState), playerID)
@@ -360,7 +365,7 @@
         
         copyMapObj = PyGameData.g_crossDynamicLineCopyMapInfo[key]
         openState = copyMapObj.openState
-        if openState == IPY_PlayerDefine.fbosWaitForClose:
+        if openState >= IPY_PlayerDefine.fbosWaitForClose:
             # 没有限制分流人数的情况,代表都在同一场,这种情况下当副本已经在关闭的状态下,则代表已经结束了,不可再进入
             if not shuntPlayerMax:
                 PlayerControl.NotifyCodeCross(serverGroupID, playerID, "CrossFBClose")
@@ -546,7 +551,11 @@
         OnCrossDynamicLineClose(realMapID, copyMapID)
     elif state == IPY_PlayerDefine.fbosOpen:
         OnCrossDynamicLineOpen(mapID, realMapID, copyMapID)
-        
+    else:
+        key = (realMapID, copyMapID)
+        if key in PyGameData.g_crossDynamicLineCopyMapInfo:
+            copyMapObj = PyGameData.g_crossDynamicLineCopyMapInfo[key]
+            copyMapObj.openState = state
     return
 
 def OnCrossDynamicLineOpen(mapID, realMapID, copyMapID):
@@ -746,7 +755,7 @@
 #  @return None
 def EnterFBLine(curPlayer, queryCallName, sendCMD, tick):
     playerID = curPlayer.GetPlayerID()
-    GameWorld.Log("EnterFBLine()...queryCallName=%s,sendCMD=%s" % (queryCallName, sendCMD), curPlayer.GetPlayerID())
+    GameWorld.Log("EnterFBLine()...queryCallName=%s,sendCMD=%s" % (queryCallName, sendCMD), playerID)
     playerManager = GameWorld.GetPlayerManager()
     try:
         mapInfo = eval(sendCMD)
@@ -761,6 +770,7 @@
     #if mapInfo and len(mapInfo) == 2:
     tagMapID = mapInfo[0]
     tagLineID = mapInfo[1]
+    extendValue1 = mapInfo[2] if len(mapInfo) > 2 else None
     
     fbLineIpyData = GetFBLineIpyData(tagMapID, tagLineID)
     sceneMapID = tagMapID if not fbLineIpyData else fbLineIpyData.GetMapID()
@@ -769,6 +779,13 @@
         GameWorld.ErrLog("目标副本地图不存在!tagMapID=%s,sceneMapID=%s" % (tagMapID, sceneMapID), curPlayer.GetPlayerID())
         return
     
+    if isinstance(extendValue1, dict):
+        if extendValue1.get("msgType", "") == "MirrorBattle":
+            PlayerPackData.OnMGReuestPlayerPackData(extendValue1)
+            playerManager.MapServer_QueryPlayer(curPlayer.GetPlayerID(), ChConfig.queryType_EnterFB, 0, sceneMapID, 
+                                                queryCallName, sendCMD, len(sendCMD), curPlayer.GetRouteServerIndex())
+        return
+    
     # 组队副本, 有队伍的情况才验证其他队员可否进入,否则代表单人进入
     if gameMap.GetMapFBType() == ChConfig.fbtTeam:
         if tagMapID == ChConfig.Def_FBMapID_Love:

--
Gitblit v1.8.0