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