#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package GMT_MergeBattleInfo.py # GM»ñµÃ¿ç·þÕ½»ò¹úÍõÕ½ÐÅÏ¢ # # @author wdb # @date 2012-12-28 # @version 1.0 # # @note #--------------------------------------------------------------------- """Version = 2012-12-28 10:00""" #--------------------------------------------------------------------- #µ¼Èë import GMCommon from Common import mylog from Collections import DataServerPlayerData from Collections.CollectionDefine import UCN_DBPlayer #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #¿ç·þÕ½Õ½¶·×´Ì¬ ( Def_NotBegin, #»¹Ã»¿ªÊ¼ Def_IDFirstWin, #µÚÒ»¸öÍæ¼ÒʤÀû(ÓëCampType_JusticeÒ»ÖÂ) Def_IDSecondWin, #µÚ¶þ¸öÍæ¼ÒʤÀû(ÓëCampType_EvilÒ»ÖÂ) Def_Battling, #ÕýÔÚÕ½¶·ÖÐ ) = range(4) #----------------------------¿ç·þÕ½±í------------------------------------ #±íÃû PyTable_MSBattle = "PyMSBattle" #--------------------------------------------------------------------- ## ÊÕµ½gmÃüÁîÖ´ÐÐ # @param gmCmdDict:{'coding': 'gbk', 'competeID': '176', 'key': '2', 'pack_type': 'GMT_MergeBattleInfo'} # @return None def OnExec(gmCmdDict): competeID = GMCommon.ToIntDef(gmCmdDict.get("competeID", "0")) if competeID > 0: return GMCommon.Def_DoQueryUserDB, "" # »Ø¸´ return GMCommon.Def_ParamErr, '' ## ²éѯlogdb·µ»Ø # @param logdb:logdb # @param data:´«ÈëµÄÐÅÏ¢ # @param gmCmdDict:gmÃüÁî×Öµä # @return None def LogDBResponse(logdb, data, gmCmdDict): # »Ø¸´ return GMCommon.Def_ParamErr, '' ## ²éѯuserdb·µ»Ø # @param userdb:userdb # @param data:´«ÈëµÄÐÅÏ¢ # @param gmCmdDict:{'coding': 'gbk', 'competeID': '176', 'key': '2', 'pack_type': 'GMT_MergeBattleInfo'} # @return None def UserDBResponse(userdb, data, gmCmdDict): battleCollect = userdb[PyTable_MSBattle] competeID = GMCommon.ToIntDef(gmCmdDict.get("competeID", "0")) coll = battleCollect.find({"CompeteID":competeID, "Result":{"$in":[Def_IDFirstWin, Def_IDSecondWin]}}) if coll.count() <= 0: return GMCommon.Def_Success, {"competeID":competeID, "PlayerList":[]} # Íæ¼ÒÐÅÏ¢Áбí playerInfoList = [] # ÒѾ­Ìí¼ÓÐÅÏ¢µÄÍæ¼ÒidÁбí playerIDList = [] # ¸ù¾ÝbattleIdµ¹ÐòÅÅÁУ¬´ÓbattleID´óµÄ(¸üеÄ)¶ÔÕ½¿ªÊ¼¼Ç¼£¬ÒѼǼµÄÍæ¼ÒÔò²»´¦Àí coll.sort("BattleID", -1) playerCollect = userdb[UCN_DBPlayer] for battleInfo in coll: battleID = battleInfo.get("BattleID", 0) if battleID <= 0: continue winnerID, loserID = GetBattlePlayerID(battleInfo) # Ìí¼ÓÍæ¼ÒÐÅÏ¢£¬ÒÑÌí¼ÓµÄÍæ¼ÒÔò²»´¦Àí AddPlayerInfo(playerCollect, winnerID, playerInfoList, playerIDList, battleID, 1) AddPlayerInfo(playerCollect, loserID, playerInfoList, playerIDList, battleID, 0) resultMsg = {"competeID":competeID, "PlayerList":playerInfoList} # ÐÅÏ¢³¤¶È²»´óÓëword if len("%s"%resultMsg) > pow(2, 14): return GMCommon.Def_MaxLimit, "" return GMCommon.Def_Success, resultMsg ## »ñµÃʤ¸ºµÄÍæ¼Òid # @param userdb:userdb # @param competeID:±ÈÈüÀàÐÍid # @return None def GetBattlePlayerID(battleInfo): playerID1 = battleInfo.get("PlayerID1", 0) playerID2 = battleInfo.get("PlayerID2", 0) result = battleInfo.get("Result") if result == Def_IDFirstWin: return playerID1, playerID2 elif result == Def_IDSecondWin: return playerID2, playerID1 return 0, 0 ## Ìí¼ÓÍæ¼ÒÐÅÏ¢ # @param playerCollect:dbÍæ¼Ò±í # @param playerID:Íæ¼Òid # @param playerInfoList:Íæ¼ÒÐÅÏ¢Áбí # @param playerIDList:ÒÑÌí¼ÓÍæ¼ÒIDÁбí # @param battleID:¶ÔÕ½id # @param result:¶ÔÕ½½á¹û # @return None def AddPlayerInfo(playerColl, playerID, playerInfoList, playerIDList, battleID, result): if playerID <= 0: return # Íæ¼ÒÐÅÏ¢ÒÑÌí¼Ó if playerID in playerIDList: return dbPlayer = DataServerPlayerData.tagDBPlayer() dbPlayer.IsDeleted = 0 loadOK = dbPlayer.adoLoadCEx(playerColl, {'PlayerID':playerID, 'IsDeleted':dbPlayer.IsDeleted}) if not loadOK: return # [Õ˺Å, Íæ¼ÒÃû, Íæ¼ÒµÈ¼¶, Ö°Òµ, vipµÈ¼¶, Õ½¶·Á¦, ÍþÍû, Õ½³¡id, ʤ¸º(0¸º£¬ 1ʤ)] playerInfo = [dbPlayer.AccID, playerID, dbPlayer.PlayerName, dbPlayer.LV, dbPlayer.Job, dbPlayer.VIPLv, dbPlayer.FightPower, dbPlayer.ExAttr2, battleID, result] # Ìí¼ÓÍæ¼ÒÐÅÏ¢ playerInfoList.append(playerInfo) # ½«Íæ¼ÒidÌí¼Óµ½ÒѼǼÁбíÖÐ playerIDList.append(playerID) return