#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package Player.RemoteQuery.GY_Query_FBLinePlayerCnt # # @todo:²éѯ¸±±¾¹¦ÄÜÏß·ÈËÊý # @author xdh # @date 2018-01-08 # @version 1.0 # # # ÏêϸÃèÊö: ²éѯ¸±±¾¹¦ÄÜÏß·ÈËÊý # #--------------------------------------------------------------------- """Version = 2018-01-08 17:00""" #µ¼Èë import GameLogic_ZhuXianBoss import GameLogic_HorsePetBoss import GameLogic_AllFamilyBoss import GameWorld import IPY_GameWorld import ChConfig #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- #--------------------------------------------------------------------- #Âß¼­ÊµÏÖ ## ÇëÇóÂß¼­ # @param query_Type ÇëÇóÀàÐÍ # @param query_ID ÇëÇóµÄÍæ¼ÒID # @param packCMDList ·¢°üÃüÁî [ ] # @param tick µ±Ç°Ê±¼ä # @return "True" or "False" or "" # @remarks º¯ÊýÏêϸ˵Ã÷. def DoLogic(query_Type, query_ID, packCMDList, tick): GameWorld.DebugLog("GY_Query_FBLinePlayerCnt DoLogic() query_Type=%s,query_ID=%s,packCMDList=%s,tick=%s" % \ (query_Type, query_ID, packCMDList, tick)) if not packCMDList or len(packCMDList) < 2: GameWorld.DebugLog(" DoLogic() return []") return [] tagMapID, queryFBLineIDList = packCMDList tagFBLineID = 0 if not queryFBLineIDList else queryFBLineIDList[0] # Ïß·id isAllLine = not queryFBLineIDList # ²éѯµÄNPCIDÁбí gameWorldManager = GameWorld.GetGameWorld() fbLinePlayerCntDict = {} if tagMapID == ChConfig.Def_FBMapID_SealDemon: for index in xrange(gameWorldManager.GetGameWorldCount()): gameWorld = IPY_GameWorld.IPY_GameWorld(index) playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index) fblineID = gameWorld.GetPropertyID() - 1 if fblineID < 0: continue if not isAllLine and tagFBLineID != fblineID: continue playerCnt = playerManager.GetPlayerCount() fbLinePlayerCntDict[fblineID] = [playerCnt] if not isAllLine: break elif tagMapID == ChConfig.Def_FBMapID_DemonKing: for index in xrange(gameWorldManager.GetGameWorldCount()): gameWorld = IPY_GameWorld.IPY_GameWorld(index) playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index) fblineID = gameWorld.GetPropertyID() - 1 if fblineID < 0: continue if queryFBLineIDList and fblineID not in queryFBLineIDList: continue playerCnt = playerManager.GetPlayerCount() fbLinePlayerCntDict[fblineID] = [playerCnt] if len(queryFBLineIDList) == len(fbLinePlayerCntDict): break elif tagMapID == ChConfig.Def_FBMapID_ZhuXianBoss: for index in xrange(gameWorldManager.GetGameWorldCount()): gameWorld = IPY_GameWorld.IPY_GameWorld(index) playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index) fblineID = gameWorld.GetPropertyID() - 1 if fblineID < 0: continue if not isAllLine and tagFBLineID != fblineID: continue playerCnt = playerManager.GetPlayerCount() ownerName = GameLogic_ZhuXianBoss.GetFirstOwnerName(fblineID) fbLinePlayerCntDict[fblineID] = [playerCnt, ownerName] if not isAllLine: break elif tagMapID == ChConfig.Def_FBMapID_HorsePetBoss: for index in xrange(gameWorldManager.GetGameWorldCount()): gameWorld = IPY_GameWorld.IPY_GameWorld(index) playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index) fblineID = gameWorld.GetPropertyID() - 1 if fblineID < 0: continue if not isAllLine and tagFBLineID != fblineID: continue playerCnt = playerManager.GetPlayerCount() hpPer = GameLogic_HorsePetBoss.GetBossRemainHPPer(index, fblineID, tick) fbLinePlayerCntDict[fblineID] = [playerCnt, str(hpPer)] if not isAllLine: break elif tagMapID == ChConfig.Def_FBMapID_AllFamilyBoss: for index in xrange(gameWorldManager.GetGameWorldCount()): gameWorld = IPY_GameWorld.IPY_GameWorld(index) playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index) fblineID = gameWorld.GetPropertyID() - 1 if fblineID < 0: continue if not isAllLine and tagFBLineID != fblineID: continue playerCnt = playerManager.GetPlayerCount() hpPer = GameLogic_AllFamilyBoss.GetBossRemainHPPer(index, tick) fbLinePlayerCntDict[fblineID] = [playerCnt, str(hpPer)] if not isAllLine: break else: return return [tagMapID, fbLinePlayerCntDict] #--------------------------------------------------------------------- #Ö´Ðнá¹û ## Ö´Ðнá¹û # @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò # @param callFunName ¹¦ÄÜÃû³Æ # @param funResult ²éѯµÄ½á¹û # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoResult(curPlayer, callFunName, funResult, tick): return