| | |
| | |
|
| | | 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)
|
| | |
| | |
|
| | | 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)
|
| | |
| | |
|
| | | 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")
|
| | |
| | | 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):
|