#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package PyMongoDataServer.GM.Commands.PlayerMirror # # @todo:Íæ¼Ò¾µÏñÊý¾Ý # @author hxp # @date 2025-03-04 # @version 1.0 # # ÏêϸÃèÊö: Íæ¼Ò¾µÏñÊý¾Ý # #------------------------------------------------------------------------------- #"""Version = 2025-03-04 16:30""" #------------------------------------------------------------------------------- from Common import mylog import DBCommon.CommonDefine as CommonDefine from Collections import DataServerPlayerData from LogicProcess import CtrlDBManager from DBCommon import GlobalFunctions import PyGameData import base64 import os def OnDBExec(gmList, dbAnswerList): ## dbÊÕµ½GameServerͬ²½µÄÃüÁî´¦Àí #mylog.debug("db´ò°üÊý¾Ý: %s" % gmList) dbAnswerList.append("dbÊÕµ½GMÃüÁî²âÊԻظ´") return def OnCrossDBExec(gmList, dbAnswerList): ## ¿ç·þdbÊÕµ½×Ó·þͬ²½µÄÃüÁî´¦Àí if not gmList: return value = gmList[0] if value == "a": __addFackPackData(gmList[1:], dbAnswerList) elif value == "d": __delFackPackData(dbAnswerList) return def __addFackPackData(gmList, dbAnswerList): ## Ìí¼Ó¼ÙµÄ´ò°üÊý¾Ý£¬Ò»°ãÓÃÓÚ¿ª·¢²âÊÔ¹¦ÄÜÓà addCount = gmList[0] if len(gmList) > 0 else 1 startID = gmList[1] if len(gmList) > 1 else 1 #fightPower = gmList[2] if len(gmList) > 2 else 0 serverID = gmList[3] if len(gmList) > 3 else 0 packDataTempKey = gmList[4] if len(gmList) > 4 else "" appPath = GlobalFunctions.getAppPath() fullPath = os.path.join(appPath, "TestPackData", packDataTempKey, "PackData.json") if not os.path.isfile(fullPath): dbAnswerList.append("¿ç·þdb/TestPackData²»´æÔÚ¸ÃÄ£°æÎļþ¼Ð:%s" % packDataTempKey) return mylog.debug("´ò°üÊý¾ÝÄ£°åÎļþ:%s" % fullPath) fileObj = open(fullPath, 'rb') content = fileObj.read() fileObj.close() packDataDict = eval(content) packData = packDataDict.get("PackData", "") if not packData: dbAnswerList.append("¿ç·þdb/TestPackData/%sûÓдò°üÊý¾Ý" % (packDataTempKey)) return packDataTeamBuff = base64.b64decode(packData) tempDBPlayer = DataServerPlayerData.tagDBPlayer() tempDBPlayer.readData(packDataTeamBuff) otherDataBuff = packDataTeamBuff[tempDBPlayer.getLength():] userCtrlDB = CtrlDBManager.getCtrlMgr().getCtrlDBByName('UserCtrlDB') FakeName = "FakeName" addOKCount = 0 for index in range(addCount): playerID = fackID = startID + index tempDBPlayer.PlayerID = fackID tempDBPlayer.PlayerName = "%s%s" % (FakeName, fackID) curServerID = serverID if serverID else (playerID % 100 + 1) # 1 ~ 100 ·þ tempDBPlayer.AccID = "fack%s@test@s%s" % (fackID, curServerID) updBuff = tempDBPlayer.getBuffer() + otherDataBuff updPackData = base64.b64encode(updBuff) #mylog.debug("updPackData:%s" % updPackData) userCtrlDB.updPlayerPackData(playerID, updPackData) addOKCount += 1 mylog.debug("Ìí¼Ó¼ÙÍæ¼Ò´ò°üÊý¾ÝÊý:%s" % addOKCount) dbAnswerList.append("¿ç·þdbÌí¼Ó¼ÙÍæ¼Ò´ò°üÊý¾ÝÊý:%s,×Ü:%s" % (addOKCount, len(PyGameData.g_packDataDict))) return def __delFackPackData(dbAnswerList): delCount = 0 for playerID in PyGameData.g_packDataDict.keys(): if playerID > 10000: continue del PyGameData.g_packDataDict[playerID] delCount += 1 mylog.debug("ɾ³ý¼Ù´ò°üÊý¾Ý: delCount:%s" % delCount) dbAnswerList.append("¿ç·þdbɾ³ý¼ÙÍæ¼Ò´ò°üÊý¾ÝÊý:%s,Ê£:%s" % (delCount, len(PyGameData.g_packDataDict))) return