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