#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
  
 | 
##@package SummonAllPlayer  
 | 
# ÕÙ¼¯Íæ¼Ò  
 | 
#  
 | 
# @author mark  
 | 
# @date 2010-3-31  
 | 
# @version 1.1  
 | 
#  
 | 
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ  
 | 
# @change: "2012-05-16 14:30" jiang C++½Ó¿ÚÐÞ¸ÄMapServer_QueryPlayerResultºÍMapServer_QueryPlayerÐÞ¸Ä  
 | 
#------------------------------------------------------------------------------   
 | 
"""Version = 2012-05-16 14:30"""  
 | 
#------------------------------------------------------------------------------   
 | 
  
 | 
#µ¼Èë  
 | 
import GameWorld  
 | 
#---------------------------------------------------------------------  
 | 
#È«¾Ö±äÁ¿  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
#Â߼ʵÏÖ  
 | 
#ÎÞ²ÎÊý , ËùÓÐÍæ¼Ò´«µ½ÏÌÑô³Ç²Ö¿â  
 | 
#²ÎÊýÁÐ±í ²éÕÒ·½Ê½(1 : ¹ú¼Ò 2 : ¼Ò×å 3:¶ÓÎé) , Öµ( 0Ϊ×Ô¼ºÊôÐÔ ) , µØÍ¼ID , µØÍ¼×ø±êX , µØÍ¼×ø±êY  
 | 
## Ö´ÐÐÂß¼  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param cmdList (1 : ¹ú¼Ò 2 : ¼Ò×å 3:¶ÓÎé) , Öµ( 0Ϊ×Ô¼ºÊôÐÔ ) , µØÍ¼ID , µØÍ¼×ø±êX , µØÍ¼×ø±êY  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec( curPlayer , cmdList ):  
 | 
    GameWorld.DebugAnswer(curPlayer,  'ÎÞ²ÎÊý , ËùÓÐÍæ¼Ò´«µ½ÏÌÑô³Ç²Ö¿â' )  
 | 
    GameWorld.DebugAnswer(curPlayer,  '²ÎÊýÁÐ±í ²éÕÒ·½Ê½(1 : ¹ú¼Ò 2 : ¼Ò×å 3:¶ÓÎé) , Öµ( 0Ϊ×Ô¼ºÊôÐÔ ) , µØÍ¼ID , µØÍ¼×ø±êX , µØÍ¼×ø±êY' )  
 | 
      
 | 
    if len( cmdList ) not in [ 0 , 5 ]:  
 | 
        GameWorld.DebugAnswer(curPlayer,  'ʹÓô«ËÍÃüÁî , ²ÎÊý´íÎó = %s'%( cmdList ) )  
 | 
        return  
 | 
      
 | 
    #ĬÈϵØÍ¼ , ×ø±ê  
 | 
    mapID = 6  
 | 
    posX = 150  
 | 
    posY = 150  
 | 
    queryPlayerList = []  
 | 
      
 | 
    if not len( cmdList ):  
 | 
        queryPlayerList = __GetDefaultPlayerList( curPlayer , 0 , checkTeam = False , checkFamily = False , checkCountry = False )  
 | 
          
 | 
    elif cmdList[0] == 1:  
 | 
        queryPlayerList = __GetDefaultPlayerList( curPlayer , cmdList[1] , checkTeam = False , checkFamily = False , checkCountry = True )  
 | 
      
 | 
    elif cmdList[0] == 2:  
 | 
        queryPlayerList = __GetDefaultPlayerList( curPlayer , cmdList[1] , checkTeam = False , checkFamily = True , checkCountry = False )  
 | 
      
 | 
    elif cmdList[0] == 3:  
 | 
        queryPlayerList = __GetDefaultPlayerList( curPlayer , cmdList[1] , checkTeam = True , checkFamily = False , checkCountry = False )  
 | 
      
 | 
    else:  
 | 
        GameWorld.DebugAnswer(curPlayer,  'ʹÓô«ËÍÃüÁî²éÕÒ·½Ê½´íÎó = %s'%( cmdList ) )  
 | 
        return  
 | 
      
 | 
    if not queryPlayerList:  
 | 
        GameWorld.DebugAnswer(curPlayer,  'ʹÓô«ËÍÃüÁî´íÎó , Î´ÕÒµ½·ûºÏÌõ¼þµÄÍæ¼Ò = %s'%( cmdList ) )  
 | 
        return  
 | 
      
 | 
    if len( cmdList ):  
 | 
        mapID = cmdList[2]  
 | 
        posX = cmdList[3]  
 | 
        posY = cmdList[4]  
 | 
          
 | 
    if not mapID or not posX or not posY:  
 | 
        GameWorld.DebugAnswer(curPlayer,  'ʹÓô«ËÍÃüÁî´íÎó , µØÍ¼×ø±ê´íÎó = %s , %s , %s'%( mapID , posX , posY  ) )  
 | 
        return  
 | 
          
 | 
    #·¢ËÍÇëÇóµ½µØÍ¼·þÎñÆ÷  
 | 
    playerManager = GameWorld.GetPlayerManager()  
 | 
      
 | 
    for player in queryPlayerList:  
 | 
        tagMapID = GameWorld.GetQueryPlayerMapID( player )  
 | 
        #·¢ËÍÁбí [ µØÍ¼ID , posX , posY ]   
 | 
        sendMsg = '%s'%([ mapID , posX , posY ])  
 | 
        playerManager.MapServer_QueryPlayer( 0, 0, player.GetID(), tagMapID, 'SummonAllPlayer', sendMsg, len(sendMsg))  
 | 
          
 | 
    return  
 | 
  
 | 
## »ñȡĬÈÏÍæ¼ÒÁÐ±í  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param value Öµ 0Ϊ×Ô¼ºÊôÐÔ  
 | 
#  @param checkTeam ¶ÓÎéÏÞ¶¨  
 | 
#  @param checkFamily ¼Ò×åÏÞ¶¨  
 | 
#  @param checkCountry ¹ú¼ÒÏÞ¶¨  
 | 
#  @return addList Íæ¼ÒÁÐ±í  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __GetDefaultPlayerList( curPlayer , value , checkTeam = False , checkFamily = False , checkCountry = False ):  
 | 
    playerManager = GameWorld.GetPlayerManager()  
 | 
    addList = []  
 | 
      
 | 
    for index in range( playerManager.GetPlayerCount() ):  
 | 
        player = playerManager.GetPlayerByIndex( index )  
 | 
          
 | 
        tagMapID = GameWorld.GetQueryPlayerMapID( player )  
 | 
          
 | 
        if not tagMapID:  
 | 
            continue  
 | 
          
 | 
        if not DoLogiCheckTeam( curPlayer , player , value , checkTeam ):  
 | 
            continue  
 | 
          
 | 
        if not DoLogiCheckFamily( curPlayer , player , value , checkFamily ):  
 | 
            continue  
 | 
          
 | 
        if not DoLogiCheckCountry( curPlayer , player , value , checkCountry ):  
 | 
            continue  
 | 
          
 | 
        addList.append( player )  
 | 
      
 | 
    return addList  
 | 
  
 | 
## ¼ì²âÊÇ·ñͬ¹ú  
 | 
#  @param curPlayer ±¾Íæ¼Ò  
 | 
#  @param player Ä¿±êÍæ¼Ò  
 | 
#  @param value ×ÔÉíÊôÐÔÖµÊôÐÔÖµ0£¬¾Í¼ì²â×ÔÉíÊôÐÔ£¬·ñÔò×÷Ϊ±È½ÏÖµ  
 | 
#  @param checkCountry ÊÇ·ñ¼ì²â  
 | 
#  @return True or False  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def DoLogiCheckCountry( curPlayer , player , value , checkCountry ):  
 | 
    #²»¼ì²é  
 | 
    if not checkCountry:  
 | 
        return True  
 | 
      
 | 
    if value:  
 | 
        return ( value == player.GetCountry() )  
 | 
      
 | 
    return ( curPlayer.GetCountry() == player.GetCountry() )  
 | 
  
 | 
## ¼ì²âÊÇ·ñͬ¹ú  
 | 
#  @param curPlayer ±¾Íæ¼Ò  
 | 
#  @param player Ä¿±êÍæ¼Ò  
 | 
#  @param value ×ÔÉíÊôÐÔÖµÊôÐÔÖµ0£¬¾Í¼ì²â×ÔÉíÊôÐÔ£¬·ñÔò×÷Ϊ±È½ÏÖµ  
 | 
#  @param checkFamily ÊÇ·ñ¼ì²â  
 | 
#  @return True or False  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def DoLogiCheckFamily( curPlayer , player , value ,  checkFamily ):  
 | 
    #²»¼ì²é  
 | 
    if not checkFamily:  
 | 
        return True  
 | 
      
 | 
    #Ö¸¶¨¼Ò×åID  
 | 
    if value:  
 | 
        return ( value == player.GetFamilyID() )  
 | 
      
 | 
    if not curPlayer.GetFamilyID():  
 | 
        return False  
 | 
      
 | 
    #×Ô¼º¼Ò×å  
 | 
    return ( curPlayer.GetFamilyID() == player.GetFamilyID() )  
 | 
  
 | 
## ¼ì²âÊÇ·ñͬ¹ú  
 | 
#  @param curPlayer ±¾Íæ¼Ò  
 | 
#  @param player Ä¿±êÍæ¼Ò  
 | 
#  @param value ×ÔÉíÊôÐÔÖµÊôÐÔÖµ0£¬¾Í¼ì²â×ÔÉíÊôÐÔ£¬·ñÔò×÷Ϊ±È½ÏÖµ  
 | 
#  @param checkTeam ÊÇ·ñ¼ì²â  
 | 
#  @return True or False  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def DoLogiCheckTeam( curPlayer , player , value , checkTeam ):  
 | 
    #²»¼ì²é  
 | 
    if not checkTeam:  
 | 
        return True  
 | 
      
 | 
    #Ö¸¶¨¶ÓÎé  
 | 
    if value :  
 | 
        return ( value == player.GetTeamID() )  
 | 
      
 | 
    if not curPlayer.GetTeamID():  
 | 
        return False  
 | 
      
 | 
    #×Ô¼º¶ÓÎé  
 | 
    if not value:  
 | 
        return ( curPlayer.GetTeamID() == player.GetTeamID() )  
 |