| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #---------------------------------------------------------------------  | 
| #  | 
| #---------------------------------------------------------------------  | 
| ##@package PlayerQuery  | 
| # GMÃüÁîµ÷ÓÃÆ÷  | 
| #  | 
| # @author eggxp  | 
| # @date 2010-4-28  | 
| # @version 1.3  | 
| #  | 
| # @change: "2010-09-09 16:40" panwei ÖضÁ½Å±¾ÐÞ¸Ä  | 
| # @change: "2012-02-24 15:30" panwei PsycoÓÅ»¯  | 
| # @change: "2012-05-16 15:00" jiang C++Ð޸ĽӿÚGameServer_QueryPlayerByIDºÍGameServer_QueryPlayerResult  | 
| #---------------------------------------------------------------------  | 
| """Version = 2012-05-16 15:00"""  | 
| #---------------------------------------------------------------------  | 
| import IPY_GameWorld  | 
| import GameWorld  | 
| import RemoteQuery  | 
| import ChConfig  | 
| #---------------------------------------------------------------------  | 
| #µ¼Èë  | 
| GameWorld.ImportAll("Script\\Player\\" , "RemoteQuery")  | 
| GameWorld.ImportAll("Script\\Player\\" , "")  | 
| #---------------------------------------------------------------------  | 
| ## ÖØÐ¶ÁÈ¡ËùÓÐÎïÆ·  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def ReloadQuery(tick):  | 
|     scriptPath = ChConfig.GetAppPath() + "Script\\Player\\RemoteQuery"  | 
|     GameWorld.ReloadScript(scriptPath, "RemoteQuery")  | 
|       | 
|     scriptPath = ChConfig.GetAppPath() + "Script\\Player"  | 
|     GameWorld.ReloadScript(scriptPath, "")  | 
|     return  | 
| #---------------------------------------------------------------------  | 
|   | 
| #//////////////////////////////////////////////////////////////  | 
| #//06 02 ²éѯµØÍ¼Íæ¼Ò¾ßÌåλÖÃ#tagMQueryPlayerPos  | 
| #tagMQueryPlayerPos       *   GettagMQueryPlayerPos();  | 
| #  | 
| #class   IPY_MQueryPlayerPos  | 
| #{  | 
| #public:  | 
| #  | 
| #    int      GetSrcPlayerID();  | 
| #    //²éѯÀàÐÍ: ¸ù¾ÝÍæ¼ÒID/¼Ò×åID/æô³µID²éÕÒ  | 
| #    int      GetQueryType();  | 
| #  | 
| #    int      GetQueryID();  | 
| #  | 
| #    int      GetCallNameLen();  | 
| #    //size = CallNameLen  | 
| #    char *      GetCallName();  | 
| #  | 
| #    int      GetCmdLen();  | 
| #    //size = CmdLen  | 
| #    char *      GetCmd();  | 
| #};  | 
| ## 06 02 ²éѯµØÍ¼Íæ¼Ò¾ßÌåλÖà  | 
| #  @param index Íæ¼ÒË÷Òý  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def GameServer_QueryPlayer(index, tick):  | 
|     GameWorld.GetPsycoFunc(__Func_GameServer_QueryPlayer)(index, tick)  | 
|     return  | 
|   | 
| ## 06 02 ²éѯµØÍ¼Íæ¼Ò¾ßÌåλÖà  | 
| #  @param index Íæ¼ÒË÷Òý  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def __Func_GameServer_QueryPlayer(index, tick):  | 
|     sendPack = IPY_GameWorld.IPY_MQueryPlayerPos()  | 
|     srcPlayerID = sendPack.GetSrcPlayerID()  | 
|     query_ID = sendPack.GetQueryID()  | 
|     query_Type = sendPack.GetQueryType()  | 
|     packCallName = sendPack.GetCallName()  | 
|     packCMDList = sendPack.GetCmd()  | 
|       | 
|     #³¢ÊÔת»»×Ö·û´® -> '[]' -> []  | 
|     try:  | 
|         packCMDList = eval(packCMDList)  | 
|     except Exception:  | 
|         pass  | 
|       | 
|     callFunc = GameWorld.GetExecFunc(RemoteQuery, "GY_Query_%s.%s"%(packCallName, "DoLogic"))  | 
|       | 
|     if not callFunc:  | 
|         GameWorld.Log('###ÎÞ·¨²éÕÒGMÃüÁî = %s'%(packCallName))  | 
|         return  | 
|       | 
|     result = callFunc(query_Type , query_ID , packCMDList , tick)  | 
|     #ÔÚÏßGMÃüÁîÌí¼Ó»Ø¸´  | 
|     if srcPlayerID != 0:  | 
|         sendMsg = '%s'%result  | 
|         GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(srcPlayerID, query_Type,   | 
|                                           query_ID, packCallName, sendMsg, len(sendMsg))  | 
|       | 
|     return  | 
|   | 
| #//////////////////////////////////////////////////////////////  | 
| #//06 03 ²éÑ¯Íæ¼ÒλÖýá¹û#tagMQueryPlayerPosResult  | 
| #tagMQueryPlayerPosResult       *   GettagMQueryPlayerPosResult();  | 
| #  | 
| #class   IPY_MQueryPlayerPosResult  | 
| #{  | 
| #public:  | 
| #  | 
| #    int      GetQueryType();  | 
| #  | 
| #    int      GetQueryID();  | 
| #  | 
| #    int      GetCallNameLen();  | 
| #    //size = CallNameLen  | 
| #    char *      GetCallName();  | 
| #  | 
| #    int      GetResultLen();  | 
| #    //size = ResultLen  | 
| #    char *      GetResult();  | 
| #};  | 
| ## 06 03 ²éÑ¯Íæ¼ÒλÖýá¹û  | 
| #  @param index Íæ¼ÒË÷Òý  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def GameServer_QueryPlayerResult(index, tick):  | 
|     GameWorld.GetPsycoFunc(__Func_GameServer_QueryPlayerResult)(index, tick)  | 
|     return  | 
|   | 
| ## 06 03 ²éÑ¯Íæ¼ÒλÖýá¹û  | 
| #  @param index Íæ¼ÒË÷Òý  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def __Func_GameServer_QueryPlayerResult(index, tick):  | 
|     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)  | 
|     sendPack = IPY_GameWorld.IPY_MQueryPlayerPosResult()  | 
|     packCallName = sendPack.GetCallName()  | 
|     packResult = sendPack.GetResult()  | 
|       | 
|     #bug: 10/14 Íæ¼ÒÒ»·¢ÇëÇó¾ÍÇл»µØÍ¼, Õâ¸öʱºòÎÞ·¨²éÑ¯Íæ¼Ò, µ¼Ö±¨´í  | 
|     if not curPlayer:  | 
|         GameWorld.Log('###QueryPlayerResult ÎÞ·¨²éÕÒÍæ¼Ò, »ØÓ¦Ê§°Ü = %s , %s'%( packCallName , packResult ))  | 
|         return  | 
|       | 
|     #sendPack.GetQueryType()  | 
|     #sendPack.GetQueryID()  | 
|       | 
|     callFunc = GameWorld.GetExecFunc(RemoteQuery, "GY_Query_%s.%s"%(packCallName, "DoResult"))  | 
|       | 
|     if not callFunc:  | 
|         GameWorld.Log('###ÎÞ·¨²éÕÒGMÃüÁî = %s , DoResult Error'%(packCallName))  | 
|         return  | 
|       | 
|     callFunc(curPlayer , packCallName , packResult , tick)  | 
|       | 
|     #GameWorld.Log("GameServer_QueryPlayerResult -> %s"%packResult)  | 
|       | 
| #    GameWorld.Log("Íæ¼ÒID=%s,ËùÔÚµØÍ¼=%s,×ø±ê(%s,%s)"%(sendPack.GetPlayerID(),sendPack.GetMapID(),  | 
| #                                                               sendPack.GetPosX() ,sendPack.GetPosY()) , curPlayer.GetPlayerID())  | 
|     return  |