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