#!/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
|
|