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