| | |
| | | #导入
|
| | | import FBLogic
|
| | | import GameLogic_SealDemon
|
| | | import GameLogic_ZhuXianBoss
|
| | | import IPY_GameWorld
|
| | | import PlayerControl
|
| | | import GameWorld
|
| | |
| | | tagMapID = packCMDList[0] # 目标地图id
|
| | | tagMapLineID = packCMDList[1] # 目标地图线路属性,从0开始
|
| | | resultLineID = -1 # 结果lineID
|
| | | |
| | | notifyMark = 'GeRen_chenxin_500807' #不能进的提示
|
| | | if tagMapID in ChConfig.Def_MapID_LineIDToPropertyID:
|
| | | GameWorld.Log(" DoLogic() tagMapID in ChConfig.Def_MapID_LineIDToPropertyID")
|
| | | tagMapPropertyID = tagMapLineID + 1 # 因为PropertyID默认是0,所以使用时从1开始
|
| | |
| | | resultLineID = -1 # 结果lineID
|
| | |
|
| | | gameWorldManager = GameWorld.GetGameWorld()
|
| | | maxPlayerCount = FBLogic.GetFBLineMaxPlayerCount(tagMapID)
|
| | | maxPlayerCount = FBLogic.GetFBLineMaxPlayerCount(tagMapID, tagMapLineID)
|
| | |
|
| | | GameWorld.Log(" DoLogic() tagMapID=%s,maxPlayerCount=%s" % (tagMapID, maxPlayerCount))
|
| | | for index in range(gameWorldManager.GetGameWorldCount()):
|
| | | GameWorld.Log(" DoLogic() tagMapID=%s,tagMapLineID=%s,maxPlayerCount=%s" % (tagMapID, tagMapLineID,maxPlayerCount))
|
| | | firstEmptyGameWorld = None
|
| | | sameLineGameWorldList = []
|
| | | for index in xrange(gameWorldManager.GetGameWorldCount()):
|
| | | gameWorld = IPY_GameWorld.IPY_GameWorld(index)
|
| | | playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index)
|
| | | propertyID = gameWorld.GetPropertyID()
|
| | | GameWorld.Log(" DoLogic() check gameworld index=%s,propertyID=%s,playerCount=%s" \
|
| | | % (index, propertyID, playerManager.GetPlayerCount()))
|
| | | curPlayerCnt = playerManager.GetPlayerCount()
|
| | | # GameWorld.Log(" DoLogic() check gameworld index=%s,propertyID=%s,playerCount=%s" \
|
| | | # % (index, propertyID, curPlayerCnt))
|
| | | if propertyID == 0 and not firstEmptyGameWorld:
|
| | | firstEmptyGameWorld = gameWorld
|
| | | # 如果不是同一线路属性的,则跳过
|
| | | # 如果当前人数超过额定人数,则跳过
|
| | | if propertyID == 0 or (propertyID == tagMapPropertyID \
|
| | | and playerManager.GetPlayerCount() < maxPlayerCount):
|
| | | gameWorld.SetPropertyID(tagMapPropertyID)
|
| | | if propertyID == 0:
|
| | | gameWorld.SetFBFirstOpen(1) # 开启副本
|
| | | resultLineID = gameWorld.GetLineID()
|
| | | GameWorld.Log(" DoLogic() check ok!resultLineID=%s" % (resultLineID))
|
| | | break
|
| | | if propertyID == tagMapPropertyID and curPlayerCnt < maxPlayerCount:
|
| | | sameLineGameWorldList.append([gameWorld, curPlayerCnt])
|
| | | findGameWorld = None
|
| | | if sameLineGameWorldList:
|
| | | sameLineGameWorldList.sort(key=lambda asd:asd[1])
|
| | | findGameWorld = sameLineGameWorldList[0][0]
|
| | | elif firstEmptyGameWorld:
|
| | | findGameWorld = firstEmptyGameWorld
|
| | | if findGameWorld:
|
| | | if findGameWorld.GetPropertyID() == 0:
|
| | | findGameWorld.SetFBFirstOpen(1) # 开启副本
|
| | | findGameWorld.SetPropertyID(tagMapPropertyID)
|
| | | resultLineID = findGameWorld.GetLineID()
|
| | | GameWorld.Log(" DoLogic() check ok!resultLineID=%s" % (resultLineID))
|
| | | |
| | |
|
| | | #===================================================================================================
|
| | | # # 战盟家园
|
| | |
| | | # GameWorld.DebugLog(" 创建新战盟家园: tagFamilyID=%s,tagFamilyHomeLV=%s,resultLineID=%s"
|
| | | # % (tagFamilyID, tagFamilyHomeLV, resultLineID))
|
| | | #===================================================================================================
|
| | | elif tagMapID == ChConfig.Def_FBMapID_SealDemon:
|
| | | elif tagMapID in [ChConfig.Def_FBMapID_HorsePetBoss, ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss, ChConfig.Def_FBMapID_AllFamilyBoss, ChConfig.Def_FBMapID_DemonKing]:
|
| | | tagMapPropertyID = tagMapLineID + 1 # 因为PropertyID默认是0,所以使用时从1开始
|
| | | resultLineID = -1 # 结果lineID
|
| | |
|
| | | gameWorldManager = GameWorld.GetGameWorld()
|
| | | maxPlayerCount = FBLogic.GetFBLineMaxPlayerCount(tagMapID)
|
| | | |
| | | GameWorld.Log(" DoLogic() tagMapID=%s,maxPlayerCount=%s" % (tagMapID, maxPlayerCount))
|
| | | GameWorld.Log(" DoLogic() tagMapID=%s,tagMapLineID=%s" % (tagMapID, tagMapLineID))
|
| | | findGameWord = None
|
| | | findPlayerManager = None
|
| | | for index in range(gameWorldManager.GetGameWorldCount()):
|
| | | gameWorld = IPY_GameWorld.IPY_GameWorld(index)
|
| | | playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index)
|
| | |
| | | # % (index, propertyID, playerManager.GetPlayerCount()))
|
| | | # 如果不是同一线路属性的,则跳过
|
| | | if propertyID == tagMapPropertyID:
|
| | | if GameLogic_SealDemon.GetBossRemainHPPer(tagMapLineID, tick) < 15:
|
| | | findGameWord = None
|
| | | break
|
| | | if tagMapID == ChConfig.Def_FBMapID_SealDemon:
|
| | | if GameLogic_SealDemon.GetBossRemainHPPer(index, tagMapLineID, tick) < 15:
|
| | | findGameWord = None
|
| | | findPlayerManager = None
|
| | | notifyMark = "DemonJar_Text4"
|
| | | break
|
| | | elif tagMapID == ChConfig.Def_FBMapID_ZhuXianBoss:
|
| | | if GameLogic_ZhuXianBoss.GetBossRemainHPPer(index, tagMapLineID, tick) < 15:
|
| | | findGameWord = None
|
| | | findPlayerManager = None
|
| | | notifyMark = "DemonJar_Text4"
|
| | | break
|
| | | |
| | | findGameWord = gameWorld
|
| | | findPlayerManager = playerManager
|
| | | break
|
| | | if not findGameWord and propertyID == 0:
|
| | | findGameWord = gameWorld
|
| | | findPlayerManager = playerManager
|
| | | |
| | | if findPlayerManager and tagMapID == ChConfig.Def_FBMapID_ZhuXianBoss:
|
| | | if packCMDList[3] !=-1 and not GameLogic_ZhuXianBoss.GetHasSameFamilyMerber(packCMDList[3], findPlayerManager):
|
| | | notifyMark = "TryEnterJadeDynastyBossError_6"
|
| | | findGameWord = None
|
| | | GameWorld.DebugLog(" 归属次数为0且没有同盟玩家在副本里!")
|
| | | |
| | | if findGameWord:
|
| | | if findGameWord.GetPropertyID() == 0:
|
| | | findGameWord.SetFBFirstOpen(1) # 开启副本
|
| | |
| | | #resultLineID = tagMapLineID
|
| | | resultLineID = 0
|
| | |
|
| | | return ['%s' % packCMDList, '%d' % resultLineID]
|
| | | return ['%s' % packCMDList, '%d' % resultLineID, notifyMark]
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | |
|
| | |
| | |
|
| | | #还原格式 '[]' -> []
|
| | | funResult = eval(funResult)
|
| | | if not funResult or len(funResult) < 2:
|
| | | if not funResult or len(funResult) < 3:
|
| | | GameWorld.Log("GY_Query_EnterFB DoResult() return []")
|
| | | return
|
| | |
|
| | | tagMapInfo = eval(funResult[0])
|
| | | backFBID = int(funResult[1]) # 返回的切图线路id(0~N)
|
| | | |
| | | notifyMark = funResult[2]
|
| | | mapID = tagMapInfo[0] # 请求的切图id
|
| | | funcLineID = tagMapInfo[1] # 请求的场次线路id(0~6)
|
| | | GameWorld.Log("GY_Query_EnterFB DoResult() mapID=%s,funcLineID=%s,backFBID=%s" % (mapID, funcLineID, backFBID), curPlayer.GetPlayerID())
|
| | |
|
| | | if backFBID == -1: # 未找到可进入的分线,则返回,提示人数已满
|
| | | if mapID == ChConfig.Def_FBMapID_SealDemon:
|
| | | PlayerControl.NotifyCode(curPlayer, "DemonJar_Text4")
|
| | | else:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_500807")
|
| | | PlayerControl.NotifyCode(curPlayer, notifyMark)
|
| | | return
|
| | |
|
| | | if curPlayer.GetMapID() == mapID:
|