1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/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