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