#!/usr/bin/python # -*- coding: GBK -*- ##@package GMT_CTG # GMÃüÁîCTG # # @author whx # @date 2012-08-27 13:59 # @version 1.0 # # ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ # Ä£¿éÏêϸ˵ #--------------------------------------------------------------------- #µ¼Èë import GMCommon import ChConfig import GameWorld import PyGameData #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- """Version = 2012-08-27 13:59""" #--------------------------------------------------------------------- ## Ö´ÐÐÂß¼­ # @param curPlayer µ±Ç°Íæ¼Ò # @param gmCmdDict: ÃüÁî×Öµä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(orderId, gmCmdDict): queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '') playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '') value = gmCmdDict.get('value', '') appID = gmCmdDict.get('appID', '') isAddBourseMoney = GameWorld.ToIntDef(gmCmdDict.get('isAddBourseMoney', ''), 0) tagPlayer = None playerManager = GameWorld.GetPlayerManager() if queryType == GMCommon.Def_GMKey_PlayerAccID: queryType = ChConfig.queryType_sqtPlayerByAccID tagPlayer = playerManager.FindPlayerByAccID(str(playerFind)) elif queryType == GMCommon.Def_GMKey_PlayerName: queryType = ChConfig.queryType_sqtPlayerByName tagPlayer = playerManager.FindPlayerByName(str(playerFind)) else: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr) return if not tagPlayer: # Íæ¼Ò²»ÔÚÏߣ¬ÏȼǼ£¬µÈÍæ¼ÒÉÏÏߺó´¦Àí key = (queryType, playerFind) ctgInfoList = PyGameData.g_ctgOfflinePlayerInfo.get(key, []) ctgInfoList.append(gmCmdDict) PyGameData.g_ctgOfflinePlayerInfo[key] = ctgInfoList GameWorld.Log("ÀëÏßCTG: g_ctgOfflinePlayerInfo=%s" % str(PyGameData.g_ctgOfflinePlayerInfo)) GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success) return GMCommon.GMTool_MapServer_Query(queryType, orderId, playerFind, gmCmdDict, 'GMTCTG', [orderId, value, appID, isAddBourseMoney, True], False) return def OnPlayerLogin(curPlayer): ctgList = [] nameKey = (ChConfig.queryType_sqtPlayerByName, curPlayer.GetName()) if nameKey in PyGameData.g_ctgOfflinePlayerInfo: ctgList += PyGameData.g_ctgOfflinePlayerInfo.pop(nameKey) accIDKey = (ChConfig.queryType_sqtPlayerByAccID, curPlayer.GetAccID()) if accIDKey in PyGameData.g_ctgOfflinePlayerInfo: ctgList += PyGameData.g_ctgOfflinePlayerInfo.pop(accIDKey) if not ctgList: return tagMapID = curPlayer.GetRealMapID() GameWorld.Log("ÀëÏßÍæ¼ÒÉÏÏßCTG: tagMapID=%s, %s" % (tagMapID, ctgList), curPlayer.GetPlayerID()) if not tagMapID: return playerManager = GameWorld.GetPlayerManager() for gmCmdDict in ctgList: orderId = gmCmdDict.get('orderId', '') value = gmCmdDict.get('value', '') appID = gmCmdDict.get('appID', '') isAddBourseMoney = GameWorld.ToIntDef(gmCmdDict.get('isAddBourseMoney', ''), 0) cmdStr = str([orderId, value, appID, isAddBourseMoney, False]) playerManager.MapServer_QueryPlayer(0, 0, curPlayer.GetPlayerID(), tagMapID, 'GMTCTG', cmdStr, len(cmdStr), curPlayer.GetRouteServerIndex()) return