| | |
| | | import GameWorld
|
| | | import FBCommon
|
| | | import ChConfig
|
| | | import IpyGameDataPY
|
| | | import random
|
| | | #---------------------------------------------------------------------
|
| | | #全局变量
|
| | | #---------------------------------------------------------------------
|
| | |
| | | maxPlayerCount = FBLogic.GetFBLineMaxPlayerCount(tagMapID, tagMapLineID)
|
| | |
|
| | | GameWorld.Log(" DoLogic() tagMapID=%s,tagMapLineID=%s,maxPlayerCount=%s" % (tagMapID, tagMapLineID,maxPlayerCount))
|
| | | if not maxPlayerCount:
|
| | | pass
|
| | | firstEmptyGameWorld = None
|
| | | sameLineGameWorldList = []
|
| | | sameLineGameWorldList = [] #人数未满的线路列表
|
| | | fullLineGameWorldList = [] #人数已满的线路列表
|
| | | for index in xrange(gameWorldManager.GetGameWorldCount()):
|
| | | gameWorld = IPY_GameWorld.IPY_GameWorld(index)
|
| | | playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index)
|
| | |
| | | firstEmptyGameWorld = gameWorld
|
| | | # 如果不是同一线路属性的,则跳过
|
| | | # 如果当前人数超过额定人数,则跳过
|
| | | if propertyID == tagMapPropertyID and curPlayerCnt < maxPlayerCount:
|
| | | sameLineGameWorldList.append([gameWorld, curPlayerCnt])
|
| | | if propertyID == tagMapPropertyID:
|
| | | if curPlayerCnt < maxPlayerCount:
|
| | | sameLineGameWorldList.append([gameWorld, curPlayerCnt])
|
| | | else:
|
| | | fullLineGameWorldList.append([gameWorld, curPlayerCnt])
|
| | | findGameWorld = None
|
| | | if sameLineGameWorldList:
|
| | | sameLineGameWorldList.sort(key=lambda asd:asd[1])
|
| | | findGameWorld = sameLineGameWorldList[0][0]
|
| | | #若是进入过副本则随机一个,否则选人数最少的一个
|
| | | enterCnt = packCMDList[2]
|
| | | if enterCnt:
|
| | | #GameWorld.DebugLog('DoLogic() sameLineGameWorldList=%s'%len(sameLineGameWorldList))
|
| | | findGameWorld = random.choice(sameLineGameWorldList)[0]
|
| | | else:
|
| | | sameLineGameWorldList.sort(key=lambda asd:asd[1])
|
| | | findGameWorld = sameLineGameWorldList[0][0]
|
| | | |
| | | elif firstEmptyGameWorld:
|
| | | findGameWorld = firstEmptyGameWorld
|
| | | elif fullLineGameWorldList:
|
| | | #线路都满人了则取个人数相对较少的
|
| | | fullLineGameWorldList.sort(key=lambda asd:asd[1])
|
| | | findGameWorld = fullLineGameWorldList[0][0]
|
| | | |
| | | if findGameWorld:
|
| | | if findGameWorld.GetPropertyID() == 0:
|
| | | findGameWorld.SetFBFirstOpen(1) # 开启副本
|
| | |
| | | # GameWorld.DebugLog(" 创建新战盟家园: tagFamilyID=%s,tagFamilyHomeLV=%s,resultLineID=%s"
|
| | | # % (tagFamilyID, tagFamilyHomeLV, resultLineID))
|
| | | #===================================================================================================
|
| | | elif tagMapID in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss, ChConfig.Def_FBMapID_AllFamilyBoss]:
|
| | | 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
|
| | |
|
| | |
| | | # 如果不是同一线路属性的,则跳过
|
| | | if propertyID == tagMapPropertyID:
|
| | | if tagMapID == ChConfig.Def_FBMapID_SealDemon:
|
| | | if GameLogic_SealDemon.GetBossRemainHPPer(tagMapLineID, tick) < 15:
|
| | | 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(tagMapLineID, tick) < 15:
|
| | | if GameLogic_ZhuXianBoss.GetBossRemainHPPer(index, tagMapLineID, tick) < IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg', 4):
|
| | | findGameWord = None
|
| | | findPlayerManager = None
|
| | | notifyMark = "DemonJar_Text4"
|