From fdebf36f0d9201c6a6949a08cdfeebb718c25ce2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 23 五月 2025 19:35:53 +0800
Subject: [PATCH] 16 卡牌服务端(聊天、广播、通用记录、查看玩家;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py |   34 ++++++++++++++++++++++++++++++----
 1 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
index 95d7abf..a500a86 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/LogicProcess/UserCtrlDB.py
@@ -400,10 +400,27 @@
             PyGameData.g_UserCtrlDBFirstInit = True
             self.__PlayerBackupSave()
             CheckGameVersion()
-
-            #后续也要增加公共数据保存如家族等,考虑保存失败可以直接关闭地图
-
+            self.loadDBPlayerIDMap()
+            
         return
+    
+    def loadDBPlayerIDMap(self):
+        ## 加载本服玩家映射关系
+        col = self.db[UCN_DBPlayer]
+        resultSet = col.find({}, {"PlayerID":1, "AccID":1, "_id":0})
+        if resultSet and resultSet.count():
+            for resultDict in resultSet:
+                PyGameData.g_dbPlayerIDMap[resultDict["PlayerID"]] = resultDict["AccID"]
+        GameWorld.Log("启动服务器加载DBPlayer玩家账号ID对应关系! %s, %s" % (len(PyGameData.g_dbPlayerIDMap), PyGameData.g_dbPlayerIDMap))
+        return
+    
+    def findDBPlayer(self, playerID):
+        col = self.db[UCN_DBPlayer]
+        dbPlayer = DataServerPlayerData.tagDBPlayer()
+        dbPlayer.IsDeleted = 0
+        if not dbPlayer.adoLoadCEx(col, {"PlayerID":playerID}):
+            return
+        return dbPlayer
     
     def requestLogicProcess(self, pack):
         db = self.db
@@ -1662,7 +1679,7 @@
 
             mylog.debug('RevoverBillProcess success...%s'%orderID)
         except:
-            mylog.error("RevoverBillProcess error %s"%orderID)
+            mylog.error("RevoverBillProcess error %s"%traceback.format_exc())
     
     def SavePlayerMapServerData(self, db, saveData):
         playerRec = DataServerPlayerData.tagDBPlayer()
@@ -2413,6 +2430,9 @@
             return 0, disDataBaseError, createPlayer.AccID, '' 
 
         mylog.debug('insert role ok!accid = %s, PlayerName = %s'%(createPlayer.AccID, createPlayer.PlayerName))
+        PyGameData.g_dbPlayerIDMap[newPlayerID] = createPlayer.AccID
+        mylog.debug('PyGameData.g_dbPlayerIDMap = %s, %s'%(len(PyGameData.g_dbPlayerIDMap), PyGameData.g_dbPlayerIDMap))
+        
         #构造其他角色初始数据
         itemData = ''
         itemData = CommFunc.WriteDWORD(itemData, 0)
@@ -3409,6 +3429,11 @@
         data += DBFamilyAction.adoQueryAll(collection)
         mylog.info("tagDBFamilyAction ok")
         
+        collection = db[UCN_DBGameRec]
+        DBGameRec = DataServerPlayerData.tagDBGameRec()
+        data += DBGameRec.adoQueryAll(collection)
+        mylog.info("tagDBGameRec ok")
+        
         mylog.info('readGameWorldData len:%s' % len(data))
         return data
     
@@ -3430,6 +3455,7 @@
             gameDataReadPos = self.savegameServerWorldData(saveData, gameDataReadPos, UCN_DBFamily, DataServerPlayerData.tagDBFamily, db)
             gameDataReadPos = self.savegameServerWorldData(saveData, gameDataReadPos, UCN_DBFamilyMem, DataServerPlayerData.tagDBFamilyMem, db)
             gameDataReadPos = self.savegameServerWorldData(saveData, gameDataReadPos, UCN_DBFamilyAction, DataServerPlayerData.tagDBFamilyAction, db)
+            gameDataReadPos = self.savegameServerWorldData(saveData, gameDataReadPos, UCN_DBGameRec, DataServerPlayerData.tagDBGameRec, db)
             
             mylog.info('saveGameWorldData ok!')
             

--
Gitblit v1.8.0